出版時間:2011-1 出版社:電子工業(yè)出版社 作者:Andrew Hunt,David Thomas 頁數(shù):272 譯者:馬維達
Tag標(biāo)簽:無
前言
作為評閱者,我得到了提早閱讀你拿在手上的這本書的機會。即使當(dāng)時還只是草稿,它就已是一本很好的書。Dave Thomas和Andy Hunt有話要說,并且知道怎樣去說。我見過他們所做的事情,知道他們所說的將是有效的。我請求讓我來撰寫這篇前言,以便有機會向你解釋其中的原因。簡而言之,本書將告訴你怎樣以一種你能夠遵循的方式去編程。也許你不認(rèn)為這是一件困難的事情,但事情卻并非如此。為什么?原因之一是,并非所有的編程書籍都是由程序員撰寫的。其中有許多是由語言設(shè)計者、或是與他們有合作關(guān)系的報刊記者編撰而成,意在推銷他們的作品。那些書告訴你怎樣通過某種編程語言進行表達——這當(dāng)然很重要,但卻只是程序員所做的事情的一小部分。除了通過編程語言進行表達,程序員還要做些什么?嗯,這是一個更深入的問題。大多數(shù)程序員在解釋他們所做的事情這個問題上都會有困難。編程是一項充滿了各種細(xì)節(jié)的工作,追蹤這些細(xì)節(jié)需要專注。時間流逝、代碼出現(xiàn),你查看它們,那里全是些語句。如果你不仔細(xì)思考,你也許會以為編程不過就是敲入某種編程語言的語句。你當(dāng)然錯了,但找遍書店的編程專柜,你卻還是講不出所以然。在《程序員修煉之道》一書中,Dave和Andy將告訴我們怎樣以一種我們能夠遵循的方式編程。他們何以能這樣聰明?他們不也是和其他程序員一樣,專注于各種細(xì)節(jié)而已嗎?答案是他們在做某件事情時,會把注意力投注在他們在做的事情上——然后他們會試著把它做得更好。設(shè)想你在參加一個會議。或許你在想,這個會議沒完沒了,你還不如去寫程序。而Dave和Andy會想,他們?yōu)槭裁丛陂_會,他們想知道是否可以通過另外的方式取代會議,并決定是否可使某樣事情自動化,以使開會的工作推后。然后他們就會這樣去做。這就是Dave和Andy思考的方式。開會并非是某種使他們遠(yuǎn)離編程的事情。開會就是編程,并且是能夠加以改善的編程。我之所以知道他們以這樣的方式思考,是因為這是書中的第二條提示:思考你的工作。那么再設(shè)想一下,他們這樣思考了幾年。很快他們就會擁有一堆解決方案?,F(xiàn)在設(shè)想他們在工作中使用這些解決方案,又是幾年;他們還放棄了其中太過困難、或者不能總是產(chǎn)生結(jié)果的解決方案。噢,這樣的途徑幾乎定義了“pragmatic”(注重實效)的含義。現(xiàn)在設(shè)想他們又用了一兩年來寫下他們的解決方案。你也許會想,這些信息可真是金礦。你想對了。兩位作者告訴我們他們是怎樣編程的,并且是以一種我們能夠遵循的方式來告訴我們的。但這一陳述的后半部分的含義也許要多于你所想到的。讓我來解釋一下。
內(nèi)容概要
《程序員修煉之道》由一系列獨立的部分組成,涵蓋的主題從個人責(zé)任、職業(yè)發(fā)展,直到用于使代碼保持靈活、并且易于改編和復(fù)用的各種架構(gòu)技術(shù),利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比,全面闡釋了軟件開發(fā)的許多不同方面的最佳實踐和重大陷阱。無論你是初學(xué)者,是有經(jīng)驗的程序員,還是軟件項目經(jīng)理,本書都適合你閱讀。
作者簡介
作者:(美國)亨特(Andrew Hunt) (美國)托馬斯(David Thomas) 譯者:馬維達亨特(Andy Hunt)是一位熱切的木匠和音樂家,但奇怪的是,人們更需要作為顧問的他。他的工作領(lǐng)域包括電信、銀行、金融服務(wù)、公共服務(wù),以及一些更奇特的領(lǐng)域,比如醫(yī)學(xué)成像、圖形藝術(shù)、Internet服務(wù)。Andy的專長是把經(jīng)過驗證的技術(shù)與先進的技術(shù)混合在一起,創(chuàng)建各種新穎的——但也是實用的——解決方案。Andy在北卡羅萊納州的羅利市擁有自己的顧問公司。托馬斯(Dave Thomas),喜歡駕駛單引擎飛機飛行,并通過這樣的方式為他的習(xí)慣付賬:為各種難題尋找優(yōu)雅的解決方案,提供諸多領(lǐng)域里的咨詢服務(wù)——航空、銀行、金融服務(wù)、電信、交通運輸及Internet。 在于1994年移居美國前,Dave在英國創(chuàng)立了一家通過ISO9001認(rèn)證的軟件公司,為世界各地的客戶開發(fā)成熟、定制的軟件項目。Dave現(xiàn)在是一位獨立顧問,居住在德克薩斯州的達拉斯。 以The Pragmatic Programmer,L.L.C的名義,Dave與Andy正在協(xié)同工作,把合起來超過四十年的專業(yè)經(jīng)驗帶給美國各地的客戶。譯者簡介:馬維達,《C++網(wǎng)絡(luò)編程(卷2)》與《ACE自適配通信環(huán)境技術(shù)文檔》的譯者,技術(shù)興趣為C++網(wǎng)絡(luò)編程(ACE)與分布式對象計算(Internet Communications Engine)
書籍目錄
前言
序
第1章 注重實效的哲學(xué)
1 我的源碼讓貓給吃了
2 軟件的熵
3 石頭湯與煮青蛙
4 足夠好的軟件
5 你的知識資產(chǎn)
6 交流
第2章 注重實效的途徑
7 重復(fù)的危害
8 正交性
9 可撤消性
10 曳光彈
11 原型與便箋
12 領(lǐng)域語言
13 估算
第3章 基本工具
14 純文本的威力
15 shell游戲
16 強力編輯
17 源碼控制
18 調(diào)試
19 文本操縱
20 代碼生成器
第4章 注重實效的偏執(zhí)
21 按合約設(shè)計
22 死程序不說謊
23 斷言式編程
24 何時使用異常
25 怎樣配平資源
第5章 彎曲,或折斷
26 解耦與得墨忒耳法則
27 元程序設(shè)計
28 時間耦合
29 它只是視圖
30 黑板
第6章 當(dāng)你編碼時
31 靠巧合編程
32 算法速率
33 重構(gòu)
34 易于測試的代碼
35 邪惡的向?qū)?br />第7章 在項目開始之前
36 需求之坑
37 解開不可能解開的謎題
38 等你準(zhǔn)備好
39 規(guī)范陷阱
40 圓圈與箭頭
第8章 注重實效的項目
41 注重實效的團隊
42 無處不在的自動化
43 無情的測試
44 全都是寫
45 極大的期望
46 傲慢與偏見
附錄A 資源
專業(yè)協(xié)會
建設(shè)藏書庫
Internet資源
參考文獻
附錄B 練習(xí)解答
索引
注重實效的程序員之快速參考指南
章節(jié)摘錄
依據(jù)你的職業(yè)發(fā)展、你的項目和你每天的工作,為你自己和你的行為負(fù)責(zé)這樣一種觀念,是注重實效的哲學(xué)的一塊基石。注重實效的程序員對他或她自己的職業(yè)生涯負(fù)責(zé),并且不害怕承認(rèn)無知或錯誤。這肯定并非是編程最令人愉悅的方面,但它肯定會發(fā)生——即使是在最好的項目中。盡管有徹底的測試、良好的文檔以及足夠的自動化,事情還是會出錯。交付晚了,出現(xiàn)了未曾預(yù)見到的技術(shù)問題。發(fā)生這樣的事情,我們要設(shè)法盡可能職業(yè)地處理它們。這意味著誠實和坦率。我們可以為我們的能力自豪,但對于我們的缺點——還有我們的無知和我們的錯誤——我們必須誠實。責(zé)任是你主動擔(dān)負(fù)的東西。你承諾確保某件事情正確完成,但你不一定能直接控制事情的每一個方面。除了盡你所能以外,你必須分析風(fēng)險是否超出了你的控制。對于不可能做到的事情或是風(fēng)險太大的事情,你有權(quán)不去為之負(fù)責(zé)。你必須基于你自己的道德準(zhǔn)則和判斷來做出決定。如果你確實同意要為某個結(jié)果負(fù)責(zé),你就應(yīng)切實負(fù)起責(zé)任。當(dāng)你犯錯誤(就如同我們所有人都會犯錯誤一樣)、或是判斷失誤時,誠實地承認(rèn)它,并設(shè)法給出各種選擇。不要責(zé)備別人或別的東西,或是拼湊借口。不要把所有問題都?xì)w咎于供應(yīng)商、編程語言、管理部門、或是你的同事。也許他(它)們?nèi)w或是某幾方在其中扮演了某種角色,但你可以選擇提供解決方案,而非尋找借口。如果存在供應(yīng)商不能按時供貨的風(fēng)險,你應(yīng)該預(yù)先制定一份應(yīng)急計劃。如果磁盤垮了——帶走了你的所有源碼一而你沒有做備份,那是你的錯。告訴你的老板“我的源碼讓貓給吃了”也無法改變這一點。
媒體關(guān)注與評論
“如果我在管理一個項目,這本書的作者就是我想要的人……如果辦不到,我就會要讀過他們的書的人。” ——Ward Cunningham
編輯推薦
《程序員修煉之道:從小工到專家》:傳承大師智慧 領(lǐng)悟技術(shù)本真經(jīng)典名著 翻譯良品 典藏不二之選
名人推薦
領(lǐng)悟程序員的哲學(xué)在大學(xué)的時候,編程是我的興趣,也是當(dāng)時我給自己定位的職業(yè)方向。當(dāng)我在圖書館看到這本《程序員修煉之道》的時候,直覺告訴我應(yīng)該看看這本書,或許對我的成長有幫助。讀完之后更加肯定了自己的直覺是對的。當(dāng)時我雖然沒有實際項目的開發(fā)經(jīng)驗,不能一時領(lǐng)悟其意,但我明白,這本書中總結(jié)的原則和方法對我來說是極為寶貴的,于是買了一本放在床頭。參加工作后,隨著編程經(jīng)驗的積累,我越來越能體會到這本書中的觀點。每次重讀書中的章節(jié),我都會有新的收獲;再結(jié)合自己的每次經(jīng)歷,都能與之共鳴——這是對我影響最深的一本書,也是我向朋友和同事推薦次數(shù)最多的一本書。有趣的是,書前Kevin Ruland的評論說:這是我唯一不會出借的一本書。究竟是一本什么樣的書會讓大師如此愛不釋手?這本書所涉及的內(nèi)容很廣,涵蓋了程序員成長過程中和軟件開發(fā)過程中要注意的地方。從程序員的個體哲學(xué)到編碼過程中的各個環(huán)節(jié),再到團隊的項目管理;從程序員要如何擴充知識,如何思考問題,如何利用有效的工具打造個人的工作環(huán)境,到項目啟動之前如何建立一些基本準(zhǔn)則,如何分析、設(shè)計、編寫、測試、重構(gòu),如何實現(xiàn)自動化,甚至是項目團隊中提高實效的原則。書中的內(nèi)容全都來自經(jīng)驗的總結(jié),倡導(dǎo)編程中正確的觀念和良好的習(xí)慣,而這正是優(yōu)秀的程序員必須擁有的良好素質(zhì)。書中講述的原則源于實踐,高于實踐,它們蘊涵著前輩們的智慧。隨著知識的擴展、編程體驗的增加,對這本書中的內(nèi)容的理解也會愈加深刻。反過來,對前輩菁華的吸收,有助于我們提高編程水平,開發(fā)出更好的產(chǎn)品。我深信這不是一本只要讀一遍的書。這些原則看似簡單,但細(xì)細(xì)品味一番,卻是大哲大道,環(huán)環(huán)相扣,要理解透徹并不容易。例如,提示44告訴我們“不要靠巧合編程”,這道理看起來好像很簡單,但我發(fā)現(xiàn)實際工作中還是很容易就犯這個錯的。細(xì)想一下Bug列表中的問題,其中大多數(shù)問題不正是由于作了不正確的假設(shè),或者是想當(dāng)然造成的嗎?要是一開始就有了深思熟慮,經(jīng)過了合理的設(shè)計,完整有效地進行了測試,應(yīng)該大部分都可以避免吧。而思考、設(shè)計、測試又緊扣書中其他章節(jié)。曾經(jīng)和朋友討論關(guān)于員工培訓(xùn)的事。如果給程序員做培訓(xùn),我首選的材料就是這本《程序員修煉之道》。?LAMP程序員 趙鐘秋(belltoy)http://blog.belltoy.net/
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載