最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

程序員修煉之道:通向務(wù)實(shí)的最高境界(第2版)

2023-03-17 21:54 作者:莎士比亞騎著三輪車(chē)  | 我要投稿

鏈接:https://pan.baidu.com/s/1oJ8u8eoEp6AjZB0nzSjcRw?pwd=e2hl?

提取碼:e2hl


編輯推薦

適讀人群 :無(wú)論你是一個(gè)新的程序員,一個(gè)有經(jīng)驗(yàn)的程序員,還是一個(gè)負(fù)責(zé)軟件項(xiàng)目的經(jīng)理,都會(huì)通過(guò)本書(shū)獲得個(gè)人生產(chǎn)力、準(zhǔn)確性和工作滿意度的提高,從中習(xí)得的學(xué)習(xí)技能、習(xí)慣和態(tài)度,都將是你在職業(yè)生涯中獲得長(zhǎng)期成功的基礎(chǔ)。

√ 屹立 20 年影響力大作,成功案例數(shù)以千萬(wàn)計(jì),凌駕于任何語(yǔ)言|框架|方法之上。

√ 面向未來(lái)重寫(xiě)全部?jī)?nèi)容,從程序員責(zé)任與職業(yè)發(fā)展,到靈活|易適配|可重用架構(gòu)。

√ 53個(gè)核心話題|99個(gè)高能提示,闡明軟件開(kāi)發(fā)走向卓越之路及途中各種典型陷阱。

√ 編程界傳奇人物云風(fēng)操刀翻譯,至理|奧義|案例|技巧之原著精微,無(wú)不掘至毫巔。

◎與“軟件腐爛”做斗爭(zhēng)

◎持續(xù)學(xué)習(xí)

◎避免知識(shí)重復(fù)的陷阱

◎?qū)懗鲇袕椥?、?dòng)態(tài)、適配性強(qiáng)的代碼

◎駕馭基本工具的力量

◎避免依賴巧合編程

◎?qū)W習(xí)真正的需求

◎解決并發(fā)代碼的底層問(wèn)題

◎防范安全漏洞

◎建立務(wù)實(shí)程序員構(gòu)成的團(tuán)隊(duì)

◎?qū)δ愕墓ぷ骱褪聵I(yè)負(fù)責(zé)

◎無(wú)情而有效地做測(cè)試,包括基于特性的測(cè)試

◎組建務(wù)實(shí)的入門(mén)套件

◎取悅你的用戶

內(nèi)容簡(jiǎn)介

《程序員修煉之道》之所以在全球范圍內(nèi)廣泛傳播,被一代代開(kāi)發(fā)者奉為圭臬,蓋因它可以創(chuàng)造出真正的價(jià)值:或編寫(xiě)出更好的軟件,或探究出編程的本質(zhì),而所有收獲均不依賴于特定語(yǔ)言、框架和方法。時(shí)隔20年的新版,經(jīng)過(guò)全面的重新選材、組織和編寫(xiě),覆蓋哲學(xué)、方法、工具、設(shè)計(jì)、解耦、并發(fā)、重構(gòu)、需求、團(tuán)隊(duì)等務(wù)實(shí)話題的最佳實(shí)踐及重大陷阱,以及易于改造、復(fù)用的架構(gòu)技術(shù)。本書(shū)極具洞察力與趣味性,適合從初學(xué)者到架構(gòu)師的各階層讀者潛心研讀或增廣見(jiàn)聞。


作者簡(jiǎn)介

Dave Thomas喜歡駕駛單引擎飛機(jī)飛行,而之所以能負(fù)擔(dān)這樣奢侈的愛(ài)好,是因?yàn)樗瞄L(zhǎng)于為各種難題尋找優(yōu)雅的解決方案,提供諸多領(lǐng)域的咨詢服務(wù)——航空、銀行、金融服務(wù)、電信、交通運(yùn)輸及互聯(lián)網(wǎng)。在于1994年移居美國(guó)前,Dave在英國(guó)創(chuàng)立了一家通過(guò)ISO9001認(rèn)證的軟件公司,為世界各地的客戶開(kāi)發(fā)成熟、定制的軟件項(xiàng)目。Dave現(xiàn)在是一位獨(dú)立顧問(wèn),居住在美國(guó)得克薩斯州達(dá)拉斯。

