天天看點

軟體工程師進入程式設計世界的55個錦囊:《 好代碼 ,壞代碼》

軟體工程領域關于如何寫出優秀代碼的建議和觀點非常多。但生活沒有那麼簡單,

絕不隻是盡可能多地吸取好的建議并嚴格遵守。由于不同來源的建議往往互相沖突,我們怎麼知道要聽從哪個建議。更重要的是,軟體工程并不是一門精确的科學,不可能将其提煉為一套絕對可靠的原則(無論我們如何努力)。每個項目都不一樣,幾乎總有一些因素需要權衡。

為了寫出優良的代碼,我們必須對手上的方案有合理的判斷,并徹底想清楚特定方法 的結果(好的和壞的)。為此,我們必須了解問題的根本:編寫代碼到底是為了實作什麼目标?實作那些目标需要考慮哪些高層因素?《好代碼 ,壞代碼》就可以幫助剛入門的軟體工程師擷取這些技能。

好代碼 ,壞代碼

[英] 湯姆·朗(Tom Long) 著,姚軍,茹蓓 譯

軟體工程師進入程式設計世界的55個錦囊:《 好代碼 ,壞代碼》

Google開發工程師從零講解高品質代碼,整合作者及團隊多年的軟體開發實踐經驗,通過50+條錦囊妙計、100+個案例,幫你輕松了解和掌握程式設計技能。

軟體工程師進入程式設計世界的55個錦囊:《 好代碼 ,壞代碼》

軟體工程師在不斷積累經驗的過程中會發現,日常程式設計中所做出的決策對于軟體的正常運 行、工作的順利開展以及其他人的維護有很大的影響。學習編寫(從軟體工程角度來看)優良代 碼需要花費許多年的時間。這些技能的獲得過程往往很緩慢。工程師從自己的錯誤中吸取教訓, 或者不斷從團隊的資深工程師那裡得到建議,以特定的方式得到這些技能。

本書特點

軟體工程師進入程式設計世界的55個錦囊:《 好代碼 ,壞代碼》

本書介紹軟體工程師經常用于編寫可靠的、易于維護的代碼的關鍵概念與技術。本書并不是 簡單列舉“該做”和“不該做”的事項,而是旨在解釋每種概念和技術背後的核心理論,以及需 要權衡的因素。這應該能夠幫助讀者對如何像一位經驗豐富的軟體工程師那樣思考和程式設計有基本 的了解。

本書的讀者

本書的目标讀者是那些已經具備基本程式設計技能,想繼續提高程式設計技能的人。本書适合有0~ 3年軟體工程師工作經驗的人閱讀。有豐富工作經驗的工程師可能發現,本書中的許多内容他們 都已經掌握,但我希望他們把這本書當作指導其他同行的有用資源。

本書的組織結構

本書分為三部分,共11章。第一部分介紹較為理論性的概念,它們組成了我們對代碼的思 考方法。第二部分轉向較為實用的經驗教訓。第二部分的每一章都分為一系列主題,分别涵蓋特 定的考慮因素或技術。第三部分介紹建立有效和可維護的單元測試的原則與方法。

本書各章節的總體形式是:先闡述一個可能有問題的場景(以及部分代碼),然後說明消除部分或全部問題的替代方法。從這個意義上說,每個章節往往是從展示“壞”代碼過渡到“好” 代碼,但需要注意的是,壞和好是主觀的說法,與語境相關。正如本書所要強調的,在程式設計工作 中往往要考慮一些微妙的差别和權衡,這也就意味着好壞的差別并不總是一目了然。

第一部分“理論”為一些總體性和較為理論性的考慮因素打下基礎。這些考慮因素組成我們像軟體工程師那樣編寫代碼的方法。

  • 第1章介紹代碼品質的概念,特别是我們打算用高品質代碼要實作的一組實際目标。 然後,我們将這些目标展開為“代碼品質的六大支柱”,為日常程式設計使用提供高層政策。
  • 第2章讨論抽象層次。這是指導我們如何構造代碼,并将其分解為不同部分的基本考 慮因素。
  • 第3章強調考慮必須使用我們的代碼開展工作的其他工程師的重要性。本章還将讨論 代碼契約,以及如何仔細考慮這些契約以防止軟體缺陷。
  • 第4章讨論軟體錯誤,并闡釋為何認真思考錯誤通知與處理方法是編寫優良代碼的關 鍵部分。

第二部分“實踐”以更貼合實踐的方式,用特定的技術與示例介紹代碼品質的前五大支柱(第1章定義的)。

  • 第5章介紹提高代碼可讀性的方法。這能確定其他工程師了解代碼的意義。
  • 第6章介紹避免意外情況的方法。這能確定其他工程師不會誤解代碼的功能,進而最 大限度地降低出現缺陷的可能性。
  • 第7章介紹使代碼不容易被誤用的方法。這使得工程師不容易在不經意間編寫出邏輯 錯誤或者違反假設的代碼,最大限度地降低出現缺陷的可能性。
  • 第8章介紹實作代碼子產品化的方法。這種關鍵技術有助于確定代碼表現出清晰的抽象 層次,能夠适應不斷變化的需求。
  • 第9章介紹代碼的重用性和可推廣性。這能避免軟體工程師重複編寫類似代碼,使得 添加新功能或建構新特性更加友善、安全。
  • 第10章介紹影響單元測試代碼的一些原則和考慮因素。
  • 第11章以第10章介紹的原則為基礎,為編寫單元測試提供一系列具體、實用的建議。 閱讀本書的理想方式是從頭到尾完整閱讀,因為本書前面的章節是後續章節的基礎。盡管如 此,第二部分(以及第11章)中的主題通常相對獨立,而且每個主題篇幅較小,是以,即使單 獨閱讀,也是有益處的。這樣的編寫方式是有意為之,目的是提供向其他工程師快速解釋既定優 秀實踐的有效手段。對希望在代碼評審中解釋特定概念或指導其他工程師的工程師來說,這是非常有用的。

如何運用本書中的建議

繼續閱讀