大多數(shù)軟件開發(fā)人員在復雜的代碼上浪費了大量的時間。《整潔代碼的藝術》提出的九大原則將教會您如何編寫清晰、可維護且功能完備的代碼。本書的指導原則很簡單:縮減和簡化,將精力投入到重要的工作上,省下大量的時間,卸下代碼維護的重擔。
熱銷書作者克里斯蒂安.邁爾在本書中利用他的經(jīng)驗幫助許多程序員完善他們的編碼技能。他給出專業(yè)建議和真實例子,展示如何:利用80/20原則,專注于重要任務——最要緊的那20%代碼;避免孤立編碼,創(chuàng)建最小可行產(chǎn)品,獲得早期反饋;編寫整潔、簡單的代碼,排除混亂;避免導致代碼過度復雜的過早優(yōu)化;平衡您的目標、能力與反饋,達到高產(chǎn)出的心流狀態(tài);應用“做好一件事”哲學,極大地提升代碼功能;利用“少即是多”哲學,設計有效用戶界面;用“專注”原則貫穿所學的這些新技能。
本書采用Python作為示例語言,但以與語言無關的方式呈現(xiàn)概念,適合不同水平的程序員。
適讀人群 :基于Python任何級別的軟件開發(fā)人員。 1.內(nèi)容精煉實用。匯集了專業(yè)人員的建議和現(xiàn)實世界的真實例子,講解9項基本代碼整潔的指導原則。
2.將“減少和簡化”的思想貫穿全文,通過正確的計算機編程方式和使用本書提出的恒久原則,用更少資源創(chuàng)造更多價值。
3.熱銷書作家Christian Mayer利用他的經(jīng)驗,在這本新書中他幫助許多人完善了他們的編碼技能和產(chǎn)出能力。
克里斯蒂安.邁爾(Christian Mayer)是 Python 網(wǎng)站 Finxter 的創(chuàng)辦人。
每年有超過 500 萬用戶在 Finxter 教育平臺上學習寫程序。他擁有計算機科學博士學位,出版過多本圖書,包括 Python One-Liners: Write Concise, Eloquent Python Like a Professional(No Starch Press, 2020)、 Leaving the Rat Race with Python: An Insider's Guide to Freelance Developing( 2021)和“Coffee Break Python”系列圖書。
第 1章 復雜性如何危害生產(chǎn)力 1
1.1 何為復雜性 3
1.2 項目生命周期中的復雜性 4
1.2.1 規(guī)劃 5
1.2.2 定義 5
1.2.3 設計 6
1.2.4 構建 6
1.2.5 測試 7
1.2.6 部署 9
1.3 軟件和算法理論中的復雜性 9
1.4 學習中的復雜性 15
1.5 過程中的復雜性 17
1.6 日常生活中的復雜性,或謂七零八落 18
1.7 小結 19
第 2章 80/20原則 21
2.1 80/20原則的基礎概念 21
2.2 應用軟件優(yōu)化 22
2.3 生產(chǎn)力 23
2.4 成功指標 26
2.5 專注與帕累托分布 27
2.6 對程序員的意義 29
2.6.1 程序員的成功指標 30
2.6.2 真實世界中的帕累托分布 31
2.7 帕累托分布具備分形特征 34
2.8 80/20原則實踐技巧 37
2.8.1 找到成功指標 37
2.8.2 找到生命中的大目標 37
2.8.3 尋找用較少資源成事的方法 37
2.8.4 反思自己的成功 37
2.8.5 反思自己的失敗 38
2.8.6 閱讀更多所在領域的著作 38
2.8.7 花費大量時間改進和調(diào)優(yōu)既有產(chǎn)品 38
2.8.8 微笑 38
2.8.9 不做降低價值的事 38
2.9 資料 39
第3章 打造最小可行產(chǎn)品 41
3.1 問題場景 41
3.1.1 失去動力 43
3.1.2 分心 43
3.1.3 超時 43
3.1.4 缺乏回應 44
3.1.5 錯誤假設 44
3.1.6 不必要的復雜性 45
3.2 構建最小可行產(chǎn)品 46
3.2.1 最小可行產(chǎn)品的四大要點 49
3.2.2 最小可行產(chǎn)品的好處 50
3.2.3 隱身編程模式與最小可行產(chǎn)品手段 51
3.3 小結 51
第4章 編寫整潔和簡單的代碼 53
4.1 為何要寫整潔代碼 53
4.2 編寫整潔代碼的原則 55
4.2.1 原則1:心懷全局 56
4.2.2 原則2:站到巨人肩上 57
4.2.3 原則3:為人寫代碼,而不是為機器寫代碼 58
4.2.4 原則4:正確命名 59
4.2.5 原則5:一以貫之地遵循標準 60
4.2.6 原則6:使用注釋 62
4.2.7 原則7:避免非必要注釋 64
4.2.8 原則8:最小意外原則 66
4.2.9 原則9:別重復自己 66
4.2.10 原則10:單一權責原則 68
4.2.11 原則11:測試 71
4.2.12 原則12:小即是美 72
4.2.13 原則13:得墨忒耳律 74
4.2.14 原則14:您不會需要它 78
4.2.15 原則15:別用太多縮進層級 79
4.2.16 原則16:使用指標 81
4.2.17 原則17:童子軍軍規(guī)和重構 81
4.3 小結 82
第5章 過早優(yōu)化是萬惡之源 85
5.1 6種過早優(yōu)化的類型 85
5.1.1 優(yōu)化函數(shù) 86
5.1.2 優(yōu)化特性 86
5.1.3 優(yōu)化規(guī)劃 86
5.1.4 優(yōu)化可擴展性 87
5.1.5 優(yōu)化測試設計 87
5.1.6 優(yōu)化面向對象世界建設 88
5.2 性能調(diào)優(yōu)的6條提示 88
5.2.1 先度量再改進 89
5.2.2 帕累托為王 89
5.2.3 算法優(yōu)化獲勝 91
5.2.4 緩存萬歲 92
5.2.5 少即是多 94
5.2.6 懂得何時停止 95
5.3 小結 95
第6章 心流 97
6.1 什么是心流 97
6.2 如何達到心流狀態(tài) 99
6.2.1 清晰的目標 99
6.2.2 反饋機制 99
6.2.3 平衡機會與能力 100
6.3 給程序員的心流提示 101
6.4 小結 102
6.5 資料 103
第7章 做好一件事,以及其他Unix原則 105
7.1 Unix的崛起 105
7.2 Unix哲學概覽 106
7.3 15條有用的Unix原則 108
7.3.1 每個函數(shù)做好一件事 108
7.3.2 簡單勝于復雜 111
7.3.3 小即是美 112
7.3.4 盡快打造原型 114
7.3.5 可移植性勝于效率 114
7.3.6 在純文本文件中保存數(shù)據(jù) 116
7.3.7 使用軟件杠桿獲得優(yōu)勢 118
7.3.8 避免使用強制式用戶界面 119
7.3.9 把每個程序都寫成過濾器 123
7.3.10 更差即更好 125
7.3.11 整潔代碼勝于機靈代碼 125
7.3.12 將程序設計成能與其他程序相連接 126
7.3.13 編寫健壯的代碼 127
7.3.14 盡量修復——但盡早曝露失敗 128
7.3.15 避免手工操作——盡量編寫能寫程序的程序 129
7.4 小結 130
7.5 資料 131
第8章 設計中的少即是多 133
8.1 移動電話演進過程中的極簡主義 133
8.2 搜索中的極簡主義 134
8.3 擬物設計 136
8.4 如何實現(xiàn)極簡設計 137
8.4.1 留白 137
8.4.2 去除設計元素 138
8.4.3 移除特性 140
8.4.4 減少字體和顏色 140
8.4.5 一以貫之 141
8.5 小結 142
第9章 專注 143
9.1 對抗復雜性的武器 143
9.2 統(tǒng)一原則 146
9.2.1 80/20原則 146
9.2.2 打造最小可行產(chǎn)品 146
9.2.3 編寫整潔和簡單的代碼 146
9.2.4 過早優(yōu)化是萬惡之源 147
9.2.5 心流 147
9.2.6 做好一件事(Unix) 147
9.2.7 設計中的少即是多 148
9.3 小結 148
作者來信 149