Andy Hunt是一位熱情的木匠和音樂(lè)家。奇怪的是,他另一個(gè)顧問(wèn)的身份更為人們所推崇。他的工作領(lǐng)域包括電信、銀行、金融服務(wù)、公共服務(wù),以及一些更奇特的領(lǐng)域,比如醫(yī)學(xué)成像、圖形藝術(shù)、互聯(lián)網(wǎng)服務(wù)。Andy的專(zhuān)長(zhǎng)是把經(jīng)過(guò)驗(yàn)證的技術(shù)與先進(jìn)的技術(shù)融合在一起,創(chuàng)建各種新穎且實(shí)用的解決方案。Andy在美國(guó)北卡羅萊納州羅利市擁有自己的顧問(wèn)公司。


譯者云風(fēng)(真名吳云洋),曾任網(wǎng)易杭州研究中心總監(jiān),是網(wǎng)易《大話西游》《夢(mèng)幻西游》等知名游戲的主要開(kāi)發(fā)者;2011 年與前網(wǎng)易 COO 詹鐘暉聯(lián)合創(chuàng)辦簡(jiǎn)悅(EJOY)游戲公司,兼任 CTO,現(xiàn)該公司已被阿里收購(gòu);在互聯(lián)網(wǎng)、游戲界擁有較高技術(shù)影響力,常年發(fā)表博客文章,并著有《游戲之旅》及《Effective C++(評(píng)注版)》。

精彩書(shū)評(píng)

這樣的贊美一直不絕于耳:通過(guò)撰寫(xiě)一本書(shū)來(lái)推動(dòng)整個(gè)行業(yè),是 Andy 和 Dave 用《程序員修煉之道:從小工到專(zhuān)家》完成的一大壯舉,無(wú)人可以超過(guò)。然而,有時(shí)兩次閃電的確會(huì)擊中同一個(gè)地方,這部名著的再版即為明證。其令人震撼的內(nèi)容更新,足以確保自身在未來(lái)二十年里繼續(xù)雄踞“精選軟件開(kāi)發(fā)圖書(shū)”榜單之首,此可謂實(shí)至名歸。

—— VM (Vicky) Brasseur

瞻博網(wǎng)絡(luò)開(kāi)源戰(zhàn)略總監(jiān)


如果想讓自己的軟件既領(lǐng)先于時(shí)代又易于維護(hù),就在手邊擺放一本《程序員修煉之道:通向務(wù)實(shí)的最高境界(第2版)》。本書(shū)充滿實(shí)用建議,有技術(shù)方面的,也有專(zhuān)業(yè)方面的,無(wú)不能讓你和你的項(xiàng)目受益多年。

—— Andrea Goulet

Corgibytes 公司 CEO

LegacyCode.Rocks 創(chuàng)始人


可以說(shuō),《程序員修煉之道》完全改變了我的職業(yè)軌跡,為我指明了軟件領(lǐng)域的成功方向。正是這本書(shū),開(kāi)闊了我的視野,讓我意識(shí)到自己不僅僅是龐大機(jī)器上的一枚齒輪,有朝一日也能藉由修煉成為匠師。它是我生命中重要的一本書(shū)。

—— Obie Fernandez

《Rails 之道》作者


初讀此書(shū)的讀者,在見(jiàn)識(shí)到那個(gè)軟件開(kāi)發(fā)實(shí)踐的新世界時(shí),立刻充滿期待。而第一版圖書(shū),對(duì)塑造這樣一個(gè)迷人的現(xiàn)代世界,的確厥功至偉。現(xiàn)在,第一版的讀者將有機(jī)會(huì)在新版中重溫舊夢(mèng),再次接受洞察力和實(shí)踐智慧的洗禮,而《程序員修煉之道》當(dāng)初正因此被奉為圭臬。更重要的是,經(jīng)由兩位專(zhuān)家親手組織與更新的再版圖書(shū),業(yè)已因富含新知而重?zé)ㄇ啻骸?/p>

—— David A. Black

《Ruby程序員修煉之道》作者


