偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

事后諸葛亮:如何寫出沒有bug的軟件

開發(fā) 前端
網(wǎng)上對蘋果iOS7操作系統(tǒng)中 最新暴露出的一個嚴(yán)重安全漏洞的討論讀起來十分有趣。如果你還沒有讀過 Alex Langley對此的分析,那現(xiàn)應(yīng)該讀一下,寫的非常好。

網(wǎng)上對蘋果iOS7操作系統(tǒng)中 ***暴露出的一個嚴(yán)重安全漏洞的討論讀起來十分有趣。如果你還沒有讀過 Alex Langley對此的分析,那現(xiàn)應(yīng)該讀一下,寫的非常好。

附帶說一下,是一個TLS v1.2 SSL連接問題上的bug,簽名認(rèn)證沒有被檢查,使偽造簽名成為可能。原因是代碼***的直接跳到了方法的結(jié)尾處,沒有實(shí)際檢查哈希結(jié)果是否正確。

問題程序

是什么導(dǎo)致了這樣一個弱者的bug?我四處看了一下,下面是網(wǎng)友們總結(jié)出的幾個原因:

  • 用C語言很難寫出正確無誤的程序
  • 蘋果公司的程序員不用心
  • 編碼風(fēng)格中允許忽略大括號
  • 蘋果公司里沒有正規(guī)的代碼審查
  • 使用了goto語句
  • 使用了自動代碼合并
  • 沒有開啟編譯器對死代碼的警告
  • 沒有使用靜態(tài)分析工具
  • 沒有好好測試

所有的這些原因看起來都像是在這個bug的產(chǎn)生中扮演了一定的角色。但有一個主導(dǎo)原因嗎?

對代碼的差異對比給不了多少有用的信息,在631行上的這個bug看起來怎么產(chǎn)生的都有可能。也許是一次代碼合并錯誤,也許是愚蠢的拷貝/粘貼造成。

事實(shí)上,你很難,或許不可能找到一個單一的為此bug負(fù)責(zé)的原因,那我們能有什么良方?很多人說是指代碼上沒有用花括號包圍的原因。例如Zed說:

很顯然寫這段Apple SSL C 代碼的家伙沒有讀過我的C語言書:永遠(yuǎn)使用花括號!

— zedshaw (@zedshaw) February 23, 2014

這就是帕金森瑣碎定理的一個很好的例子:花費(fèi)大量時間討論無關(guān)緊要的瑣事。引起這個bug的根源不是缺少花括號。有沒有花括號不會成為這個多余的goto的產(chǎn)生的原因。

為什么我們,程序員們,總是抱怨編碼風(fēng)格問題,但卻不重視代碼審查對程序正確性的決定作用呢?雖然不好的編碼風(fēng)格會隱藏程序bug,但并不是編碼 風(fēng)格產(chǎn)生的問題。我們太重視代碼布局視覺上的問題,卻故意逃避正確性問題。如果更注重正確性,絕對不可能讓這種關(guān)鍵代碼中未經(jīng)測試的情況下發(fā)布。

好的編碼風(fēng)格并不能防止大部分的bug的產(chǎn)生——盡管有點(diǎn)作用。簡單的編程語言能夠減少bug的產(chǎn)生。代碼審查的作用更大。靜態(tài)分析能讓你避免大量的bug。

認(rèn)真的測試可以捕捉并防止很多bug的產(chǎn)生。這就是為什么對于關(guān)鍵的軟件,比如cryptography library,有100%的測試覆蓋率。這種一眼就能看出來的bug絕對不會在這種軟件里出現(xiàn)。

未經(jīng)測試的加密代碼是用來解密的代碼。

所以說,抱怨花括號是愚蠢的做法。相反,在這種情況下花括號會讓問題更難發(fā)現(xiàn),花括號不是問題的根源,也不是問題的解決方案。大家找錯了方向。

原文鏈接:http://blog.existentialize.com/wrong-solutions.html

譯文鏈接:http://www.vaikan.com/wrong-solutions/

責(zé)任編輯:陳四芳 來源: 外刊IT評論
相關(guān)推薦

2015-12-07 17:24:53

物聯(lián)網(wǎng)物聯(lián)網(wǎng)分析

2011-10-24 15:35:10

IT運(yùn)維云梯49

2014-05-12 15:42:53

公安局IT運(yùn)維管理

2020-05-19 15:00:26

Bug代碼語言

2010-07-14 16:13:43

諸葛亮求職記

2020-04-29 10:10:45

網(wǎng)絡(luò)安全自動駕駛漏洞

2025-05-09 02:00:00

代碼接口吞吐量

2018-08-30 07:03:49

2015-01-16 09:55:52

云部署API管理云安全

2018-08-16 10:28:56

云端數(shù)據(jù)應(yīng)用

2012-08-29 16:08:12

2021-01-13 10:26:28

Paxos 分布式協(xié)議

2022-03-18 08:37:12

二分查找算法元素

2018-08-23 09:54:47

人工智能集成學(xué)習(xí)

2018-01-29 21:56:28

Bug程序程序員

2020-07-15 08:17:16

代碼

2015-10-30 19:58:53

2020-05-11 15:23:58

CQRS代碼命令

2013-06-07 14:00:23

代碼維護(hù)

2021-09-01 08:55:20

JavaScript代碼開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號