易燃物匯聚 YouTube 有聲書與書評
代碼整潔之道:程序員的職業素養 封面

代碼整潔之道:程序員的職業素養

[美]羅伯特 C. 馬丁

1.7萬人在讀
13.3萬字總字數
¥49定價

有聲書與視頻解讀 YouTube有聲書 1

內容簡介

本書是編程大師“Bob 大叔”40餘年編程生涯的心得體會的總結,講解要成爲真正專業的程序員需要具備什麼樣的態度,需要遵循什麼樣的原則,需要採取什麼樣的行動。作者以自己以及身邊的同事走過的彎路、犯過的錯誤爲例,意在爲後來者引路,助其職業生涯邁上更高臺階。

讀者書評

★★★★★

這本書讀完,大腦中清晰的呈現兩個字:專業。 專業人員必須有專業的素質,對程序員這個行業來說這包含很多方面,這既有對事的也有對人的,既有對內的也有對外的。只有對這事業是真的熱愛和投入,研究每一個細節,想把各個環節都做到完美才能漸漸理解這些專業的素養。 2026年Agent時代,代碼已經完全由AI來寫,程序員只需要描述清楚自己想要什麼然後指揮AI去做就行了,就像這本書中描述的很多東西,程序員手敲代碼也會成爲歷史,對這個行業來說很多東西都在因爲AI的變革在快速的淘汰,但素養這個東西依然是需要的,甚至會更加重要。 以下是思想提煉: 1. 責任擔當 原著思想:專業程序員必須對自己編寫的軟件負全部責任,不推諉、不找藉口。 AI時代意義:AI只是工具,最終責任在人。無論代碼是否由AI生成,上線後的風險、缺陷、後果都由你承擔,不能用“AI寫的”免責。 2. 保持誠實 原著思想:對進度、能力、風險保持真實,不誇大、不隱瞞、不盲目承諾。 AI時代意義:AI寫得快不代表能按時交付,不可因工具高效而亂拍工期、虛報能力,誠實是職場信任的基礎。 3. 堅守自律 原著思想:堅持整潔代碼、測試、評審、重構,保持專業工作紀律。 AI時代意義:AI易生成可用但混亂的代碼,自律決定你是“代碼審覈者”而非“搬運工”,規範、測試、整潔依然是系統穩定的關鍵。 4. 敢於說“不” 原著思想:專業人士有勇氣對不合理需求、工期、設計說不,並給出合理方案。 AI時代意義:AI只會順從指令,只有人能判斷技術債、架構風險,敢於拒絕並提供方案,纔是技術專家的價值。 5. 保守估算,承諾必達 原著思想:預估要務實保守,承諾必須兌現,尊重自己與他人時間。 AI時代意義:AI提升編碼速度,但調試、聯調、穩定性仍需人力,靠譜交付比速度更重要。 6. 持續學習,深耕本質 原著思想:專業程序員不斷學習,不停止成長,不固守舒適區。 AI時代意義:AI只會實現,不會設計架構、理解業務、把控全局。底層原理與系統判斷力,纔是不被替代的核心。 7. 尊重協作,善於溝通 原著思想:尊重同事、清晰表達、理性協作,以團隊爲先。 AI時代意義:AI無法處理人際關係、衝突對齊、影響力建設,軟能力是晉升與領導力的關鍵。 8. 恪守職業道德 原著思想:不編寫危險、劣質、不負責任的代碼,堅守專業底線。 AI時代意義:AI無道德判斷,人必須把控安全、合規、穩定性,不讓工具帶來隱患。 9. 工作生活平衡 原著思想:拒絕透支身體,保持長期可持續的工作節奏。 AI時代意義:AI不會疲憊,但人會。好決策、架構力來自清醒狀態,長期主義比短期衝刺更重要。

★★★★★

