首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防御编码实践

防御编码实践
EN

Stack Overflow用户
提问于 2008-11-06 06:18:54
回答 13查看 4K关注 0票数 15

自从我第一次写

代码语言:javascript
运行
复制
if ($a = 5) {
   #  do something with $a, e.g.
   print "$a";
}

并经历了正常的困惑期

  • 为什么结果总是真
  • 为什么$a总是5

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

所以我决定把上面的条件写成

代码语言:javascript
运行
复制
 if (5 == $a)

换言之:

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

我倾向于称之为防御性编码,并且倾向于相信它是防御性编程的近亲,不是在算法规模上,而是按关键字关键字。

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

一周后:

一个大的“谢谢”的所有谁回答,或可能增加另一个答案在未来。

不幸的是(或者说幸运的是!)没有一个正确的答案。为此,我的问题是更广泛,更多地征求意见或经验,而不是事实。

EN

回答 13

Stack Overflow用户

发布于 2008-11-06 06:43:00

请始终使用牙套:

代码语言:javascript
运行
复制
if(boolean)
    oneliner();
nextLineOfCode();

与以下情况不同:

代码语言:javascript
运行
复制
if(boolean)
{
    oneliner();
}
nextLineOfCode();

如果oneliner()是一个#定义的函数,并且没有定义它,那么您的下一行代码就会突然受到if()的约束。同样的情况也适用于for循环等。使用大括号,那么下一段代码从不会无意中以if/for等为条件。

票数 16
EN

Stack Overflow用户

发布于 2008-11-06 06:47:06

我使用的前3种防御性编码实践如下

  1. 单元测试
  2. 单元测试
  3. 单元测试

对于代码的质量,没有比支持您的好的单元测试更好的防御方法了。

票数 14
EN

Stack Overflow用户

发布于 2008-11-06 06:25:03

这是一个简单而明显的问题,但我从来没有在代码中重复过两次相同的字符串常量,因为我知道如果我重复了,我就会拼写错误之一:)使用常量,伙计!

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/267763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档