舊版的《程序員修煉之道》一直駐留在我的書(shū)架上。從很久以前它改變我作為一個(gè)程序員的工作方式那一刻起,我讀了又讀。在這個(gè)全新的版本中,一切似乎都已改變,而一切又仿佛還在那里。雖然我們現(xiàn)在換用 iPad 閱讀新版,其代碼示例也改由現(xiàn)代編程語(yǔ)言實(shí)現(xiàn)——但是蘊(yùn)藏其中的概念、思想和態(tài)度,亙古不變且通行宇宙。二十年過(guò)去,這本書(shū)的價(jià)值從未折損?,F(xiàn)在乃至將來(lái)的開(kāi)發(fā)人員,都有機(jī)會(huì)從 Andy 和 Dave 的深刻洞見(jiàn)中獲益,正如當(dāng)年的我一樣,這讓人備感欣慰。

—— Sandy Mamoli

敏捷教練

How Self-Selection Lets People Excel 作者


二十年前,《程序員修煉之道》的第一版徹底顛覆了我的技術(shù)生涯。這次的新版,也將對(duì)你有此影響。

—— Mike Cohn

《Scrum敏捷軟件開(kāi)發(fā)》

《敏捷估計(jì)與規(guī)劃》

《用戶故事與敏捷方法》作者



目錄

序 XVII

新版前言 XXI

第一版前言 XV

提示1:關(guān)注你的技藝 XVII

如果你不關(guān)心怎么做好,為什么還要花時(shí)間去開(kāi)發(fā)軟件呢?

提示2:思考!思考你的工作 XVII

關(guān)掉輔助駕駛,由自己掌控,持續(xù)不斷地評(píng)估所做的工作。

第1章 務(wù)實(shí)的哲學(xué) 1

1 人生是你的 2

提示3:你有權(quán)選擇 3

人生是自己的。把握住人生,讓它如你所愿。

2 我的源碼被貓吃了 3

提示4:提供選擇,別找借口 5

提供選擇而不是去找理由。不要只說(shuō)做不到;解釋一下都能做些什么。

3 軟件的熵 6

提示5:不要放任破窗 7

只要看到不好的設(shè)計(jì)、錯(cuò)誤的決策、糟糕的代碼,就趕緊去糾正。

4 石頭做的湯和煮熟的青蛙 9

提示6:做推動(dòng)變革的催化劑 10

你無(wú)法強(qiáng)迫人們?nèi)ジ淖?,但可以展示美好未?lái),并幫助他們參與創(chuàng)造。

提示7:牢記全景 10

不要過(guò)度沉浸于細(xì)枝末節(jié),以免察覺(jué)不到周?chē)诎l(fā)生的事情。

5 夠好即可的軟件 11

提示8:將質(zhì)量要求視為需求問(wèn)題 12

讓用戶參與對(duì)項(xiàng)目真實(shí)質(zhì)量需求的確定。

6 知識(shí)組合 14

提示9:對(duì)知識(shí)組合做定期投資 16

養(yǎng)成學(xué)習(xí)的習(xí)慣。

提示10:批判性地分析你讀到和聽(tīng)到的東西 18

不要受供應(yīng)商、媒體炒作或教條的影響,根據(jù)自身和項(xiàng)目的實(shí)際情況來(lái)分析信息。

7 交流! 20

提示11:英語(yǔ)就是另一門(mén)編程語(yǔ)言 20

將英語(yǔ)視作一門(mén)編程語(yǔ)言。寫(xiě)文檔和編程一樣要遵循 DRY 原則、ETC、自動(dòng)化等。

提示12:說(shuō)什么和怎么說(shuō)同樣重要 23

如果無(wú)法有效交流,任何偉大的想法都是沒(méi)有意義的。

提示13:把文檔嵌進(jìn)去,而不要栓在表面 24

與代碼隔離的文檔,很難保持正確并及時(shí)更新。

第2章 務(wù)實(shí)的方法 27

8 優(yōu)秀設(shè)計(jì)的精髓 28

提示14:優(yōu)秀的設(shè)計(jì)比糟糕的設(shè)計(jì)更容易變更 28

適合使用者的事物,都已經(jīng)過(guò)良好設(shè)計(jì)。對(duì)代碼來(lái)說(shuō),這意味著必須適應(yīng)變化。

9 DRY——邪惡的重復(fù) 30

提示15:DRY——不要重復(fù)自己 31

系統(tǒng)中的每一條知識(shí),都必須有單一且無(wú)歧義的權(quán)威陳述。

提示16:讓復(fù)用變得更容易 39

只要復(fù)用方便,人們就會(huì)去做。創(chuàng)建一個(gè)支持復(fù)用的環(huán)境。

10 正交性 40

提示17:消除不相關(guān)事物之間的影響 41