《代碼整潔之道》,最近一次被推薦,是去年的朋友圈,一位只見過一次的程序員老鄉發的,他當時推薦兩本書,一本《重構》,一本《代碼整潔之道》。《重構》已經在萌哥要求下看過,所以當時,只將《代碼整潔之道》加入書架,去年12月開始斷斷續續於手機上閱讀,到上個月讀完,累計花費7個半小時。 作者在前言中將本書結構、內容做了很好的概括,我摘抄於此: 本書大致可分爲3個部分。前幾章介紹編寫整潔代碼的原則、模式和實踐。這部分有相當多的示例代碼,讀起來頗具挑戰性。讀完這幾章,就爲閱讀第2部分做好了準備。如果你就此止步,只能祝你好運啦! 第2部分最需要花工夫。這部分包括幾個複雜性不斷增加的案例研究。每個案例都清理一些代碼——把有問題的代碼轉化爲問題少一些的代碼。這部分極爲詳細。你的思維要在講解和代碼段之間跳來跳去。你得分析和理解那些代碼,琢磨每次修改的來龍去脈。 你付出的勞動將在第3部分得到回報。這部分只有一章,列出從上述案例研究中得到的啓示和靈感。在遍覽和清理案例中的代碼時,我們把每個操作理由記錄爲一種啓示或靈感。我們嘗試去理解自己對閱讀和修改代碼的反應,盡力瞭解爲什麼會有這樣的感受、爲什麼會如此行事。結果得到了一套描述在編寫、閱讀、清理代碼時思維方式的知識庫。 讀本書,很多句子會讓我在心中發出“對的對的”、“是這樣的,是這樣的”、“作者厲害”、“好的好的”、“我改我改”這樣簡單的順從回答,我選取幾句摘抄於此處: 你該明白了。讀與寫花費時間的比例超過10:1。寫新代碼時,我們一直在讀舊代碼。既然比例如此之高,我們就想讓讀的過程變得輕鬆,即便那會使得編寫過程更難。 聰明程序員和專業程序員之間的區別在於,專業程序員瞭解,明確是王道。專業程序員善用其能,編寫其他人能理解的代碼。 函數的第一規則是要短小。第二條規則是還要更短小。 過去30年以來,以下建議以不同形式一再出現:函數應該做一件事。做好這件事。只做這一件事。 這樣的句子,還有很多,在這些總結性句子之後,會有對應的示例。我認爲讀本書的正確方式,是將本書的紙質版置於辦公桌前,在某些猶豫時刻,拿出來翻一翻,常讀常新。 讀本書的同時,我正在搭建一個小項目,每讀到一個點,就會在腦子中梳理一遍自己的代碼。有些是對的,有些不夠清晰,有些是應該改進的,梳理之後,看代碼,再做些許調整。讀書當時,影響最深。 讀完本書,我是多了一種理念的:“當我看出代碼能優化一下,能重構一下,能表達更清晰些,我會在當時儘量做一下。”這裏在現在的我是“儘量”,書中是推薦立馬改掉的。立馬慢慢的、穩健的一點點重構;晚點做,則會變成“勒布朗法則”的另一個佐證。(勒布朗法則——Later equals never,稍後等於永不。) 人都是會犯錯的。如果靠着經驗或者某個大家都需要遵守的約定而讓代碼運行下去,遲早有一天會踩坑。之前租房處去公司路上有一個坑,我一直注意着它,有次下班太晚騎車路過,掉進坑裏。這個坑,我已經避過它不下百次。 讀完本書,改變最深的是對“註釋”的看法——以後,能不寫註釋就儘量不寫註釋;無用但可能再用的代碼,不註釋直接刪掉,交由Git管理。註釋代碼這個事情,與生活中的習慣很有關聯,我不會想扔掉那些雞肋的、可能再也用不到的東西。 讀完本書,再去看各路(主要是工作中會用到的組件庫)源碼,絕大部分函數是真的能夠通過名字便知道它作用的。使用人數越多的代碼,越明顯。 本書,是作者擁有幾十年編碼經驗之後整理出來的。我沒有碰到過、不甚瞭解、不夠熟悉的場景,只能模糊理解作者的觀點。這讓我知道自己的短板,比如測試驅動開發,比如線程、進程,比如異常處理。 自子程序發明以來,軟件開發領域的所有創新都是在不斷嘗試從源代碼中消滅重複。 Don't repeat yourself!

★★★★★

自從有了 AI 大模型之後,我不知不覺就進入了程序員這個行當,變成了一個嘴噴的程序員,不過也因爲這樣,才發現,原來有些東西是基礎,看了代碼整潔之道才知道,東西是不斷變化的,但是原理是不變的。當自己得意洋洋的可以手搓出一個 APP 的時候,其實也要關注到這個 APP 的架構上是否有缺陷,是否是 TDD 驅動的。經過這部分,發現自己的面也擴寬了一些。

★★★★★

