论坛首页 入门技术论坛

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

浏览 1628 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-11-15  

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

 

看下面的一段代码:

 

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-

 

 

 

   发表时间:2010-11-15  
tivan 写道
/** 申请单类型:权限申请 */
private final String APPLY_TYPE_SQ = "SQ";
/** 申请单类型:新增方案 */
private final String APPLY_TYPE_XZ = "XZ";
/** 申请单类型:修改 方案 */
private final String APPLY_TYPE_XG = "XG";

 

如果常量名能很好的表达意图的话就更好了。

 

   说都说到这里了,那你就再努力一把,把常量名起起好呗。

   勿以恶小而为之 勿以善小而不为

0 请登录后投票
   发表时间:2010-11-16  
看不出来楼主如此定义有何有。。。

跟原来的代码有差别么?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics