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