寫得真棒呀,如果我早點讀到這本書可以提前避免一些問題,即書中說到的“說不,說是”,“承諾”等,不過現在也不晚,種一棵樹最好是十年前,其次是現在嘛。 本以爲是一本說代碼規則和細節的問題,但是書中的重點在於如何成爲專業人士,我覺得關於專業人士的敘述非常棒,我也到了要轉行還是深耕這個領域的時間節點,非常感謝這本書的分享,對我的職業規劃很有幫助。

★★★★★

笑死啦,我想看的是《代碼整潔之道:clean code》,而不是《代碼整潔之道:程序員的職業素養》

★★★☆☆

本書作者是從穿孔紙帶編程時代就開始接觸程序設計的老兵,讀這本書你會發現作者卷得可怕,擁有異常嚴苛的職業精神。這本書中很少提及技術,而是將重點放到了開發規範、職業操守上,並提到了許多作者的血淚教訓,不論對於初入職場的新手或是深耕多年的老兵來說,都會有一定的啓示。 我的思考:我是個初級開發者,並沒有參與到過企業裏實際的項目開發中,因爲希望瞭解項目開發的完整流程、架構的設計原則、代碼的編寫要領等,但這本書並不符合我的期待,討論了更多關於開發人員本身應該具備的專業素養,對嚴謹溝通、遵守規則、編碼原則、良好協作等方面做了討論,但行文風格會比較誇張,對我比較有幫助的是關於TDD的理念探討以及測試的重要性和一些方法。 給出一段原文,有助於指引初級開發者的學習方向: 下面列出了每個專業軟件開發人員必須精通的事項。 設計模式。必須能描述GOF書中的全部24種模式,同時還要有POSA書中的多數模式的實戰經驗。 設計原則。必須瞭解SOLID原則,而且要深刻理解組件設計原則。 方法。必須理解XP、Scrum、精益、看板、瀑布、結構化分析及結構化設計等。 實踐。必須掌握測試驅動開發、面向對象設計、結構化編程、持續集成和結對編程。 工件。必須瞭解如何使用UML圖、DFD圖、結構圖、Petri網絡圖、狀態遷移圖表、流程圖和決策表。

★★★★★

這本《代碼整潔之道》是普通程序員走向“專業”的燈塔。它改變了我對軟件的看法,也使得我擺脫了一個純編碼者的思維,繼而轉向以研究設計架構、分析用戶需求爲中心的軟件開發方式。看完此書第一個感覺就是:大叔也是跌跌撞撞一路走來,我什麼時候才能成爲大叔這種級別的高手呢! 全書十四章。我自己是在順序閱讀中,是沿着三大主線進行思考的:學習、紀律、交流。 前三章可以作爲一組,從“職業精神、學會拒絕、學會承諾”三個切入點,講述了作爲一個職業程序員,要學會從工作經驗中學習爲人處世之道。具體說來,要會依據一些周圍的情勢、同事的語氣、自己的能力與時間安排等因素,決定是應該拒絕一個新功能的加入還是應該承諾在一個給定的時間內按時交付它。我在學會拒絕和承諾新需求的方面,一直做的很不到位。看了此書我才發現,要根據整個項目所處的狀態,向隊友陳述項目的實際情況。只有大家瞭解了實際情況,才能作出一個建設性的答案,以決定一個新功能是應該在下一版在做,還是應該加班做好,抑或採用一些臨時方案先使它上線。關於工程進度,表面的和諧和不夠深入的交流,都是導致工程延期的重要因素。 中間六章可以作爲一組,從“編碼、測試驅動開發、例行代碼功力訓練、驗收測試、測試策略、時間管理”等六個方面講述了一個專業程序員(即本書標題所謂的“乾淨編碼者”)所應具有的工作行爲準則。 在編碼這章中,作者講述了專注編碼的重要性。同時也強調了過於專注,而不時時用代碼審查或測試用例來輔助督促代碼質量的話,也會導致代碼細節美麗但是大方向走偏。編碼應當是短時間,高效率的作業,如果思維受到阻滯,應當及時放鬆,不能強求。

★★★★★

