出版時間:2013-1 出版社:人民郵電出版社 作者:[美] Max Kanat-Alexander 頁數(shù):105 字數(shù):94000 譯者:余晟
Tag標簽:無
前言
好程序員和差程序員的區(qū)別在于理解能力。差勁的程序員不理解自己做的事情,優(yōu)秀的程序員則相反。信不信由你,道理就是這么簡單?! 戇@本書,是為了幫助各位程序員,以適用于各種編程語言、各種項目的廣闊視角來理解軟件開發(fā)。本書以普通人容易理解的方式,講解了軟件開發(fā)的科學規(guī)律?! ∪绻闶浅绦騿T,這些規(guī)律能夠說明,為什么有些開發(fā)方法有效,另一些無效。這些規(guī)則也會指引你在日常工作中做出開發(fā)決策,幫助你的團隊進行高質(zhì)量的交流,最終制訂出合理的計劃?! ∪绻悴皇浅绦騿T,但身在軟件行業(yè),仍然可以享受到本書的價值: ·它既是提供給初級程序員的優(yōu)秀教材,又包含對高級程序員相當有 用的知識; ·它幫助你更深入地理解軟件工程師某些行為的原因,以及軟件為何 要以某種方式來開發(fā); ·它幫助你理解優(yōu)秀的軟件工程師做決定的基本原理,讓你與開發(fā)人 員更順暢地溝通?! ±硐氲臓顟B(tài)是,軟件行業(yè)中的每個人都可以閱讀并理解這本書,即便他們沒有多少編程經(jīng)驗,甚至母語不是英語也無所謂。如果你已經(jīng)有相當?shù)募夹g(shù)積累,把握書中的概念會更加容易,但是大部分內(nèi)容不需要編程經(jīng)驗就能理解?! 嶋H上,本書雖然講的是軟件開發(fā),卻沒有多少代碼。這怎么可能呢?答案是,其中的思想適用于各種軟件項目、各種語言。要明白如何運用這些思想,并不需要懂得某一門具體的編程語言。相反,本書中包含了大量的實例和比喻,它們會讓你更好地理解所表述的每條原理?! ∽钪匾氖?,這本書是為了幫助你而寫的,希望能助你在軟件開發(fā)中保持頭腦清醒、遵守秩序、寫出簡潔代碼。我希望它讀起來是一種享受,它有助于改善你的生活,你的軟件?! ∨虐婕s定 本書中格式約定如下。 黑體:表示新術(shù)語?! 〉葘捵煮w:用于代碼示例,在段落中使用時,表示與程序有關(guān)的部分,比如變量或者函數(shù)名。 此圖標表示提示、建議或者普通的旁注?! ≈轮x Andy Oram和 Jolie Kanat兩位編輯為本書作了巨大的貢獻。 Andy的建議和意見深入且充滿智慧; Jolie的堅持和支持促成了本書的最后出版,她為早期手稿所做的大量編輯工作尤其值得感謝。 Rachel Head是本書的文字編輯,做整理和校對的工作,她的才華無與倫比。 還要感謝的是與我在開源社區(qū)中一同工作或討論過問題的程序員——尤其是在 Bugzilla項目中共事的幾位開發(fā)人員,有了你們的幫助,我才有清楚的思維,講解這些年來真實存在的,活生生的軟件系統(tǒng)。 這些年來,我的 blog上收到的評論和反饋,幫我確定了本書的形式和內(nèi)容。在這里要感謝參與其中的所有人,即使你們僅僅給我鼓勵,或者是告訴我你讀過我的文章。 從個人來說,我尤其要感謝 Jevon Milan、Cathy Weaver,以及與他們工作過的所有人。確切地說,有了他們,我才能寫出這本書。最后,要向我的朋友 Ron致敬,沒有他,這本書根本不可能出現(xiàn)?! ∈褂檬纠a 讓我們助你一臂之力。也許你要在自己的程序或文檔中用到本書中的代碼。除非大段大段地使用,否則不必與我們聯(lián)系取得授權(quán)。例如,無需請求許可,就可以用本書中的幾段代碼寫成一個程序。但是銷售或者發(fā)布 O’Reilly圖書中代碼的光盤則必須事先獲得授權(quán)。引用書中的代碼來回答問題也無需授權(quán)。將大段的示例代碼整合到你自己的產(chǎn)品文檔中則必須經(jīng)過許可?! ∥覀兎浅OM隳軜嗣鞒鎏?,但并不強求。出處一般含有書名、作者、出版商和 ISBN,例如“ Code Simplicity:The Science of Software Development by Max Kanat-Alexander(O’Reilly,2012)版權(quán)所有?! ∪绻嘘P(guān)于使用代碼的未盡事宜,可以隨時與我們?nèi)〉寐?lián)系?! afari·在線圖書 Safari在線圖書是應(yīng)需而變的數(shù)字圖書館。它能夠讓你非常輕松地搜索 7500多種技術(shù)性和創(chuàng)新性參考書以及視頻,以便快速 地找到需要的答案?! ∮嗛喓缶涂梢栽L問在線圖書館內(nèi)的所有頁面和視頻??梢栽谑謾C或其他移動設(shè)備上閱讀,還能在新書上市之前搶先閱讀,也能夠看到還在創(chuàng)作中的書稿并向作者反饋意見。復制粘貼代碼示例、放入收藏夾、下載部分章節(jié)、標記關(guān)鍵點、做筆記甚至打印頁面等有用的功能可以節(jié)省大量時間。這本書(英文版)也在其中。欲訪問本書英文版的電子版,或者由 O’Reilly或其他出版社出版的相關(guān)圖書,請到網(wǎng)站免費注冊?! ∥覀兊穆?lián)系方式 請把對本書的評論和問題發(fā)給出版社?!?/pre>內(nèi)容概要
《簡約之美:軟件設(shè)計之道》將軟件設(shè)計作為一門嚴謹?shù)目茖W,闡述了開發(fā)出優(yōu)雅簡潔的代碼所應(yīng)該遵循的基本原則。作者從為什么以前軟件設(shè)計沒有像數(shù)學等學科一樣成為一門科學開始入手,道出了軟件以及優(yōu)秀的軟件設(shè)計的終極目標,并給出了具體的指導規(guī)則。
這是一本軟件思想著作,適合任何背景、使用任何語言的程序員。作者簡介
Max Kanant-Alexander開源項目 Bugzilla總架構(gòu)師, Google軟件工程師,作家,
8歲開始修電腦, 14歲開始編程。 Wdesimphicity.com和
fedorafaq.com網(wǎng)站維護者,目前居住在北加州。書籍目錄
第1章 引言
1.1 計算機出了什么問題?
1.2 程序究竟是什么?
第2章 缺失的科學
2.1 程序員也是設(shè)計師
2.2 軟件設(shè)計的科學
2.3 為什么不存在軟件設(shè)計科學
第3章 軟件設(shè)計的推動力
第4章 未來
4.1 軟件設(shè)計的方程式
4.1.1 價值
4.1.2 成本
4.1.3 維護
4.1.4 完整的方程式
4.1.5 化簡方程式
4.1.6 你需要什么,不需要什么
4.2 設(shè)計的質(zhì)量
4.3 不可預測的結(jié)果
第5章 變化
5.1 真實世界中程序的變化
5.2 軟件設(shè)計的三大誤區(qū)
5.2.1 編寫不必要的代碼
5.2.2 代碼難以修改
5.2.3 過分追求通用
5.3 漸進式開發(fā)及設(shè)計
第6章 缺陷與設(shè)計
6.1 如果這不是問題……
6.2 避免重復
第7章 簡潔
7.1 簡潔與軟件設(shè)計方程式
7.2 簡潔是相對的
7.3 簡潔到什么程度?
7.4 保持一致
7.5 可讀性
7.5.1 命名
7.5.2 注釋
7.6 簡潔離不開設(shè)計
第8章 復雜性
8.1 復雜性與軟件的用途
8.2 糟糕的技術(shù)
8.2.1 生存潛力
8.2.2 互通性
8.2.3 對品質(zhì)的重視
8.2.4 其他原因
8.3 復雜性及錯誤的解決方案
8.4 復雜問題
8.5 應(yīng)對復雜性
8.5.1 把某個部分變簡單
8.5.2 不可解決的復雜性
8.6 推倒重來
第9章 測試
附錄A 軟件設(shè)計的規(guī)則
附錄B 事實、規(guī)則、條例、定義章節(jié)摘錄
版權(quán)頁: 程序的代碼應(yīng)當采用什么結(jié)構(gòu)? 是程序的速度重要,還是代碼容易閱讀重要? 為滿足需求,應(yīng)該選擇哪種編程語言? 軟件設(shè)計與下列問題無關(guān): 公司的結(jié)構(gòu)應(yīng)該是怎樣的? 什么時候召開團隊會議? 程序員的工作時間應(yīng)該如何安排? 程序員的績效如何考核? 這些決策與軟件本身無關(guān),只與組織有關(guān)。顯然,保證這類決策的合理性也是重要的——許多軟件項目之所以失敗,就是管理失當。但是這不是本書的主題,本書關(guān)注的是,如何為你的軟件制訂合理的技術(shù)決策。 軟件系統(tǒng)中任何與架構(gòu)有關(guān)的技術(shù)決策,以及在開發(fā)系統(tǒng)中所做的技術(shù)決策,都可以歸到“軟件設(shè)計”的范疇里。 2.1 程序員也是設(shè)計師 在軟件項目中,每個程序員的工作都與設(shè)計有關(guān)。首席程序員負責設(shè)計程序的總體架構(gòu);高級程序員負責大的模塊;普通程序員則設(shè)計自己的那一小塊,甚至只是某個文件的一部分。但是,即便僅僅是寫一行代碼,也包含設(shè)計的因素。 哪怕是單干,也離不開設(shè)計。有時候你在敲鍵盤之前,就做了決定,這就是在做設(shè)計。有的夜晚,你躺在床上,還在思考要怎樣編程。 每個寫代碼的人都是設(shè)計師,團隊里的每個人都有責任保證自己的代碼有著良好的設(shè)計。任何軟件項目里,任何寫代碼的人,在任何層面上,都不能忽略軟件設(shè)計。 這不是說設(shè)計應(yīng)該采取民主程序進行。設(shè)計決不應(yīng)該由某個委員會負責,那樣的結(jié)果必然很差勁。相反,所有的開發(fā)人員都應(yīng)有權(quán)在自己的工作中做出良好的設(shè)計決策。如果某位開發(fā)人員做了糟糕或者平庸的決策,資深開發(fā)人員或者首席程序員就應(yīng)當推翻這些決策,重新來過。對下屬的設(shè)計,這些人應(yīng)當擁有否決權(quán)。不過,軟件設(shè)計的責任應(yīng)當落實在真正寫代碼的人身上。 身為設(shè)計師,必須時時愿意聆聽建議和反饋,因為程序員大都比較聰明,有不錯的想法。但是考慮了所有這些建議和反饋之后,任何決策都必須由單獨的個人而不是一群人來做出。 2.2軟件設(shè)計的科學 現(xiàn)在,軟件設(shè)計仍然不算科學。什么是科學?詞典里的定義有點兒復雜,但簡單來說,一門學問要成為科學,必須符合下列標準。 科學必須包含匯總而來的知識。也就是,它必須包含事實而不是意見,且這些事實必須匯總起來(比如集結(jié)成書)。 這些知識必須具有某種結(jié)構(gòu)。知識必須能分類,其中的各個部分必須能夠依據(jù)重要性之類的指標,妥善建立起與其他部分的聯(lián)系。 科學必須包括一般性的事實或者基本的規(guī)則。 科學必須告訴你在現(xiàn)實世界中如何做一些事情。它必須能夠應(yīng)用到工作或生活中。 通常,科學是經(jīng)由科學方法來發(fā)現(xiàn)或證明的??茖W方法必須觀察現(xiàn)實世界,提煉出關(guān)于現(xiàn)實世界的理論,通過驗證理論,而且這些實驗必須是可重復的。這樣才能說明理論是普適的真理,而不僅僅是巧合或者特例。編輯推薦
沒有人喜歡復雜的東西,所以軟件開發(fā)的簡約之道一定會受讀者青睞。本書作者Max Kanat-Alexander創(chuàng)建的關(guān)于Linux的簡約單頁網(wǎng)站Unofficial Fedora FAQ,月訪問量超過10萬人次。本書作者還是著名的開源Bugzilla Project的首席架構(gòu)師、社區(qū)創(chuàng)始人和發(fā)布經(jīng)理。圖書封面
圖書標簽Tags
無評論、評分、閱讀與下載