`

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

阅读更多

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

 

看下面的一段代码:

 

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提供了两...

    将字符串传递到 DLL 过程

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

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

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

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

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

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

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

    在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语句中。

    股票代码(可嵌入到网页中)

    股票代码查询功能是许多金融网站和应用中的常见模块,它允许用户通过输入股票代码快速获取相关的股票信息。在网页中实现这样一个功能,涉及到的技术主要包括HTML、JavaScript、Ajax以及可能的API调用。以下是对这个...

Global site tag (gtag.js) - Google Analytics