設(shè)計(jì)的組件,需要自成一體、獨(dú)立自主,有單一的清晰定義的意圖。

11 可逆性 48

提示18:不設(shè)最終決定 50

不要把決定刻在石頭上,而要將其視為寫(xiě)在沙灘上的東西,時(shí)刻準(zhǔn)備應(yīng)變。

提示19:放棄追逐時(shí)尚 50

尼爾·福特說(shuō)過(guò):“昨日之最佳實(shí)踐,即明日之反模式?!币诨驹瓌t去選擇架構(gòu),而不應(yīng)盲從于流行。

12 曳光彈 51

提示20:使用曳光彈找到目標(biāo) 53

通過(guò)不斷嘗試并看清著彈點(diǎn),曳光彈可確保你最終擊中目標(biāo)。

13 原型與便簽 57

提示21:用原型學(xué)習(xí) 58

制作原型旨在學(xué)習(xí)經(jīng)驗(yàn),其價(jià)值不在于過(guò)程中產(chǎn)生的代碼,而在于得到的教訓(xùn)。

14 領(lǐng)域語(yǔ)言 60

提示22:靠近問(wèn)題域編程 61

用問(wèn)題領(lǐng)域的語(yǔ)言來(lái)做設(shè)計(jì)和編程。

15 估算 67

提示23:通過(guò)估算來(lái)避免意外 67

開(kāi)始之前做估算,能提前發(fā)現(xiàn)潛在問(wèn)題。

提示24:根據(jù)代碼不斷迭代進(jìn)度表 72

利用實(shí)施過(guò)程中獲得的經(jīng)驗(yàn)來(lái)精細(xì)化項(xiàng)目的時(shí)間尺度。

第3章 基礎(chǔ)工具 74

16 純文本的威力 75

提示25:將知識(shí)用純文本保存 76

純文本不會(huì)過(guò)時(shí)。它能夠讓你的工作事半功倍,并能簡(jiǎn)化調(diào)試和測(cè)試工作。

17 Shell游戲 79

提示26:發(fā)揮 Shell 命令的威力 80

當(dāng)圖形化界面無(wú)法勝任時(shí),使用 Shell。

18 加強(qiáng)編輯能力 82

提示27:游刃有余地使用編輯器 82

既然編輯器是至關(guān)重要的工具,不妨了解一下如何用它更快更準(zhǔn)確地實(shí)現(xiàn)需求。

19 版本控制 85

提示28:永遠(yuǎn)使用版本控制 87

版本控制為你的工作創(chuàng)造了一個(gè)時(shí)間機(jī)器,可以用它重返過(guò)去。

20 調(diào)試 90

提示29:去解決問(wèn)題,而不是責(zé)備 91

Bug 到底來(lái)自你的失誤還是別人的失誤真的不重要——它終究是你的問(wèn)題,需要你來(lái)修復(fù)。

提示30:不要恐慌 91

不管是對(duì)銀河系搭車(chē)客,還是對(duì)開(kāi)發(fā)者來(lái)說(shuō),都應(yīng)這樣。

提示31:修代碼前先讓代碼在測(cè)試中失敗 93

在你修 Bug 前,先創(chuàng)建一個(gè)聚焦于該 Bug 的測(cè)試。

提示32:讀一下那些該死的出錯(cuò)信息 93

大多數(shù)異常都能告訴失敗之物與失敗之處。如果足夠幸運(yùn),你甚至能得到具體的參數(shù)值。

提示33:“select”沒(méi)出問(wèn)題 97

在操作系統(tǒng)或編譯器中發(fā)現(xiàn) Bug 非常罕見(jiàn),甚至在第三方產(chǎn)品或庫(kù)中也是如此。Bug 大多出現(xiàn)在應(yīng)用程序中。

提示34:不要假設(shè),要證明 97

在真實(shí)環(huán)境中證實(shí)你的假設(shè)——要依賴真實(shí)的數(shù)據(jù)及邊界條件。

21 文本處理 99

提示35:學(xué)習(xí)一門(mén)文本處理語(yǔ)言 99

既然每天都要花大量的時(shí)間與文本打交道,何不讓計(jì)算機(jī)幫你分擔(dān)一二?

22 工程日記 101

第4章 務(wù)實(shí)的偏執(zhí) 103

提示36:你無(wú)法寫(xiě)出完美的軟件 103

