我正试图遏制自称“高级程序员”的一些坏习惯。他坚持写下这样的块:
if (expression) {}
else {
statements
}
或者他通常将它写在经典的ASP VBScript中:
If expression Then
Else
statements
End If
这个表达可能很容易被否定:
if (x == 0) {}
else {
statements
}
除了编码风格的清晰度之外,我可以提供哪些其他理由以便我认为以下是首选?
if (x != 0) {
statements
}
甚至更一般的情况(再次在VBScript中):
If Not expression Then
statements
End If
答案 0 :(得分:3)
我支持你的意见(我同意BTW)的原因是:
我从未遇到过你的同事坚持使用的编码风格/形式。
答案 1 :(得分:1)
我已经尝试过两种方式。代码完成中的McConnell说,应该始终包括then
和else
,以证明一个人已经考虑过这两个条件,即使操作无效(NOP)。看起来你的朋友正在这样做。
我发现这种做法在字段中没有添加任何值,因为单元测试处理这个或者没有必要。当然是YMMV。
如果你真的想要烧他的培根,计算他花费多少时间编写空语句,乘以1.5(测试),然后乘以他的小时费率。向他发一笔账单。
顺便说一句,我将关闭的花括号移到else
行:
if (expression) {
} else {
statements
}
原因是它很容易(或容易意外地)在块之外添加一些语句。
出于这个原因,我厌恶单行(裸)语句,形式为
if (expression)
statement
因为它可以变得非常快(和错误)
if (expression)
statement1
statement2
statement2
将始终运行,即使它看起来应该受expression
的约束。养成总是使用括号的习惯会杀死这个绊脚石。