自从我第一次写

if ($a = 5) {
   #  do something with $a, e.g.
   print "$a";
}


并经历了正常的令人费解的会议


为什么结果总是正确的
为什么$ a总是5


直到我意识到,我给$ a分配了5,而不是进行比较。

所以我决定将上述条件写为

 if (5 == $a)


换一种说法:

如果您忘记添加第二个“ =”符号,则始终将常量值放在比较运算符的左侧,从而导致编译错误。

我倾向于称这种防御性编码,并倾向于认为它是防御性编程的表亲,而不是在算法规模上,而是在关键字之间。

您开发了哪些防御性编码实践?



一周后:

非常感谢所有回答或将来可能再添加另一个答案的人。

不幸的是(或者幸运的是!)没有一个正确的答案。为此,我的问题是广泛的,要求更多的观点或经验教训,而不是事实。

最佳答案

始终使用大括号:

if(boolean)
    oneliner();
nextLineOfCode();


与以下内容不同:

if(boolean)
{
    oneliner();
}
nextLineOfCode();


如果oneliner()是#defined函数,并且未定义,那么您的下一行代码将突然受到if()的约束。同样的情况也适用于for循环等。使用花括号,则下一段代码就永远不会无意地成为if / for等条件的条件。

关于coding-style - 防御性编码做法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/267763/

10-13 05:59