防御性编程技巧,第二部分

3 不要相信任何人

妈妈曾告诉过你,不要和陌生人说话。不幸的是,要想开发一个好的软件,就需要更加愤世嫉俗,对人的天性更加不信任。即便是没有恶意的代码用户,也可能会给你的程序带来麻烦。防御意味着不能相信任何人。

下面这些情况可能是给你带来麻烦的原因:

— 真正的用户 意外地提供了假的输入,或者错误地操作了程序;

— 恶意的用户 故意造成不好的程序行为;

— 客户端代码 使用错误的参数调用了你的函数,或者提供了不一致的输入;

— 运行环境 没有为程序提供足够的服务;

— 外部程序库 运行失误,不遵从你所依赖的接口协议。

你甚至可能会在编写一个函数时犯下愚蠢的错误,或者错误地使用三年前编写的代码,因为你忘记了这些代码究竟是怎样运行的。不要设想所有的一切都运行良好,或者所有的代码都会正确地运行。在你的程序各处都添加安全检查。时刻注意弱点,用更多的防御性代码防止弱点的出现。

关键概念 不要相信任何人毫无疑问,任何人(包括你自己)都可能把缺陷引入你的程序逻辑当中。用怀疑的眼光审视所有的输入和所有的结果,直到你能证明它们是正确的时为止。

 

4 编码的目标是清晰,而不是简洁

如果要你从简洁(但是有可能让人困惑)的代码和清晰(但是有可能比较冗长)的代码中选择,一定要选那些看上去和预期相符合的代码,即使它不太优雅。例如,将复杂的代数运算拆分为一系列单独的语句,使逻辑更清晰。

想一想,谁会是你的代码的读者。这些代码也许需要一位初级程序员来进行维护,如果他不能理解代码的逻辑,那么他肯定会犯一些错误。复杂的结构或不常用的语言技巧可以证明你在运算符优先级方面渊博的知识,但是这些实际上会扼杀代码的可维护性。请保持代码简单。

不能维护的代码是不安全的。举一个极端的例子,过于复杂的表达式会使编译器生成错误的代码,许多编译器优化的错误就是因此而造成的。

关键概念 简单就是一种美。不要让你的代码过于复杂。

a2ccbb759ea3473aa72f705f890417ff.png

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿阿存

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值