軟件不可能是完美的。對(duì)于在所難免的錯(cuò)誤,要保護(hù)代碼和用戶免受其影響。

23 契約式設(shè)計(jì) 104

提示37:通過(guò)契約進(jìn)行設(shè)計(jì) 107

代碼是否不多不少剛好完成它宣稱要做的事情,可以使用契約加以校驗(yàn)和文檔化。

24 死掉的程序不會(huì)說(shuō)謊 113

提示38:盡早崩潰 114

徹底死掉的程序通常比有缺陷的程序造成的損害要小。

25 斷言式編程 115

提示39:使用斷言去預(yù)防不可能的事情 115

如果一件事情不可能發(fā)生,那么就用斷言來(lái)確保其的確不會(huì)發(fā)生。斷言在校驗(yàn)?zāi)愕募僭O(shè),要使用斷言在不確定的世界中將你的代碼保護(hù)起來(lái)。

26 如何保持資源的平衡 119

提示40:有始有終 119

只要有可能,對(duì)資源進(jìn)行分配的函數(shù)或?qū)ο缶陀胸?zé)任去釋放該資源。


提示41:在局部行動(dòng) 122

將易變的變量維持在一個(gè)范圍內(nèi),打開(kāi)資源的過(guò)程要短暫且明顯可見(jiàn)。

27 不要沖出前燈范圍 127

提示42:小步前進(jìn)——由始至終 127

永遠(yuǎn)小步前進(jìn),不斷檢查反饋,并且在推進(jìn)前先做調(diào)整。

提示43:避免占卜 129

只在你能看到的范圍內(nèi)做計(jì)劃。

第5章 寧彎不折 130

28 解耦 131

提示44:解耦代碼讓改變更容易 132

耦合使事物緊緊綁定在一起,以至于很難只改變其中之一。

提示45:只管命令不要詢問(wèn) 133

不要從對(duì)象中取出值,在加以變換后再塞回去,讓對(duì)象自己來(lái)完成這些工作。

提示46:不要鏈?zhǔn)秸{(diào)用方法 135

當(dāng)訪問(wèn)某事物時(shí),使用的點(diǎn)號(hào)不要超過(guò)一個(gè)。

提示47:避免全局?jǐn)?shù)據(jù) 137

最好給每個(gè)方法增加一個(gè)額外的參數(shù)。

提示48:如果全局唯一非常重要,那么將它包裝到API 中 137

……但是,僅限于你真的非常希望它是全局的。

29 在現(xiàn)實(shí)世界中拋球雜耍 139

30 變換式編程 149

提示49:編程講的是代碼,而程序談的是數(shù)據(jù) 151

所有的程序都在變換數(shù)據(jù)——將輸入轉(zhuǎn)換為輸出。開(kāi)始用變換式方法來(lái)設(shè)計(jì)吧!

提示50:不要囤積狀態(tài),傳遞下去 156

不要把數(shù)據(jù)保持在函數(shù)或模塊的內(nèi)部,拿出來(lái)傳遞下去。

31 繼承稅 162

提示51:不要付繼承稅 165

考慮一下能更好滿足需求的替代方案,比如接口、委托或mixin。

提示52:盡量用接口來(lái)表達(dá)多態(tài) 167

無(wú)需繼承引入的耦合,接口就能明確描述多態(tài)性。

提示53:用委托提供服務(wù):“有一個(gè)”勝過(guò)“是一個(gè)” 167

不要從服務(wù)中繼承,應(yīng)該包含服務(wù)。

提示54:利用 mixin 共享功能 169

mixin 不必承擔(dān)繼承稅就可以給類(lèi)添加功能,而與接口結(jié)合可以讓多態(tài)不再令人痛苦。

32 配置 170

提示55:使用外部配置參數(shù)化應(yīng)用程序 170

如果代碼對(duì)一些在應(yīng)用程序發(fā)布后還有可能改變的值有所依賴,那么就在應(yīng)用外部維護(hù)這些值。

第6章 并發(fā) 174

33 打破時(shí)域耦合 175

提示56:通過(guò)分析工作流來(lái)提高并發(fā)性 176

利用用戶工作流中的并發(fā)性。

34 共享狀態(tài)是不正確的狀態(tài) 179

提示57:共享狀態(tài)是不正確的狀態(tài) 180

