刚刚进入职场时新人们接受培训时总会看到关于代码规范方面的要求,那时可能不当一回事,后面经历多了就明白这其中道理。
按规范进行编码,可以提高代码可读性,项目可维护性等,可以为日后节省很多时间。
但是最近还是碰到了一例反面教材,浪费了不少时间。
由于项目中的一个问题,工程师们经过分析,找到一个曾经有过修改类似问题的方案,根据描述我们认为可以解决问题,但是看了修改内容后觉得这是扯淡。
代码提交者利用了空指针的副作用来修正bug,大概为这样:
public object foo(){
...
String[] a = getString(); // 从别的模块获取一个字符串数组
//if( a != null){
if(a[0] == FEATURE){
//do something
}
//}
obj = process();
return obj;
}
作者把对a的空指针判断给注释了,这让人很莫名其妙,在android应用中这不是会造成FC吗?于是这个方案就被忽略了。
后面经过验证发现加入这个修改后问题解决了,原来是利用了空指针副作用,当a为null时,如果调用foo的函数捕捉了null exception,则后面的process()就不会走,就不会有问题。
但是前提是调用者捕捉了异常,如果没有捕捉,那么真的会发生FC了。
这种代码可读性差,维护性差,甚至连个注释都没有!碰到这样的程序员,你是不是要疯了?
修改后的代码:
public object foo(){
...
String[] a = getString(); // 从别的模块获取一个字符串数组
if( a != null){
if(a[0] == FEATURE){
//do something
}
} else {
return null;
}
obj = process();
return obj;
}