從插圖看《程式碼整潔之道——程式設計師的職業素養》
《程式碼整潔之道——程式設計師的職業素養》是《程式碼整潔之道》的作者Bob大叔的第二部作品,筆者讀完2016年再版的本書後有感而發寫下本文,本書2012年的版本叫《程式設計師的職業素養》。從內容上看,本書並非《程式碼整潔之道》的續書,加上字首可能是Bob大叔著作等身的時候要用第一本書命名全集。
職業素養並不是神祕的天賦,也不是高深的技藝,而是能力與素質的體現,也是持續的積累和養成。本書可以指導一個程式設計師如何抵制不專業的需求,提高開發的效率,享受自己的職業素養。
和《程式碼整潔之道》一樣,每章的開頭的插圖(以下簡稱“主題圖”)都概括了該章的主題,同時因為本書每章前的引言都是Bob自傳的一部分,所以主題圖常常有Bob大叔,注意他的長相。每章的主題圖也都隱藏了“KOHNKE”的暗記,在讀書之餘找暗記比給前任留下的程式碼捉bug有趣多了。
第一章《專業主義》
本章的主題圖是《碧血金沙》中的霍華德的劇照,搭配戲謔的臺詞嘲諷因為不專業而遭受挫折的程式設計師。
專業主義泛指做一個專業的程式設計師的職業道德,包含等多個誠實、謙虛、合作、堅持學習等方面。不但象徵榮譽與驕傲,而且明確意味著責任與義務。
第二章《說“不”》
本章的主題圖是包括Bob大叔在內的一群員工在暴跳如雷、怒不可遏的上司Frank面前噤若寒蟬、唯唯諾諾、沒人敢於說“不”的樣子。
說“不”是一個程式設計師的必備素質,對產品經理不合理的需求說“不”,對專案經理不科學的日程說“不”。老闆也應該珍惜敢於說“不”的程式設計師,敢於說“不”說明此人是一個人才而不是奴才。
第三章《說“是”》
本章的主題圖是Bob大叔等人在ER專案的釋出會上,被臺下觀眾用“BRAVO!”和“WONDERFUL!”連聲稱讚。
敢於說“是”的重要性不亞於說“不”。為了讓自己有說“是”的底氣,程式設計師應該努力尋找創新的方法以確保完成任務,儘可能做到有求必應。
第四章《編碼》
本章的主題圖是Bob大叔18歲時用穿孔機練習盲打的情景。
程式設計和盲打一樣,要精熟掌握程式設計能力的關鍵是要具備信心和“出錯感知能力”,編碼期間保持充足的睡眠、健康的體魄、科學的生活方式是信心和“出錯感知能力”的源泉。
Bob大叔最糟糕的程式碼是凌晨3點寫出來的,疲勞或心煩意亂的時候程式設計師的能力處於最低點。作為想讓程式設計師發揮最大工作效率的老闆,不要讓程式設計師熬夜加班。
第五章《測試驅動開發》
本章的主題圖是1999年Bob大叔向老專家Kent學習TDD的要義的畫面。
TDD不僅僅是一種用於縮短編碼週期的簡單技巧,也是一項能夠提升程式碼確定性、降低程式碼錯誤率、優化文件和設計的原則。不遵循TDD原則的程式設計師難以稱之為一個專業的程式設計師。
第六章《練習》
本章的主題圖是臥病在床仍耕不輟的Bob大叔的電腦裡飄出了燈神(外國的“下筆如有神”?)
Bob大叔用武術比喻程式設計,利用8小時以外的時間增強自己的技能是對自己負責的表現,儘管每人為你練習付錢,卻有人為你練習的成功付錢。
當然,練習錯誤的東西會對程式設計師的成長產生南轅北轍、背道而馳的影響,比如跟著一發功就能擊飛十個徒弟的印度大師練習十年瑜伽,在UFC賽場上也不能用意念打倒中國的散打隊員。
第七章《驗收測試》
本章的主題圖是1979年在外行主管Tom的瞎指揮下Bob大叔搞出了一個經不起電腦前真刀真槍考驗的東西的畫面(把看不見摸不著的軟體系統畫成看得見摸得著的機器人是因為軟體系統畫不出來)。
解決開發方和業務方溝通問題的不二法門是編寫自動化的驗收測試,這些測試必須以嚴肅的需求文件為基礎才能保證結果不會造成模糊。
第八章《測試策略》
本章的主題圖是1989年Rose專案上線前Bob大叔絞盡腦汁捉bug,身邊的同事們一籌莫展。
QA是團隊的重要組成部分,開發團隊只有與QA緊密協作,才能獲得更多的bug反饋,確保系統經歷單元測試、元件測試、整合測試和探索式人工測試後達到“QA應該找不到任何錯誤”的標準。
第九章《時間管理》
本章的主題圖是以Bob大叔為首的一群人和一座大鐘打架(外國的“爭分奪秒”?)
專業開發人員應該合理利用時間和精力,抵制優先順序錯亂,知道解決雪片似飛來的Crash比把logo大小調整成產品經理喜歡的尺寸重要。
程式設計師除了要珍惜8小時之內的工作時間,也應該用心管理8小時之外的學習時間,玩4年LOL的人一定沒有刷4年LeetCode的人收入高。
第十章《預估》
本章的主題圖是1978年的聖誕晚會上一醉方休的Bob大叔安慰因為預估時間太短而醉不成歡的Ken:“這就是我們真正需要的,所以,我一點兒也不生氣”
威客網站上充斥著“做一個網上商城,要求達到國內一線電商標準,預算低於30000元,時間不超過1個月”的任務,外行老闆常常低估軟體開發的時間成本和人力成本,但為業務人員提供可靠的預估結果是專業開發人員的必備素質。
在本章Bob大叔介紹了幾種做出可信預估的方法,也指出了程式設計師與業務方協商達到共識的竅門。
第十一章《壓力》
本章的主題圖是一個人的靈魂向主刀醫生施加壓力導致其不能冷靜下來為自己的身體做心臟手術的畫面。
很多老闆有催逼程式設計師熬夜加班的習慣,除了造成前文所說的疲勞之外,壓力陡增也會讓程式設計師變成主題圖中一邊把手術器材摔得叮咣亂響,一邊咒罵時間不夠用的主刀醫生。
如果老闆不具備不給程式設計師額外壓力的素質,程式設計師就必須具備壓力面前冷靜果斷、面不改色的能力,以戰勝由咄咄逼人的老闆和deadline帶來的壓力。
第十二章《協作》
本章的主題圖是22歲時的Bob大叔和他的同事Tim協作除錯為切割電子元件的鐳射用的軟體後一起欣賞軟體操縱鐳射生產電子錶的畫面。
程式設計師是一個多崗位配合的職業,程式設計師是需要與同崗位不同人、專案組不同崗位、不同專案組、不同部門、業務方打交道的極度依賴溝通能力的職業,與人協作的能力決定了程式設計師在程式設計之路上能走多遠。
第十三章《團隊與專案》
本章的主題圖是榨汁機把一群人攪拌成不能稱之為“團隊”的混合物。
軟體專案和戰爭一樣,並不是靠人多取勝的。一團散沙的工作效率比不上一個組建穩健的團隊,一個團隊只有建立了凝聚力後才能成為持續輸出專案的強大引擎。
本章中提到的“分析師”是負責關注行業領域、分析需求、測試功能的崗位,曾長期沒有固定稱謂:我上大學時軟體過程管理課程稱其為“領域專家”,需求工程課程稱其為“需求工程師”。在移動網際網路時代到來後才統一稱之為“產品經理”,本書2016年再版沿用舊稱是向Bob大叔奮鬥一生的年代致敬。
第十四章《輔導、學徒期與技藝》
本章的主題圖是平行世界裡年輕時的Bob大叔沒有走上程式設計師道路而是跟著魔法師做魔法學徒。
學校能傳授的理論,但是一名程式設計師必備的原則、實踐和技能只能培養而不能教。作為老人,不要對新手拖了你的後腿大發雷霆,誰都是從眼高手低的階段過來的,培養新人是我們義不容辭的責任和義務。
相關推薦
從插圖看《程式碼整潔之道——程式設計師的職業素養》
《程式碼整潔之道——程式設計師的職業素養》是《程式碼整潔之道》的作者Bob大叔的第二部作品,筆者讀完2016年再版的本書後有感而發寫下本文,本書2012年的版本叫《程式設計師的職業素養》。從內容上看
《程式碼整潔之道》&《程式設計師的職業素養》
這是why技術的第32篇原創文章 春節期間讀了兩本技術相關的書籍:程式設計大師Bob大叔的《程式碼整潔之道》和《程式碼整潔之道:程式設計師的職業素養》。 《程式碼整潔之道》出版於2010年,其內容主要是偏向於技術的"技"。全書都在說一些如何讓程式碼更加整潔的方法和規則。 《程式碼整潔之道:程式設計師的
程式碼之美——《重構》、《程式碼整潔之道》
什麼樣的程式碼才是美的程式碼?一千個coders可能會給出一千個答案。今天,讓我從一個簡單的角度來談談對於程式碼之美的理解。 可讀性高的程式碼才有可能是美的程式碼 相信大家都有過這樣的經歷:接手一個專案要修復bug或者
程式碼整潔之道1:反轉“if”語句減少巢狀
程式碼片段1:("if"巢狀) void PrintName(Person p) { if (p != null) { if (p.Name != null) { Console.WriteLine(p.Name); } } } 程式碼片段2:
程式設計之旅-java程式碼整潔之道
在日常開發過程中由於java特性(很多地方程式碼比較臃腫)看起來程式碼一大坨,這個時候使用某些技巧會使我們程式碼看起來更加整潔,下面在下面列舉開發過程中使用到的整潔之道 1:條件運算子 (1):使用語法: test ? expression1 : expression2 用於替換if
程式碼整潔之道 讀書筆記 - 第3章 函式
短小 函式的第一規則是要短小。第二條規則是還要更短小。 函式20行封頂最佳。 if語句、else語句、while語句等,其中的程式碼塊應該只有一行,而且,塊內呼叫的函式擁有較具說明性的名稱,還能起到文件的作用。 只做一件事 函式應該做一件事。做好這件事。只做這一件事。 每個函式一個抽象層級 自頂
Clean Code 程式碼整潔之道 格式
程式碼整潔之道 第5章 格式 筆記 5.1 格式的目的 程式碼格式關乎溝通 5.2 垂直格式 5.2.1 像報紙學習 原始檔最頂部應該給出高層次概念和演算法,細節應該往下漸次展開。 5.2.2 概念間垂直方向上的分隔 不同的東西用空白隔
《程式碼整潔之道》學習筆記一(前三章)
我們都曾經瞟一眼自己親手造成的混亂,決定棄之於不顧,走向新的一天。 我們都曾經說過有朝一日要回頭清理。 當然,那是我們都沒聽過勒布朗法則:稍後等於永不(Later equals never)。 隨著混亂的增加,團隊的生產力不斷下降,趨向於零。 假如你是位醫生,病人請求你
程式碼整潔之道 讀書筆記 - 第5章 格式
垂直格式 1、推薦單檔案200行程式碼左右,最長不超過500行。 2、每一組思路完整的程式碼,中間用空白行區隔。 3、緊密相關的程式碼應該互相靠近。 4、本地變數和實體變數應該在類的頂部宣告。 5、概念相關的程式碼應該放在一起,相關性越強,距離越短。 6、自上向下展示函式呼叫依賴順序。被呼叫的函式
程式碼整潔之道 讀書筆記 - 第6章 物件和資料結構
資料結構、物件的反對稱性 物件(物件式程式碼)曝露行為,隱藏資料。便於新增新物件型別而無需修改既有行為,同時也難以在既有物件中新增新行為。 資料結構(過程式程式碼)曝露資料,沒有明顯的行為。便於向既有資料結構新增新行為,同時也難以向既有函式新增新資料結構。 在任何系統中,我們有時會希望能夠靈活地新增新資
程式碼整潔之道 讀書筆記 - 第8章 邊界
1、使用第三方程式碼,如果使用邊界介面,就把它保留在類或近親類中。避免從公共API中返回邊界介面,或將邊界介面作為引數傳遞給公共API。 2、瀏覽和學習邊界,不要在生產程式碼中試驗新東西,而是編寫測試來遍覽和理解第三方程式碼。Jim Newkirk把這個叫做學習性測試。 3、學習性測試的好處不只是免費,能
程式碼整潔之道 讀書筆記 - 第10章 類
類應該短小 1、單一權責原則(SRP) 系統應該由許多短小的類而不是少量巨大的類組成。 每個小類封裝一個權責,只有一個修改的原因,並與少數其他類一起協同達成期望的系統行為。 2、內聚 類應該只有少
斷舍離 ——《程式碼整潔之道》讀書筆記
注:只看了書的前十章 第一章 為什麼要整潔程式碼 1、程式碼永不消失 程式碼就是銜接人腦理解需求的含糊性和機器指令的精確性的橋樑。哪怕未來會有對現在高階程式語言的再一次抽象——但這個抽象規範自身仍舊是程式碼。 所以既然程式碼會一直存在下去,且自己都幹了程式設計師這一行了,就好好的對待它吧。 2、讀遠比寫
程式碼整潔之道(中文完整版)pdf
《程式碼整潔之道(英文版)》提出一種觀念:程式碼質量與其整潔度成正比。乾淨的程式碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為程式設計領域的佼佼者,《程式碼整潔之道(英文版)》作者給出
程式碼整潔之道的一些總結
函式法則 函式體應該儘可能短小,每個函式只做一件事情 如果不是特殊要求,函式儘量使用少的引數;特殊情況除外,比如定義了一個笛卡爾座標系點的類,則設定的函式應該是setData(int x, int y) 函式的語句應該在同一個抽象層級上,如果函式中抽象層級太多,會
《程式碼整潔之道》讀書筆記
最初我喜歡這本書可能是因為非技術方面的原因,這本書中有很多我喜歡的插圖。這本書的第一章的第一句話是這樣說的:讀這本書通常有兩個原因:1. 你是一名程式設計師。2. 你想成為更好的程式設計師。我們需要更好的程式設計師。 這本書的每一章都可以總結出一句話,其實每章開始的
[學習筆記] 《程式碼整潔之道》(一)
[學習筆記] 《程式碼整潔之道》—第1章 整潔程式碼 程式設計:將需求明確到機器可以執行的細節程度 —> 程式碼 保持程式碼整潔:讓營地比你來時更乾淨! [學習筆記]《程式碼整潔之道》—第2章 有意義的命名 名副其實 說起來簡單,但這是很嚴肅的事!
[學習筆記] 《程式碼整潔之道》(三)
[學習筆記] 《程式碼整潔之道》—第4章 註釋 什麼也比不上放置良好的註釋來的有用! 什麼麼也比不上亂七八糟的註釋更有本事搗亂一個模組! 什麼也不會比陳舊、提供錯誤資訊的註釋更有破壞性! 註釋的恰當用法是彌補我們程式碼表達意圖時的失敗。 註釋總
程式碼整潔之道-第2章-有意義的命名-讀書筆記
第 2 章 有意義的命名 15-28 2.1 介紹 文章列出取個好名字的幾條簡單規則。 2.2 名副其實 程式碼的模糊度:即上下文在程式碼中未被明確體現的程度。 2.3 避免誤導 程式設計師必須避免留下掩藏程式碼本意的錯誤線索。應當避免使用與本意相悖的詞。 提防使用不同之處較小的名
程式碼整潔之道 第9章 單元測試
1.TDD三定律 定律一 在編寫能通過的單元測試前,不可編寫生產程式碼 定律二 只可編寫剛好無法通過的單元測試,不能編譯也算不通過 定律三 只可編寫剛好足以通過當前失敗測試的生產程式碼 這樣寫程式,我們每天就會編寫數十個測試,測試將覆蓋所有生產程式碼。測試程式碼