代码坏味道之一(代码中到处嵌入字符串)
看下面的一段代码:
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-