程序編譯為何失敗?
完美的程序不會是一次就寫成功的,都要經過反復編譯、調試、修改。調試過程可能會花費大量的時間,如果了解了常見編譯錯誤發生的原因,這有助于節省時間,提高開發效率。
Google、香港科技大學和內布拉斯加大學的研究人員分析了 1.8 萬 Google 工程師在 2012 年 11 月到 2013 年 7 月之間的超過 2600 萬次編譯,分析出了編譯失敗的常見原因、修復所花費的時間等。
下圖顯示了這些數據收集的過程。
1. 編譯失敗率與編譯次數、開發者經驗無關
研究人員推測,編譯次數越多,出錯的幾率也就越大。但是實際數據顯示,這兩者之間沒有相關性。
研究人員還推測,有經驗的開發者出錯率會比較低,但事實也并非如此。
2. 絕大多數編譯失敗與依賴有關
大約 65% 的 Java 編譯錯誤被認為跟依賴有關,比如編譯器無法找到一個符號(這是最常見編譯錯誤,占所有編譯錯誤的 43%),或者是包不存在。
在 C++ 編譯中,大約 53% 的編譯錯誤跟依賴相關,最常見的錯誤是使用了未聲明的標識符和不存在的類變量。
3. C++ 代碼編譯更容易出錯
下圖是編譯錯誤率(x軸)對應的開發者人數(y軸)。
研究發現,C++代碼的構建失敗率為 38.4%,而 Java 為 28.5%。此外,在 C++ 編譯中發生語法錯誤比 Java 更頻繁,但是 C++ 編譯錯誤會得到更快的解決。
研究人員認為,造成這種差異的原因是 Java 開發一般使用 IDE,這有助于減少一些簡單的語法錯誤,但 IDE 生成的代碼在一定程度上也增加了解決編譯錯誤的難度。
詳細報告:Programmers’ Build Errors : A Case Study (at Google)(PDF)
<span id="shareA4" class="fl">
</span>
</div>