写代码的技巧
平时在写循环语句时,总是习惯性地把变量的自增都放在了for(表达式1;表达式2;表达式3)的"表达式3"语句执行,今天在调试一段源代码的时候发现,这个习惯不经意间会导致代码的健壮性受到影响,如下:
(1)平时习惯性的写法:
?
?
for(int i=0,j=0;i<currentNames.length;i++,j++) {
Name name = currentNames[i];
if(!name.isMarkedForDeleting()) {
newNames[j] = name;
}
}
这样书写时,因为变量j在每一次的循环中都会自增,而不是根据if条件是否得以执行而改变值!因此存在一个隐患,有可能导致j变量值超出了newNames的范围,从而导致IndexOutOfBoundsException异常;而如果谨慎一点写成如下的格式,就避免了不必要的错误。
(2)正确写法:
?
for(int i=0,j=0;i<currentNames.length;i++) {
Name name = currentNames[i];
if(!name.isMarkedForDeleting()) {
newNames[j++] = name;
}
}
j的值只会根据条件执行而得到改变,代码健壮性会更好一些。
备注,留作复习。
?
?