共享狀態(tài)會(huì)帶來(lái)無(wú)窮的麻煩,而且往往只有重啟才能解決。

提示58:隨機(jī)故障通常是并發(fā)問(wèn)題 186

或許時(shí)間和上下文的變化能暴露并發(fā)Bug,但并發(fā)Bug無(wú)法始終保持一致,也很難重現(xiàn)。

35 角色與進(jìn)程 187

提示59:用角色實(shí)現(xiàn)并發(fā)性時(shí)不必共享狀態(tài) 188

使用角色來(lái)管理并發(fā)狀態(tài),可以避免顯式的同步。

36 黑板 193

提示60:使用黑板來(lái)協(xié)調(diào)工作流 195

使用黑板來(lái)協(xié)調(diào)不相關(guān)的事實(shí)和代理人,能同時(shí)保持參與者之間的獨(dú)立性和孤立性。

第7章 當(dāng)你編碼時(shí) 198

37 聽(tīng)從蜥蜴腦 199

提示61:傾聽(tīng)你內(nèi)心的蜥蜴 201

當(dāng)編程舉步維艱時(shí),其實(shí)是潛意識(shí)在告訴你有什么地方不對(duì)勁。

38 巧合式編程 204

提示62:不要依賴巧合編程 207

只能依賴可靠的事物。注意偶然事件的復(fù)雜性,不要混淆快樂(lè)的巧合與有目的的計(jì)劃。

39 算法速度 210

提示63:評(píng)估算法的級(jí)別 214

在開(kāi)始編程前,對(duì)這件事情大概會(huì)花多長(zhǎng)時(shí)間要有概念。

提示64:對(duì)估算做測(cè)試 214

針對(duì)算法的數(shù)學(xué)分析無(wú)法說(shuō)明所有問(wèn)題,嘗試在目標(biāo)環(huán)境中測(cè)試一下執(zhí)行代碼的耗時(shí)。

40 重構(gòu) 216

提示65:盡早重構(gòu),經(jīng)常重構(gòu) 219

像除草和翻整花園那樣,只要有需要就對(duì)代碼進(jìn)行重新編寫(xiě)、修訂和架構(gòu),以便找到問(wèn)題的根源并加以修復(fù)。

41 為編碼測(cè)試 220

提示66:測(cè)試與找 Bug 無(wú)關(guān) 221

測(cè)試是觀察代碼的一個(gè)視角,可以從中得到針對(duì)設(shè)計(jì)、接口和耦合度的反饋。

提示67:測(cè)試是代碼的第一個(gè)用戶 222

用測(cè)試的反饋來(lái)引導(dǎo)工作。

提示68:既非自上而下,也不自下而上,基于端對(duì)端構(gòu)建 225

創(chuàng)建一小塊端到端的功能,從中獲悉問(wèn)題之所在。

提示69:為測(cè)試做設(shè)計(jì) 228

寫(xiě)下代碼之前先從測(cè)試角度思考。

提示70:要對(duì)軟件做測(cè)試,否則只能留給用戶去做 230

無(wú)情地測(cè)試,不要等用戶來(lái)幫你找 Bug。

42 基于特性測(cè)試 231

提示71:使用基于特性的測(cè)試來(lái)校驗(yàn)假設(shè) 231

基于特性的測(cè)試將會(huì)進(jìn)行你從未想過(guò)的嘗試,并會(huì)以你不曾打算采用的方式操練你的代碼。

43 出門(mén)在外注意安全 238

提示72:保持代碼簡(jiǎn)潔,讓攻擊面最小 241

復(fù)雜的代碼給 Bug 以滋生之沃土,給攻擊者以可趁之機(jī)。

提示73:盡早打上安全補(bǔ)丁 243

攻擊者會(huì)盡可能快地部署攻擊,你必須快上加快。

44 事物命名 245

提示74:好好取名;需要時(shí)更名 249

用名字向讀者表達(dá)你的意圖,并且在意圖改變時(shí)及時(shí)更名。

第8章 項(xiàng)目啟動(dòng)之前 251

45 需求之坑 252

提示75:無(wú)人確切知道自己想要什么 252

他們或許知道大概的方向,但不會(huì)了解過(guò)程的曲折。

提示76:程序員幫助人們理解他們想要什么 253

軟件開(kāi)發(fā)更像是一種由用戶和程序員協(xié)同創(chuàng)造的行為。

提示77:需求是從反饋循環(huán)中學(xué)到的 254

