题图:我司大前端涛哥作品,这货正在澳洲一边浪一边写 bug
2019 年 2 月,安全研究人员爆出苹果公司旗下的 iOS 和 macOS 操作系统出现了严重的安全漏洞,黑客可以利用这一漏洞轻松获取用户的数据。下面的这段 C 语言伪代码简单描述了当时的漏洞情况:
写过程序的人一眼就能看出来,在这段代码的第三行出现了多余的代码,导致后面的其他代码「失效」,这一低级错误也让所有的安全人员大跌眼镜。你可能会说,这开发人员真是太粗心了,是不是他复制代码的时候,多复制了一行,然后忘记删除了?
是不是这个原因呢?很难讲,但问题的源头肯定不是粗心。人们在阅读了那段问题代码之后,发现相关代码既没有正确使用缩进,也没有用好括号,并且其中的空格、制表符和代码注释也都不统一。
换句话说,出问题的这段代码就是所谓的「烂代码」。
关于这个漏洞的细节可以参考:https://www.imperialviolet.org/2019/02/22/applebug.html
我们在工作中,对于烂代码和好代码的定义,真是千人千面,所谓码农相轻,就是这个道理。事实上我们回头去看自己一年前的代码,一样会充满推到重来的欲望。现实环境的变化,也影响着你我对于代码「好」与「坏」的判断标准。
不知道你有没有遇到过这样的场景:当看到一段不符合自己价值观的代码,理所当然认为是「烂代码」,于是删掉了那段代码,用自己认为更好的方法重新写了一遍,然后觉得挽救了这个项目,觉得无敌是多么寂寞。等到你真正深入理解了这部分业务逻辑之后,某一天,你突然发现,当初删掉代码的处理方式是最恰当的。
编程其实是一种创造性的工作,并不是程序员自嘲的「码农」,好的代码像艺术品,简单、优雅、直接,优秀程序员不会为了炫技把简单的事情搞复杂,编程也不是简单的复制粘贴和修修改改。从整体结构上看,好的代码是模块化的,嵌套的,层层递进的。
Linux 系统的作者 Linus 说:
你可以建筑一个这样的房子,有一个活板门,既稳固又实用。但是每个人都可以看出一个仅仅以坚固实用为目的的树上小屋和一个巧妙地利用树本身特点的美妙小屋之间的差异。这是一个将艺术和工程融为一体的工作。编程与造树上小屋有相似之处……
那什么是好的代码呢?
而如何写出好的代码,却是一门大学问。为此极客时间特别邀请了 Oracle 主任工程师范学雷老师出品了《代码精进之路》专栏。
范老师是 OpenJDK 和 Java 安全的评审成员,有 20 年的编程经验。他 2004 年加入了 Java SE 团队,完整经历了 JDK 从 1.5.0 到 9.0 的整个迭代过程。
极客时间 jvm 专栏作者杨晓峰对范学雷的评价是:
范老师是真正低调的大神,jdk11 tls 1.2 项目的 leader,懂行的朋友一定知道 OpenJDK 评审委员会意味着什么。
在这个专栏里,范老师会带着大家:
摒弃编码坏习惯,找到高效规范的代码编写方法。提升编程敏感度,拥有专家级编码思维和全局观。重塑代码价值观,找到最适合现实环境的代码设计逻辑。紧贴工作实际场景,明确高频代码问题的最优处理和预防方案。消除代码安全隐患,为团队交付最佳性能的代码。
扫码阅读完整目录,专栏的代码示例主要是 Java 和 C。现在订阅是优惠期价格 68 元。祝你写出优秀的代码,阿门。
本文标题:烂代码?从苹果公司的一次严重安全漏洞说起
- 相关推荐
【烂代码?从苹果公司的一次严重安全漏洞说起】相关文章: