這是 Quora 網友的一個提問,他還補充說:“我經常在想,像谷歌這樣的公司,它們的程式碼質量如何呢?根據我在兩個大公司的工作經歷來說,我感覺程式碼質量和公司年齡成反比。” 下面是伯樂線上摘編了兩位網友的回覆:一位是Google的程式設計師,另一位是Google前員工。
Google 程式設計師 Jeremy Hoffman 的回覆:
我沒有怎麼去比對過,但我認為Google的程式碼質量是非常高的。Google的軟體工程文化是原因之一(感謝 Kevin X Chang 給建議):
- 程式碼審查。在你提交任何程式碼改動之前,你得找去程式碼“主人”簽字確認。為了實現,評審者(被鼓勵去)建議大修程式碼,而不是讓它成為根本沒有經過思考的“圖章”程式碼。
- 按語言可讀性要求堅持程式碼風格指南(請參閱這裡)。除了讓我們程式碼有統一的外觀(所以我們能快速認出方法、成員等),我們的風格指南禁止了一些複雜、混亂、易出錯的 C++ 特性(比如:class 型別的靜態和全域性變數)。
- 整個團隊都致力於提供我們程式碼庫的質量,維護我們的核心庫,不斷給我們做更好的工具。
- 一個活躍的“程式碼健康”課題組。
- 釋出軟體時,不對外部期限負有義務。一般而言,這讓我們可以正確做事,而非為了期限把東西拼湊起來。
- “Fixits.” 例如,一個工程師或許說,“我認為我們真應該別再用過時的 CruftMap 類(class)了。我打算在 1 月 20 日組織一次 Fixit。” 當 1 月 20 日來臨時,大家應當暫停其正常運作,把他們程式碼中的 CruftMaps 都換掉。在 1 月 21 日,Google 就永遠和 CruftMap 說拜拜了!不過最近,核心庫團隊已經很優秀了,貌似沒有啥東西可再值得類似的 fixit 了。
- 測試文化。單元測試覆蓋率可能接近 100%,我們有持續構建/整合/測試,還有知名的 “Testing on the Toilet” (請參見Google Testing Blog)
題主是想討論程式碼年齡和程式碼質量之間的非正比關聯,這一現象程式設計師有時戲稱為“位腐”。Google 肯定也有。不是這裡就是那裡,你會發現Google早期的程式碼被孤立了(不是工程師的活躍工作物件了,或沒人熟悉了),但它們還在。我曾因為不得不和一些遺留程式碼打交道,曾經一直感受過沮喪。就我個人經驗來看,我認為,在Google快速擴張的一段時間內,如此少量的工程師實現了諸多特性,這階段中的有些程式碼,不能托起我們近日程式碼質量標準。
譯註:“Bit rot”相當於“ Software rot”,意指軟體效能隨著時間而退化,或者因環境變化而失勢。(維基百科)
但從巨集觀角度來說,我實際上認為Google的程式碼質量是隨著時間在提高,原因就是我上面所說的。
Googe 前員工 Dima Korolev 的回覆:
之前我在Google時常抱怨。
然而,在看過微軟、Facebook 和一些早期創業公司朋友寫的程式碼後,我欣然確認了,Google的程式碼質量確實非常高。保持程式碼高質量的方法並不總是 great。工程師的態度也並不總是 great。被獎勵和認可的程式設計師,也並不總是哪些喜歡更整潔程式碼的人。但不知何故,它奏效了,至少以前是奏效了。
事實上,在我離開Google多年後,人們常抱怨我在維護程式碼標準方面有點過於嚴苛。我不確定這和Google有多大關係,但肯定有關係。過一段時間後,會有人學習理解這些程式碼為什麼不長久,它們能如何改善,應當如何改進。:)
打賞支援我翻譯更多好文章,謝謝!
打賞譯者
打賞支援我翻譯更多好文章,謝謝!
任選一種支付方式