領(lǐng)悟程序員修煉之道!做注重實(shí)效的程序員!
經(jīng)典好書完美中文化! 譯筆精準(zhǔn)流暢,再現(xiàn)原著風(fēng)格。 頁頁對(duì)譯,完整保留原書索引,與全球程序員輕松交流。 以中英對(duì)照方式再現(xiàn)本書重要組成部分、必備的The Pragmatic Quick Reference Guide(影印版沒有此內(nèi)容)。 全球公認(rèn)的經(jīng)典! 全球好評(píng)如潮的經(jīng)典程序員“修煉”法則之匯集。[TODO] 名家傾力譯作! ACE文檔譯者、《C++網(wǎng)絡(luò)編程卷2》譯者馬維達(dá)先生最新譯作! 程序員必讀! 詳述程序員必須具備的各方面素質(zhì),歷數(shù)編碼、測(cè)試、工具使用、設(shè)計(jì)、軟件工程等各方面的技巧與原則,專家經(jīng)驗(yàn)盡收眼底。 以Tip形式總結(jié)出大師智慧結(jié)晶,條條直擊要害,句句入木三分。
目錄 第1章 注重實(shí)效的哲學(xué) 1 我的源碼讓貓給吃了 2 軟件的熵 3 石頭湯與煮青蛙 4 足夠好的軟件 5 你的知識(shí)資產(chǎn) 6 交流! 第2章 注重實(shí)效的途徑 7 重復(fù)的危害 8 正交性 9 可撤消性 10 曳光彈 11 原型與便箋 12 領(lǐng)域語言 13 估算 第3章 基本工具 14 純文本的威力 15 shell游戲 16 強(qiáng)力編輯 17 源碼控制 18 調(diào)試 19 文本操縱 20 代碼生成器 第4章 注重實(shí)效的偏執(zhí) 21 按合約設(shè)計(jì) 22 死程序不說謊 23 斷言式編程 24 何時(shí)使用異常 25 怎樣配平資源 第5章 彎曲,或折斷 26 解耦與得墨忒耳法則 27 元程序設(shè)計(jì) 28 時(shí)間耦合 29 它只是視圖 30 黑板 第6章 當(dāng)你編碼時(shí) 31 靠巧合編程 32 算法速率 33 重構(gòu) 34 易于測(cè)試的代碼 35 邪惡的向?qū)?nbsp; 第7章 在項(xiàng)目開始之前 36 需求之坑 37 解開不可能解開的謎題 38 等你準(zhǔn)備好 39 規(guī)范陷阱 40 圓圈與箭頭 第8章 注重實(shí)效的項(xiàng)目 41 注重實(shí)效的團(tuán)隊(duì) 42 無處不在的自動(dòng)化 一切都要自動(dòng)化 43 無情的測(cè)試 44 全都是寫 45 極大的期望 46 傲慢與偏見 附錄A 資源 專業(yè)協(xié)會(huì) 建設(shè)藏書庫 Internet資源 參考文獻(xiàn) 附錄B 練習(xí)解答 索引
內(nèi)容簡介 本書主要介紹了軟件開發(fā)的原則和方法。本書直指編程前沿,透過日益增長的現(xiàn)代軟件開發(fā)規(guī)范和技術(shù),對(duì)軟件開發(fā)的核心過程進(jìn)行了審視——以滿足用戶為本,針對(duì)用戶需求來產(chǎn)出高效、可維護(hù)的優(yōu)秀代碼。全書涵蓋內(nèi)容廣博,從個(gè)人責(zé)任和職業(yè)發(fā)展,到保持代碼靈活性并使之易于改動(dòng)和重用,多而不雜。本書采用了有趣的軼事、詳實(shí)的例子以及詼諧的對(duì)話等方式,描述了軟件開發(fā)方方面面的最佳實(shí)踐方案和各種缺陷。您從本書所學(xué)到的開發(fā)技巧、開發(fā)習(xí)慣以及職業(yè)態(tài)度,必將幫助您修煉成為一名真正的Pragmatic Programmer!
前言 作為評(píng)閱者,我得到了提早閱讀你拿在手上的這本書的機(jī)會(huì)。即使當(dāng)時(shí)還只是草稿,它就已是一本很好的書。Dave Thomas和Andy Hunt有話要說,并且知道怎樣去說。我見過他們所做的事情,知道他們所說的將是有效的。我請(qǐng)求讓我來撰寫這篇前言,以便有機(jī)會(huì)向你解釋其中的原因。 簡而言之,本書將告訴你怎樣以一種你能夠遵循的方式去編程。也許你不認(rèn)為這是一件困難的事情,但事情卻并非如此。為什么?原因之一是,并非所有的編程書籍都是由程序員撰寫的。其中有許多是由語言設(shè)計(jì)者、或是與他們有合作關(guān)系的報(bào)刊記者編撰而成,意在推銷他們的作品。那些書告訴你怎樣通過某種編程語言進(jìn)行表達(dá)——這當(dāng)然很重要,但卻只是程序員所做的事情的一小部分。 除了通過編程語言進(jìn)行表達(dá),程序員還要做些什么?嗯,這是一個(gè)更深入的問題。大多數(shù)程序員在解釋他們所做的事情這個(gè)問題上都會(huì)有困難。編程是一項(xiàng)充滿了各種細(xì)節(jié)的工作,追蹤這些細(xì)節(jié)需要專注。時(shí)間流逝、代碼出現(xiàn),你查看它們,那里全是些語句。如果你不仔細(xì)思考,你也許會(huì)以為編程不過就是敲入某種編程語言的語句。你當(dāng)然錯(cuò)了,但找遍書店的編程專柜,你卻還是講不出所以然。 在《程序員修煉之道》一書中,Dave和Andy將告訴我們?cè)鯓右砸环N我們能夠遵循的方式編程。他們何以能這樣聰明?他們不也是和其他程序員一樣,專注于各種細(xì)節(jié)而已嗎?答案是他們?cè)谧瞿臣虑闀r(shí),會(huì)把注意力投注在他們?cè)谧龅氖虑樯稀缓笏麄儠?huì)試著把它做得更好。 設(shè)想你在參加一個(gè)會(huì)議;蛟S你在想,這個(gè)會(huì)議沒完沒了,你還不如去寫程序。而Dave 和Andy會(huì)想,他們?yōu)槭裁丛陂_會(huì),他們想知道是否可以通過另外的方式取代會(huì)議,并決定是否可使某樣事情自動(dòng)化,以使開會(huì)的工作推后。然后他們就會(huì)這樣去做。這就是Dave和Andy思考的方式。開會(huì)并非是某種使他們遠(yuǎn)離編程的事情。開會(huì)就是編程,并且是能夠加以改善的編程。我之所以知道他們以這樣的方式思考,是因?yàn)檫@是書中的第二條提示:思考你的工作。那么再設(shè)想一下,他們這樣思考了幾年。很快他們就會(huì)擁有一堆解決方案,F(xiàn)在設(shè)想他們?cè)诠ぷ髦惺褂眠@些解決方案,又是幾年;他們還放棄了其中太過困難、或者不能總是產(chǎn)生結(jié)果的解決方案。噢,這樣的途徑幾乎定義了“pragmatic”(注重實(shí)效)的含義,F(xiàn)在設(shè)想他 們又用了一、兩年來寫下他們的解決方案。你也許會(huì)想,這些信息可真是金礦。你想對(duì)了。 兩位作者告訴我們他們是怎樣編程的,并且是以一種我們能夠遵循的方式來告訴我們的。但這一陳述的后半部分的含義也許要多于你所想到的。讓我來解釋一下。作者一直在小心避免提出軟件開發(fā)理論。這是一件幸運(yùn)的事情,因?yàn)槿绻麄兡菢幼隽,他們就不得不為了捍衛(wèi)他們的理論而對(duì)各章進(jìn)行“調(diào)整”。這樣的“調(diào)整”是,比如說,物理科學(xué)中的傳統(tǒng),在這些學(xué)科中,理論不是最終成為定律,就是被靜靜地丟棄。而另一方面,編程所具有的法則(如果有)卻非常少。所以圍繞想要成為法則的東西形成的編程建議在紙面上也許顯得很好,而在實(shí)踐中卻無法讓人滿意。這也是那么多方法學(xué)書籍誤入歧途之處。 我研究這一問題已有十多年,并發(fā)現(xiàn)一種叫做模式語言(pattern language)的方法最有前途。簡而言之,模式就是解決方案,而模式語言就是相互支援的若干解決方案的系統(tǒng)。圍繞著對(duì)這些系統(tǒng)的探求,已經(jīng)形成了一整個(gè)社群。 本書不只是一堆提示。它是一種“披著羊皮”的模式語言。我這樣說,是因?yàn)槊恳粭l提示都汲取自經(jīng)驗(yàn)、作為具體建議講授、并與其他提示關(guān)聯(lián)而形成系統(tǒng)。是這些特征使我們能夠?qū)W習(xí)并遵循模式語言。在本書中它們以同樣的方式發(fā)揮著作用。 你可以遵循本書的建議,因?yàn)樗鼈兪蔷唧w的。你不會(huì)發(fā)現(xiàn)含混不清的抽象。Dave和Andy直接為你而寫,就好像每一條提示都是能給你的編程生涯供給能量的重大策略。他們讓提示保持簡單,他們講故事,他們使用輕松的筆觸,他們接著還給出了各種問題的解答,這些問題將在你進(jìn)行嘗試時(shí)出現(xiàn)。 不僅如此。在你閱讀了十或十五條提示之后,你將開始看到工作的另外一個(gè)維度。我們有時(shí)稱之為“QWAN”,也即“quality without a name”(無名的品質(zhì))。本書的哲學(xué)將滲入你的意識(shí),并與你自己的哲學(xué)交融在一起。它不鼓吹,它只是講述什么可行。但在講述中卻又有更多的東西到臨。這正是本書美之所在:它體現(xiàn)它的哲學(xué),且是以如此謙遜的方式來體現(xiàn)。 這就是它:一本易于閱讀——也易于應(yīng)用——的關(guān)于整個(gè)編程實(shí)踐的書。我一直在不斷講述它為何有效,而你關(guān)心的也許只是它的確有效。它的確有效,你會(huì)看到的。
《程序員修煉之道——從小工到專家》(典藏書) 書評(píng):——轉(zhuǎn)貼自CSDN,作者: zhanghx6986 本人一向有周六逛書店的習(xí)慣,今天也不例外。今天高興的是在看書的時(shí)候有一個(gè)漂亮MM坐在我旁邊^(qū)_^,更興奮的是今天發(fā)現(xiàn)的這本好書《程序員修煉之道》,這本書其實(shí)我早就聽說過,但是礙于時(shí)間的關(guān)系,一直沒有讀該書的原版,今天發(fā)現(xiàn)了這本書的譯本,著實(shí)讓我高興了一番! 忍著饑腸轆轆,在書店一口氣讀完了該書的第一章,讀完后,只能用一個(gè)字形容我當(dāng)時(shí)的心情,“爽”。對(duì)該書的兩位作者產(chǎn)生了由衷的敬佩。 第一章中我認(rèn)為最經(jīng)典的就是下面這些句子了:關(guān)于破窗戶理論:一扇破窗戶,只要有那么一段時(shí)間不修理,就會(huì)漸漸的給建筑的居民帶來一種廢棄感- -種職權(quán)部門不關(guān)心這座建筑的感覺。于是又一扇窗戶破了。人們開始亂扔垃圾。出現(xiàn)了亂涂亂畫。嚴(yán)重的結(jié)構(gòu)損壞開始了。在相對(duì)較短的一段時(shí)間里,建筑的損毀得超出了業(yè)主愿意修理的程度,而廢棄感變成了現(xiàn)實(shí)。 作者針對(duì)該理論引申出了軟件中的“破窗戶”,一個(gè)良好的軟件系統(tǒng),一旦出現(xiàn)了破窗戶,如果不及時(shí)的修理,那么該軟件系統(tǒng)就會(huì)迅速的腐爛、惡化。 關(guān)于這一點(diǎn),我還是有一定的感觸,我們部門的一個(gè)產(chǎn)品在持續(xù)到1.X版本的時(shí)候,已經(jīng)到了無法維護(hù)的地步了,出了BUG,幾乎無法在定位了,這就是“破窗戶”效應(yīng)。好在部門及時(shí)開發(fā)了該產(chǎn)品的2.X版本,該版本產(chǎn)品的設(shè)計(jì)和編碼都是全新的,但是隨著該版本在市場(chǎng)上將近一年半的摸爬滾打,面對(duì)客戶無窮無盡的需求,該版本也開始出現(xiàn)了“破窗戶”,曾幾何時(shí),我也產(chǎn)生了這樣的想法“這些代碼的其余部分也是垃圾,我只有照著做就行了”。多么可怕的想法,“破窗戶”效應(yīng)正發(fā)生在我的身上。我覺得是時(shí)候開始修復(fù)那些“破窗戶”了,讓我們的代碼變得干凈漂亮。就像該書里提到的那個(gè)“滅火”例子一樣,一個(gè)干凈、整潔的軟件系統(tǒng),你會(huì)格外注意不要把它弄臟。 在有就是書里提到的那個(gè)“石頭湯”的例子,這個(gè)例子和我,還有我一個(gè)同事的想法不謀而和。當(dāng)你覺得一個(gè)東西非常好,可以在項(xiàng)目里使用的時(shí)候,你向大家推薦這個(gè)東西,然而大家對(duì)待這個(gè)東西卻是非常的木然,這個(gè)東西顯然沒有引起大家的興趣,而我那個(gè)同事就會(huì)抱怨:“這群家伙怎么這樣,和他們提出新東西,新想法簡直浪費(fèi)!”。后來,我們兩個(gè)聊天一致認(rèn)為,我們的方式本身有問題,我們應(yīng)該先做出一個(gè)小的像樣的東西,然后在向大家推薦這個(gè)東西,這樣能激起大家足夠的興趣。就象該書里說得那樣:讓他們大吃一驚,然后說:“要是我們?cè)黾。。。。可能就?huì)更好”。 我和那個(gè)同事,都有把自己掌握的知識(shí)分享給其他同事的習(xí)慣,經(jīng)常在部門里組織一些培訓(xùn)。但是交流效果一直不是非常理想,我那個(gè)同事就會(huì)抱怨“其他同事對(duì)這個(gè)東西進(jìn)行發(fā)問的時(shí)候,總是問不到點(diǎn)子上,接受新東西能力差”。但是,反過來,我們培訓(xùn)的方式本身是不是有問題那,我們有沒有了解我們的聽眾。你想讓他們學(xué)到什么?他們對(duì)你講的什么感興趣?他們有多富有經(jīng)驗(yàn)?他們想要多少細(xì)節(jié)?你想要讓誰擁有這些信息?你如何促使他們聽你說話?這些個(gè)問號(hào),我們?cè)谂嘤?xùn)開始前確實(shí)沒有認(rèn)真考慮過,就象我前一段給部門做的一個(gè)《ACE和多線程技術(shù)》培訓(xùn)時(shí)候,參加這個(gè)培訓(xùn)有一些做JAVA的同事,當(dāng)我培訓(xùn)的時(shí)候,一口一個(gè)POSIX標(biāo)準(zhǔn)的時(shí)候,我全然不知他們不太知道什么是POSIX標(biāo)準(zhǔn),到后來終于一個(gè)同事問了什么是POSIX標(biāo)準(zhǔn)的時(shí)候,我才恍然大悟,原來這些東西他們不太了解,這就是培訓(xùn)方法的問題。培訓(xùn)、交流、演講確實(shí)是一門學(xué)問,一個(gè)好的交流或培訓(xùn),即使持續(xù)了好長時(shí)間,大家依然全神在聽,否則很多人要不了一會(huì)就開始“神游”了;一個(gè)好的將軍,在戰(zhàn)斗打響前的演說成功與否,可能直接影響著這場(chǎng)戰(zhàn)役的勝。 在有就是E-mail交流問題,我們的一個(gè)女同事,由于工作上的職務(wù)關(guān)系,要經(jīng)常給整個(gè)部門的同事群發(fā)郵件,但是幾乎很少能得到回復(fù),她因此很是傷心^_^,我為了開導(dǎo)她,給她講了什么是“大眾冷漠”現(xiàn)象,一個(gè)強(qiáng)盜在很多人的大街上打劫,但是大家沒人去阻止這件事情,就是因?yàn)樽柚惯@個(gè)強(qiáng)盜的責(zé)任平均分?jǐn)偟搅撕芏嗳祟^上,那么每個(gè)人都認(rèn)為這不是我的責(zé)任。但是,能及時(shí)的回復(fù)其他人的郵件,確實(shí)是一種禮貌的行為,就象書里說得哪樣,即使內(nèi)容只是“我稍后回復(fù)你”。我也曾經(jīng)因?yàn)槠渌藳]有及時(shí)回復(fù)我的郵件,而大發(fā)脾氣^_^。 今天,確實(shí)是收獲頗豐的一天,《程序員修煉之道》僅僅第一章就給了我這么多感觸,我想我接著讀下去,會(huì)激出更多的思想上的火花,我拭目以待。。。。
本文鏈接:http://m.95time.cn/news/book/2004/1959.asp
出處:藍(lán)色理想
責(zé)任編輯:donger
|