理解需求需要探索和反饋,因此決策的結(jié)果可以用來(lái)完善最初的想法。

提示78:和用戶一起工作以便從用戶角度思考 255

這是看透系統(tǒng)將如何被真正使用的最佳方法。

提示79:策略即元數(shù)據(jù) 256

不要將策略硬編碼進(jìn)系統(tǒng),而應(yīng)該將其表達(dá)為系統(tǒng)的一組元數(shù)據(jù)。

提示80:使用項(xiàng)目術(shù)語(yǔ)表 259

為項(xiàng)目的所有特定詞匯創(chuàng)建一張術(shù)語(yǔ)表,并且在單一源頭維護(hù)。

46 處理無(wú)法解決的難題 260

提示81:不要跳出框框思考——找到框框 261

在面對(duì)無(wú)法解決的難題時(shí),識(shí)別出真正的約束??梢詥?wèn)自己:“必須這樣做才能搞定嗎?必須搞定它嗎?”

47 攜手共建 264

提示82:不要一個(gè)人埋頭鉆進(jìn)代碼中 267

編程往往困難又費(fèi)力,找個(gè)朋友和你一起干。

提示83:敏捷不是一個(gè)名詞;敏捷有關(guān)你如何做事 267

敏捷是一個(gè)形容詞,有關(guān)如何做事情。

48 敏捷的本質(zhì) 267

第9章 務(wù)實(shí)的項(xiàng)目 271

49 務(wù)實(shí)的團(tuán)隊(duì) 272

提示84:維持小而穩(wěn)定的團(tuán)隊(duì) 272

團(tuán)隊(duì)?wèi)?yīng)保持穩(wěn)定、小巧,團(tuán)隊(duì)中的每個(gè)人都應(yīng)相互信任、互相依賴。

提示85:排上日程以待其成 274

如果你不把事情納入日程表,它們就不會(huì)發(fā)生。反思、實(shí)驗(yàn)、學(xué)習(xí)、提高技能,這些事都應(yīng)放入日程表。

提示86:組織全功能的團(tuán)隊(duì) 276

圍繞功能而不是工作職能組織團(tuán)隊(duì)。不要將 UI/UX 設(shè)計(jì)者從程序員中分離出去,也不要分開(kāi)前端和后端;不要區(qū)分?jǐn)?shù)據(jù)建模者和測(cè)試人員,以及開(kāi)發(fā)和設(shè)計(jì)。構(gòu)建一個(gè)團(tuán)隊(duì),這樣你就可以漸進(jìn)地不斷迭代端到端的代碼。

50 椰子派不上用場(chǎng) 277

提示87:做能起作用的事,別趕時(shí)髦 279

不要僅僅因?yàn)閯e的公司正在那么干就采納一項(xiàng)技術(shù)或采用一個(gè)開(kāi)發(fā)方法,而是要采用自己所處環(huán)境中對(duì)團(tuán)隊(duì)有效的東西。

提示88:在用戶需要時(shí)交付 281

不要卡著流程要求,刻意等到幾周甚至幾個(gè)月后才交付。

51 務(wù)實(shí)的入門(mén)套件 281

提示89:使用版本控制來(lái)驅(qū)動(dòng)構(gòu)建、測(cè)試和發(fā)布 282

利用提交或推送來(lái)觸發(fā)構(gòu)建、測(cè)試、發(fā)布,利用版本控制的標(biāo)簽來(lái)進(jìn)行生產(chǎn)部署。

提示90:盡早測(cè)試,經(jīng)常測(cè)試,自動(dòng)測(cè)試 283

每次構(gòu)建都跑一下的測(cè)試,要比束之高閣的測(cè)試計(jì)劃有效得多。

提示91:直到所有的測(cè)試都已運(yùn)行,編碼才算完成 283

無(wú)須多言。

提示92:使用破壞者檢測(cè)你的測(cè)試 285

在一個(gè)單獨(dú)的源碼副本中特意引入 Bug,驗(yàn)證測(cè)試能否將其捕獲。

提示93:測(cè)試狀態(tài)覆蓋率,而非代碼覆蓋率 286

要識(shí)別并測(cè)試重要的程序狀態(tài),只測(cè)試一行行的代碼是不夠的。

提示94:每個(gè) Bug 只找一次 286

