自从我第一次写
if ($a = 5) {
# do something with $a, e.g.
print "$a";
}
并经历了正常的困惑期
直到我意识到,我给$a分配了5,而不是执行比较。
所以我决定把上面的条件写成
if (5 == $a)
换言之:
如果您忘记添加第二个"=“符号,总是将常量值放在比较运算符的左侧,从而导致编译错误。
我倾向于称之为防御性编码,并且倾向于相信它是防御性编程的近亲,不是在算法规模上,而是按关键字关键字。
您开发了哪些防御性编码实践?
一周后:
一个大的“谢谢”的所有谁回答,或可能增加另一个答案在未来。
不幸的是(或者说幸运的是!)没有一个正确的答案。为此,我的问题是更广泛,更多地征求意见或经验,而不是事实。
发布于 2008-11-06 06:43:00
请始终使用牙套:
if(boolean)
oneliner();
nextLineOfCode();
与以下情况不同:
if(boolean)
{
oneliner();
}
nextLineOfCode();
如果oneliner()是一个#定义的函数,并且没有定义它,那么您的下一行代码就会突然受到if()的约束。同样的情况也适用于for循环等。使用大括号,那么下一段代码从不会无意中以if/for等为条件。
发布于 2008-11-06 06:47:06
我使用的前3种防御性编码实践如下
对于代码的质量,没有比支持您的好的单元测试更好的防御方法了。
发布于 2008-11-06 06:25:03
这是一个简单而明显的问题,但我从来没有在代码中重复过两次相同的字符串常量,因为我知道如果我重复了,我就会拼写错误之一:)使用常量,伙计!
https://stackoverflow.com/questions/267763
复制相似问题