前几天公司培训编码规范:
第n条:
i++; j++; // prohibit
should be:
i++;
j++; // ok
第m条:
if( aBool = bBool ) // prohibit
should be:
if( (aBool = bBool) == true ) // ok
且不说 if( (aBool = bBool) == true ) 这样的代码是如何混进规范的,单是这两条规范之后蕴藏的自相矛盾的原则,就表明这是不成熟的规范:
第n条背后的思想是每行一条语句,只做一件事,那么为何第m条中aBool = bBool,if(aBool)这两件截然不同的事要放在一行中呢?
事实上宁可允许 i++; j++出现在一行中,也不能允许if( (aBool = bBool) == true )出现在一行中,至少前者做的还是类似的事,事实上前者我觉得可读性最好的形式是逗号表达式:
i++, j++; //当然,Java里没有逗号表达式
编码规范肇始于没有智能编辑器的时代,掺杂了很多格式方面的要求,现在各种自动化代码美化功能,可以眨眼间将杂乱无章的代码整理的一帆风顺,将一种风格转换为另一种风格,规范中对格式的规定实在应该弱化,况且Java已经有了官方Code Convention,有了<<The Elements of Java Style>>,企业如果要制定自己的规范,更应注重代码逻辑方面的规范,应多多参考<<Effective Java>>,<<Practical Javas>>, <<Java pitfalls>>, <<More java pitfalls>>, <<Java Rules>>, <<More Java Rules>>,<<Java Bug 模式>>等