只要人類(lèi)測(cè)試者找到一個(gè) Bug ,就應(yīng)該是該 Bug 最后一次被人類(lèi)發(fā)現(xiàn)。從此之后,自動(dòng)化測(cè)試完全可以發(fā)現(xiàn)它。

提示95:不要使用手動(dòng)程序 287

計(jì)算機(jī)能一次又一次,按照同樣的次序,執(zhí)行相同的指令。

52 取悅用戶 288

提示96:取悅用戶,而不要只是交付代碼 289

為用戶開(kāi)發(fā)能夠帶來(lái)商業(yè)價(jià)值的解決方案,并讓他們每天都感到愉快。

提示97:在作品上簽名 290

過(guò)去的工匠在為他們的作品簽名時(shí)非常自豪,你也應(yīng)該這樣。

53 傲慢與偏見(jiàn) 290

跋 292

提示98:先勿傷害 293

犯錯(cuò)在所難免,確保犯錯(cuò)后沒(méi)人會(huì)因此受難。

提示99:不要助紂為虐 294

因?yàn)檫@樣做你也有變成紂王的風(fēng)險(xiǎn)。

參考文獻(xiàn) 295

練習(xí)的參考答案 297

譯者跋 312


查看全部↓

精彩書(shū)摘

我還記得 Dave 和 Andy 第一次在推特上談?wù)撨@本書(shū)的新版的那一刻——這可是一條大新聞。在編程社區(qū),所見(jiàn)之處都是對(duì)這條大新聞興奮的回應(yīng),人們的期待塞滿了我的信息流。二十年過(guò)去了,《程序員修煉之道》這本書(shū)的地位不遜于當(dāng)年。

承載這樣一段歷史的一本書(shū),能引起這樣的反響,本身就說(shuō)明了很多問(wèn)題。為了寫(xiě)這篇序,我有幸在尚未出版前閱讀了本書(shū),讀后我就明白了它為什么會(huì)引起這么大的轟動(dòng)。本來(lái),一本書(shū)被冠以技術(shù)圖書(shū)之名,給人的印象應(yīng)該是不太好的。因?yàn)榧夹g(shù)圖書(shū)常常令人生畏——充斥著深?yuàn)W的詞匯、晦澀的術(shù)語(yǔ)和令人費(fèi)解的例子,不經(jīng)意間就會(huì)讓你覺(jué)得自己很愚蠢。而且,作者越有經(jīng)驗(yàn),就越容易忘記初學(xué)者在學(xué)習(xí)新概念時(shí)的感覺(jué)。

Dave 和 Andy 的作品,卻能透出那種只有剛剛學(xué)到這些課程的人才會(huì)有的興奮感,盡管他們已有幾十年的編程經(jīng)驗(yàn),卻戰(zhàn)勝了寫(xiě)出這種感覺(jué)的挑戰(zhàn)。他們不會(huì)居高臨下地指指點(diǎn)點(diǎn),不會(huì)假定你是個(gè)專(zhuān)家,甚至不認(rèn)為你已讀過(guò)本書(shū)第一版,僅僅把你當(dāng)成想要變得更好的程序員而已。他們不惜用整本書(shū)的篇幅來(lái)幫助你達(dá)到目標(biāo),一步一個(gè)腳印。

公平地說(shuō),在這方面,他們?cè)谶^(guò)往已經(jīng)成績(jī)斐然。最初的本書(shū)第一版,包含了許多具體的例子、新想法和實(shí)用的技巧,可以幫助你修煉編程所需的“肌肉”和“大腦”,這些東西到今天仍然適用。但是,這次在新版圖書(shū)中,又有了兩項(xiàng)改進(jìn)。


程序員修煉之道:通向務(wù)實(shí)的最高境界(第2版)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
云浮市| 嘉祥县| 张北县| 巴林左旗| 栖霞市| 鸡西市| 南陵县| 上饶县| 邮箱| 吴旗县| 旅游| 鄂伦春自治旗| 绥德县| 峨眉山市| 青铜峡市| 咸宁市| 时尚| 湖州市| 河南省| 旺苍县| 新兴县| 壶关县| 贵港市| 普定县| 偃师市| 芦山县| 崇礼县| 祥云县| 边坝县| 榆林市| 枣阳市| 眉山市| 崇左市| 苍梧县| 醴陵市| 南平市| 曲靖市| 岳阳市| 宜黄县| 韩城市| 海丰县|