gpt4預習: 《代碼整潔之道:程序員的職業素養》是一本由 Robert C. Martin(也被稱爲 Uncle Bob)編寫的書籍。這本書的主要目標是教導程序員如何以專業的方式開發軟件。 這本書的主要內容包括以下幾個方面: 1. **專業主義**:書中強調了程序員應該具備的專業素質和道德責任。Martin 提出,專業程序員應該對自己的工作負責,對代碼質量有嚴格的要求,對自己的繼續教育和職業發展有計劃。 2. **代碼質量**:Martin 認爲,寫出高質量的代碼是程序員的主要職責。他強調了代碼應該是清晰、簡潔、可讀的,並且應該具有良好的結構和設計。他提出了許多實用的技巧和方法來提高代碼質量,例如測試驅動開發(TDD)、重構、持續集成等。 3. **工作習慣**:Martin 討論了一些有助於提高生產力和代碼質量的工作習慣,例如避免過度工作,保持專注,定期休息,保持學習等。 4. **職業發展**:Martin 討論瞭如何規劃和管理自己的職業發展,包括選擇適合自己的工作,學習新技術,參加行業活動,建立個人品牌等。 5. **與他人合作**:Martin 討論瞭如何有效地與同事、經理、客戶等其他人合作。他強調了良好的溝通能力和團隊協作能力的重要性。 總的來說,《代碼整潔之道:程序員的職業素養》是一本關於如何成爲一個更好的、更專業的程序員的書。它提供了許多實用的建議和指導,無論你是新手還是有經驗的開發者,都可以從中受益。

★★★★★

這本書適合一個小時內讀完,然後花一整個職業生涯去體驗去完善書中的內容,去反駁作者 1請務必理解“本頁有意留空”這句話 2無論誰給你了開了什麼樣的玩笑,請一笑置之 3榮譽與驕傲是責任和義務 4練習道歉,失誤率不可能爲零,但是你要讓他無限接近於零 5什麼樣的代碼是有缺陷的呢,那些你沒有把握的代碼都是!!! 6爲什麼不敢修改代碼呢,因爲你知道你不會測試 7留點時間給你自己的職業生長,這與工作無關,只爲了自己 8工作是必須精通的事情不是瞭解 9有自信確定什麼能什麼不能,因爲這纔是專業 10爲什麼不重要,重要的是你知道爲什麼,爲什麼而來得這個爲什麼 11不要用嘗試,可能,應當,希望來搪塞自己,你只是推脫,請給確定的詞彙 12對自己的承諾負責 13少說我們,讓我去完成這件事,不準推卸責任 14確保你的每一行代碼都不帶任何私人的情緒 15事情必有結論 16請保持自己的節奏,避免焦慮 加油職業人們!

★★★★★

我認爲作爲一個靠編程技能喫飯的專業人士都應該看看Bob大叔的這本書。這本書有些年頭了,但是技術會過時,核心素養卻不會,它甚至是跨領域通用的。如果在剛出社會能看到這本書,能少走很多彎路。 第一,成爲專業人士,必須要有專業主義。專業主義意味着你要學會承擔責任和義務,程序員的責任義務實際是簡單的——但卻又不簡單——那就是儘量少bug的交付自己的代碼。這很難,代碼有bug很正常 ,但是得知道你要承擔責任。 第二,要不斷精進自己的技能。每週爲自己工作20h,用於學習和訓練。 第三,學會說“不”。說“不”不是推諉任務,而是作爲專業人士敢於說明真相。可以就是可以,不可以就是不可以,什麼叫試一試?說“不”需要有很大的勇氣,但是更需要有對自己能力的清晰認知。 第四,學會說“是”。說“是”意味着承諾,承諾是必須要完成的。如果你一直信守承諾,那你就足夠專業。 第五,時間管理。最簡方法:緊急事件優先和番茄工作法。 第六,預估。未來的事情會有太多的偶然,預估是很困難的,但是我們依然有一些方法能給出比較符合的預估。同時要區分預估和承諾。 PERT(三點預估法),使用樂觀估計(O)、標準估計(N)、悲觀估計(P),預估時間=(O+4N+P)/6。 德爾菲法。多人蔘與的預估法,多人投票,如果有分歧繼續討論,重複進行直到消除分歧。 第七,要重視測試。這是消除bug的唯一方式。測試分爲幾個層面,從下往上分別爲:單元測試、組件測試、集成測試、系統測試。其中單元測試和組件測試對程序員最爲密切,單元測試覆蓋率應當時刻保持超過90%。 保持專業,是在一個行業存活下去的基石

書籍信息

作者[美]羅伯特 C. 馬丁
譯者餘晟 章顯洲
出版社人民郵電出版社有限公司
出版時間2016-09-01
ISBN9787115434159
分類計算機-計算機綜合
格式EPUB
完結狀態連載中
章節數26