`

代码坏味道之一(代码中到处嵌入字符串)

阅读更多

代码坏味道之一(代码中到处嵌入字符串)

 

看下面的一段代码:

 

String type = form.getString("type","XZ");
//.......
if("XZ".equals(type)){
	ActionContext.setRequestAttribute("applyTypeName","****");
}else if("XG".equals(type)){
	ActionContext.setRequestAttribute("applyTypeName","*****");
}else if("SQ".equals(type)){
	ActionContext.setRequestAttribute("applyTypeName","*****");
}else{
	ActionContext.setRequestAttribute("applyTypeName",type);
}

 

别人来看着这段代码,很难理解他是什么意图。

在代码中到处嵌入字符串是很不好的习惯,一个原因是,如果字符串所代表的意义不清晰的话,将很难理解这样的的代码。另外,当字符串出现多次在代码中时,如果你不得不修改它的话,你将要改变另外一处的代码,这样工作量就大了,如果漏改了一些地方,将在代码中引入缺陷。

 

最起码是要定义一个字符串常量来替代字符串。这样才比较好理解

/** 申请单类型:权限申请 */
private final String APPLY_TYPE_SQ = "SQ";
/** 申请单类型:新增方案 */
private final String APPLY_TYPE_XZ = "XZ";
/** 申请单类型:修改 方案 */
private final String APPLY_TYPE_XG = "XG";

 

如果这些字符串常量需要别的地方应用,就将它移到一个常量定义文件中(一般在Constants类/接口中)。

 

这样使代码的意图更加明确了,如果常量名能很好的表达意图的话就更好了。

 

 

 

-EOF-

 

 

 

分享到:
评论
2 楼 风花雪月饼 2010-11-16  
看不出来楼主如此定义有何有。。。

跟原来的代码有差别么?
1 楼 tuti 2010-11-15  
<div class="quote_title">tivan 写道</div>
<div class="quote_div">
<pre name="code" class="java">/** 申请单类型:权限申请 */
private final String APPLY_TYPE_SQ = "SQ";
/** 申请单类型:新增方案 */
private final String APPLY_TYPE_XZ = "XZ";
/** 申请单类型:修改 方案 */
private final String APPLY_TYPE_XG = "XG";</pre>
<p> </p>
如果常量名能很好的表达意图的话就更好了。</div>
<p> </p>
<p>   说都说到这里了,那你就再努力一把,把常量名起起好呗。<br></p>
<p>   勿以恶小而为之 勿以善小而不为</p>

相关推荐

    MATLAB 将数值嵌入字符串示例

    在MATLAB编程中,将数值嵌入字符串是一项常见的任务,特别是在数据分析、报告生成或自定义消息输出时。本文将深入探讨如何在MATLAB中实现这一功能,并通过具体示例`ex2_60.m`来解释相关知识。 首先,MATLAB提供了两...

    c#中 base64字符串与普通字符串互转

    在C#编程语言中,Base64是一种用于将二进制数据编码为ASCII字符串的机制,以便在不支持二进制传输的系统(如电子邮件)中传输。Base64编码可以将任何二进制数据转换为可打印的字符,包括图片、文件和其他非文本数据...

    向图片中写入字符串并显示图片(C#)

    ### 向图片中写入字符串并显示图片(C#) 在C#编程中,有时我们需要将文本添加到图像中,这可能是因为要在图像上添加注释、水印或任何其他文字信息。本文将详细介绍如何实现这一功能,包括创建新图像、在图像上绘制...

    deline一个ES6字符串标记能够删除多行字符串中多余的换行

    在JavaScript中,可以使用模板字符串(模板字面量)来创建多行字符串,它通过反引号(`)来包围字符串,并允许在其中嵌入表达式和换行。然而,当从外部源(如文件或数据库)获取多行文本时,可能会包含不必要的换行...

    将字符串传递到 DLL 过程

    BSTR是微软的Automation或OLE自动化框架中定义的一种Unicode字符串格式,它包含一个头信息,存储字符串的长度,以及实际的字符串内容。由于BSTR是Unicode的,每个字符占用两个字节,这使得它能处理各种语言的字符集...

    在Vuejs中使用带标记的模板字符串

    模板字符串,又称模板字面量,是ES6引入的一种新型字符串表示方式,它允许我们在字符串中嵌入表达式并使用反引号(`)包裹。在Vue.js中,我们可以利用这种特性来增强模板的灵活性和可读性。 1. **模板字符串基础** ...

    javaScript中的字符串操作

    4. **获取字符串中的某个字符**:可以使用`.charAt()`方法来获取字符串中特定位置的字符,例如:`myStr.charAt(0)` 将返回字符串的第一个字符。 #### 三、字符串的拼接 在JavaScript中,字符串的拼接非常简单,...

    在C语言函数中调用汇编语言程序实现字符串的拷贝

    在这个主题中,我们将探讨如何在C语言函数中嵌入ARM汇编代码,以实现字符串的拷贝。 首先,我们要了解ARM汇编的基本语法。ARM汇编是一种低级编程语言,用于编写针对ARM架构处理器的指令。在我们的例子中,`strCopy....

    模板字符串 - JavaScript _ MDN.pdf

    模板字符串是JavaScript中的一个重要功能,它允许开发者在字符串中嵌入表达式。模板字符串使用反引号(``)而非传统的单引号('')或双引号(" ")来定义。这种语法的引入,为字符串的拼接提供了更为直观和简洁的方式。 ...

    vc++ 字符串隐藏源码

    1. **字符串隐写术**:在源码中隐藏字符串的一种方法是使用隐写术,即在代码中嵌入信息而不被轻易察觉。例如,可以将敏感字符串转换为十六进制或Base64编码,然后将其作为常量字符串插入到代码中。解码过程则在运行...

    php 随机生成10位字符代码

    在这段代码中,最后使用`echo`语句调用`randStr(10)`来输出一个10位的随机字符串。` `标签用于换行,以便在浏览器中显示清晰的输出结果。 从这段代码中,我们可以提炼出几个关键知识点: 1. `rand()`函数:在...

    JavaScript中的字符串操作 .txt

    8. **模板字符串**:ES6引入了模板字符串,允许在字符串中嵌入变量。例如: ```javascript var name = "Alice"; var message = `Hello, ${name}!`; console.log(message); // 输出 "Hello, Alice!" ``` 9. **...

    MCGS_嵌入版_ModBusRTU标准化字符串.rar

    昆仑通态MCGS嵌入式软件自带莫迪康ModBus RTU有点小问题,软件帮助里写明[4区]输出寄存器写入功能码有,06: 预置单个寄存器,16: 预置多个寄存器,实际调试没有06,安装本驱动后,可以使用功能码06.

    Groovy语法系列教程之字符串(三).pdf

    字符串插值允许在字符串中嵌入Groovy表达式,这些表达式在字符串被处理时会被计算并替换为相应的值。插值表达式由${}包围,也可以使用$前缀直接插入表达式。 7. **内插闭包表达式的特殊情况** 在特定情况下,...

    XSL中进行字符串替换

    在XSL中进行字符串替换是一项常见且实用的功能。本文将详细介绍如何通过XSLT实现字符串的替换,并重点探讨两种常用的方法:使用`ms:script`(仅限于Microsoft的XML解析器)以及纯XSL模板。 ### XSL中的字符串替换 ...

    Python中的字符串模运算符与format函数

    在Python编程中,字符串的格式化是一个基本且重要的知识点,它涉及到将数据以特定的格式嵌入到字符串中,用于输出或存储等操作。Python提供了多种字符串格式化的方法,其中最传统且应用广泛的是使用模运算符(%)...

    Delphi字符串、变量、指针的一个实例

    本文将深入探讨Delphi中的字符串、变量和指针,通过一个实例来阐述它们在实际编程中的应用。 首先,让我们了解Delphi中的字符串。在Delphi中,字符串是Unicode字符的动态数组,由系统自动管理内存。每个字符串都有...

    python 字符串.zip

    f-string,也称为格式化字符串字面值,是Python 3.6引入的一种新特性,用于方便地在字符串中嵌入表达式。它的主要优点是简洁且易于理解。在f-string中,我们用花括号{}包围要插入的表达式,并在前面加上字母f或F。...

    pb将带分隔符字符串转为SQL IN语句字符串

    POWERBLUIDE11 将带有分隔符的字符串,转为SQL IN语句中需要的格式字符串;如:ABCD1234,ABCD5678 转换为 'ABCD1234','ABCD5678'然后可放直接放入IN语句中。

    IBatisNet数据连接字符串加密

    IBatisNet 数据连接字符串加密是将配置文件中的数据连接字符串加密处理过程。该过程的目的是为了保护数据连接字符串的安全,因为直接将连接字符串放在配置文件中是不安全的。 在 IBatisNet 配置文件 properties....

Global site tag (gtag.js) - Google Analytics