相关疑难解决方法(0)

最喜欢的(聪明的)防守编程最佳实践

如果你必须为防御性编码选择你最喜欢的(聪明的)技术,它们会是什么?虽然我目前的语言是Java和Objective-C(有C++背景),但可以随意用任何语言回答.这里的重点是巧妙的防御技术,而不是我们这里70%以上的人已经知道的那些.所以现在是时候深入挖掘你的技巧了.

换句话说,试着想到除了这个无趣的例子之外:

  • if(5 == x) 而不是 if(x == 5):避免意外的分配

以下是一些有趣的最佳防御性编程实践的示例(特定于语言的示例在Java中):

- 锁定变量,直到您知道需要更改它们

也就是说,您可以声明所有变量,final直到您知道需要更改它为止,此时您可以删除final.一个常见的未知事实是这对方法参数也有效:

public void foo(final int arg) { /* Stuff Here */ }
Run Code Online (Sandbox Code Playgroud)

- 当发生不好的事情时,留下一丝证据

当你遇到异常时,你可以做很多事情:显然,记录它并执行一些清理会有一​​些.但是你也可以留下一些证据(比如将变量设置为"UNABLE TO LOAD FILE"等哨兵值,或者99999在调试器中有用,以防你碰巧超过异常catch块).

- 谈到一致性:魔鬼在细节中

与您正在使用的其他库一致.例如,在Java中,如果要创建一个提取一系列值的方法,则使下限包含且上限为exclusive.这将使其与String.substring(start, end)以相同方式操作的方法一致.您将在Sun JDK中找到所有这些类型的方法,因为它使各种操作包括元素的迭代与数组一致,其中索引从零(包括)到数组的长度(独占).

那么你最喜欢的防守做法是什么?

更新:如果您还没有,请随意加入.在选择正式答案之前,我有机会获得更多回复.

language-agnostic

148
推荐指数
28
解决办法
2万
查看次数

标签 统计

language-agnostic ×1