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

出版時(shí)間:20101112  出版社:人民郵電出版社  作者:Robert C.Martin,,Micah Martin  頁(yè)數(shù):538  譯者:鄧輝,孫鳴  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

本書(shū)中,享譽(yù)全球的面向?qū)ο蠹夹g(shù)大師Robert C. Martin深入而生動(dòng)地使用真實(shí)案例講解了面向?qū)ο笤O(shè)計(jì)的基本原則、重要的設(shè)計(jì)模式、UML和敏捷方法。    本書(shū)Java版曾榮獲2003年第13屆Jolt大獎(jiǎng),是公認(rèn)的經(jīng)典著作。本書(shū)是C#程序員提升功力的絕佳教程,也可用作高校計(jì)算機(jī)、軟件工程專(zhuān)業(yè)本科生、研究生的教材或參考書(shū)。

作者簡(jiǎn)介

Robert C. Martin(“Bob”大叔)世界級(jí)的軟件開(kāi)發(fā)大師,著名軟件咨詢公司Object Mentor公司的創(chuàng)始人和總裁。曾擔(dān)任C++ Report雜志主編多年,也是設(shè)計(jì)模式和敏捷開(kāi)發(fā)運(yùn)動(dòng)的主要倡導(dǎo)者之一。

書(shū)籍目錄

第一部分  敏捷開(kāi)發(fā)   第1章  敏捷實(shí)踐 第2章  極限編程概述 第3章  計(jì)劃 第4章  測(cè)試 第5章  重構(gòu) 第6章  一次編程實(shí)踐第二部分  敏捷設(shè)計(jì)  第7章  什么是敏捷設(shè)計(jì) 第8章  SRP:?jiǎn)我宦氊?zé)原則 第9章  OCP:開(kāi)放-封閉原則 第10章  LSP:LISKOV替換原則 第11章  DIP:依賴(lài)倒置原則 第12章  ISP:接口隔離原則 第13章  寫(xiě)給C#程序員的UML概述 第14章  使用UML 第15章  狀態(tài)圖 第16章  對(duì)象圖 第17章  用例  第18章  順序圖 第19章  類(lèi)圖 第20章  咖啡的啟示第三部分  薪水支付案例研究  第21章  COMMAND模式和ACTIVE OBJECT模式:多功能與多任務(wù) 第22章  TEMPLATE METHOD模式和STRATEGY模式:繼承和委托 第23章  FACADE模式和MEDIATOR模式 第24章  SINGLETON模式和MONOSTATE模式 第25章  NULL OBJECT模式 第26章  薪水支付案例研究:第一次迭代開(kāi)始 第27章  薪水支付案例研究:實(shí)現(xiàn)第四部分  打包薪水支付系統(tǒng)  第28章  包和組件的設(shè)計(jì)原則 第29章  FACTORY模式 第30章  薪水支付案例研究:包分析 第31章  COMPOSITE模式 第32章  OBSERVER——演化至模式 第33章  ABSTRACT SERVER模式、 ADAPTER模式和BRIDGE模式 第34章  PROXY模式和GATEWAY模式:管理第三方API 第35章  VISITOR模式 第36章  STATE模式 第37章  薪水支付案例研究:數(shù)據(jù)庫(kù) 第38章  薪水支付系統(tǒng)用戶界面:Model-View-Presenter附錄索引

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    敏捷軟件開(kāi)發(fā) PDF格式下載


用戶評(píng)論 (總計(jì)30條)

 
 

  •   早就 想買(mǎi)了,終于買(mǎi)了
  •   比較喜歡的一款書(shū)
  •   講的是方法
  •   敏捷軟件開(kāi)發(fā):原則、模式與實(shí)踐
  •   非常不錯(cuò),還可以啦。。。
  •     這本書(shū)是我見(jiàn)過(guò)的講述敏捷設(shè)計(jì)、開(kāi)發(fā)書(shū)籍中最棒的一本!尤其是前半部分中OOP設(shè)計(jì)原則的講述,非常佩服Bob大叔對(duì)設(shè)計(jì)原則的總結(jié)。后半部分感覺(jué)涉及到細(xì)節(jié)太繁瑣了就沒(méi)看完,不過(guò)這無(wú)損于這本名著的光芒!這本書(shū)可以和其它講述設(shè)計(jì)模式的相關(guān)書(shū)籍一起閱讀,相得益彰。
      
      讀書(shū)筆記:
      第一部分 敏捷宣言
      個(gè)體和交互 勝過(guò) 過(guò)程和工具
      可以工作的軟件 勝過(guò) 面面俱到的文檔
      客戶合作 勝過(guò) 合同談判
      響應(yīng)變化 勝過(guò) 遵循計(jì)劃
      
      
      第二部分 敏捷設(shè)計(jì)
      
      腐化的設(shè)計(jì)
      僵化性(Rigidity):難以對(duì)系統(tǒng)進(jìn)行修改
      脆弱性(Fragility):改動(dòng)一個(gè)地方,程序許多地方出現(xiàn)問(wèn)題
      牢固性(Immobility):很難解開(kāi)系統(tǒng)的糾結(jié)
      粘滯性(Viscosity):做錯(cuò)誤的事情容易,做正確的事情困難
      不必要的復(fù)雜性(Needless Complexity):過(guò)度設(shè)計(jì),為過(guò)多的可能性做準(zhǔn)備
      不必要的重復(fù)(Needless Repetition):重復(fù)的代碼,開(kāi)發(fā)人員忽視的抽象
      晦澀性(Opacity):難以閱讀、理解,沒(méi)有用清晰、富有表達(dá)力的代碼來(lái)體現(xiàn)意圖
      
      需求總是處在持續(xù)變動(dòng)中,加速了代碼腐化
      運(yùn)用抽象來(lái)封裝變化Open-Closed Principle
      
      OOP設(shè)計(jì)原則:
      一,SRP 單一職責(zé)原則(Single Responsibility Princip)
      就一個(gè)類(lèi)而言,應(yīng)該僅有一個(gè)引起它變化的原因
      高內(nèi)聚、低耦合
      Facade模式、PROXY模式
      
      二,OCP 開(kāi)放-封閉原則(Open-Closed Principle)
      軟件實(shí)體(類(lèi)、模塊、函數(shù)等)應(yīng)該是可以擴(kuò)展的,但是不可修改
      對(duì)擴(kuò)展開(kāi)放(Open for extension):對(duì)模塊進(jìn)行擴(kuò)展,使其滿足那些改變的新行為
      對(duì)更改封閉(Closed for modification):不必改動(dòng)模塊的源代碼或二進(jìn)制文件
      抽象、多態(tài)
      Strategy模式、Template Method模式,
      
      三,LSP Liskov替換原則(Liskov Substitution Principle)
      子類(lèi)型必須能夠替換掉它們的基類(lèi)型
      IS-A繼承
      從使用者角度來(lái)審視API
      契約式設(shè)計(jì)(Design By Contract):通過(guò)為每個(gè)方法聲明前置條件和后置條件來(lái)指定契約
      LSP是使OCP成為可能的主要原則之一
      子類(lèi)型的正確含義是“可替換的”
      
      四,DIP 依賴(lài)倒置原則(Depend Invert Princip)
      高層模塊不應(yīng)該依賴(lài)于低層模塊,二者都應(yīng)該依賴(lài)于抽象
      抽象不應(yīng)該依賴(lài)于實(shí)現(xiàn)細(xì)節(jié),實(shí)現(xiàn)細(xì)節(jié)應(yīng)該依賴(lài)于抽象
      如果高層模塊獨(dú)立于低層模塊,那么高層模塊就可以非常容易地被重用。該原則是FrameWork設(shè)計(jì)的核心原則:依賴(lài)于抽象
      Don't call us,we will call you.低層模塊實(shí)現(xiàn)了在高層模塊中聲明的接口,這些接口被高層模塊調(diào)用
      把不穩(wěn)定的具體類(lèi)隱藏在抽象接口后面,可以隔離它們的不穩(wěn)定性
      OOP設(shè)計(jì)倒置了依賴(lài)關(guān)系結(jié)構(gòu),使得細(xì)節(jié)和策略都依賴(lài)于抽象
      Template Method模式,Bridge模式
      
      五,ISP 接口隔離原則(Least Knowledge Principle)
      不應(yīng)該強(qiáng)迫客戶依賴(lài)于它們不用的方法。接口屬于客戶,不屬于它所在的類(lèi)層次結(jié)構(gòu)。
      客戶程序看到的應(yīng)該是多個(gè)具有內(nèi)聚接口的抽象基類(lèi)
      客戶程序應(yīng)該僅僅依賴(lài)于它們實(shí)際調(diào)用的方法
      Facade模式
      
      
      第三部分 薪水支付案例研究
      Command模式:將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可取消的操作。
      
      命令模式就是把一些具體的命令封裝成一些具體的類(lèi),這些類(lèi)實(shí)現(xiàn)同一個(gè)接口或者是抽象類(lèi)。把這些類(lèi)組織到一起來(lái)統(tǒng)一執(zhí)行,完成一個(gè)具體的業(yè)務(wù)流程。它的優(yōu)點(diǎn)是:解耦了發(fā)送者與接收者之間的聯(lián)系。發(fā)送者調(diào)用一個(gè)操作,接收者接受請(qǐng)求執(zhí)行具體類(lèi)相應(yīng)的動(dòng)作。因?yàn)槭褂肅ommand模式解耦,發(fā)送者無(wú)需知道接受者任何接口。
      比如說(shuō),對(duì)文件進(jìn)行操作,如打開(kāi)、關(guān)閉、打印。正常的操作就是用戶點(diǎn)擊“打開(kāi)”按紐,就執(zhí)行打開(kāi)命令,在按紐的單擊事件中寫(xiě)個(gè)方法就可以了。但如要應(yīng)用Command模式,就要把其抽象出接口,把這三個(gè)操作封裝成單獨(dú)的類(lèi)。
      
      Template Method模式:定義一個(gè)操作中的算法骨架,而將一些步驟延遲到子類(lèi)中。Template Method模式使得子類(lèi)可以不改變算法的結(jié)構(gòu)即可重新定義該算法的某些特定步驟。(繼承)
      
      Strategy模式:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以相互替換。Strategy模式使得算法可以獨(dú)立于使用它們的客戶而變化。(委托)
      
      Facade模式:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面。Facade模式定義了一個(gè)高層接口,這個(gè)高層接口使得這一子系統(tǒng)更加容易使用。
      
      Mediator模式:用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。
      
      Singleton模式:保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)。通過(guò)使用私有構(gòu)造函數(shù),靜態(tài)變量和一個(gè)靜態(tài)訪問(wèn)方法來(lái)實(shí)現(xiàn)。
      
      MonoState模式:構(gòu)造函數(shù)聲明為public,而將類(lèi)中所有的字段聲明為static。MonoState并不限制創(chuàng)建對(duì)象的個(gè)數(shù),但是它的狀態(tài)卻只有一個(gè)狀態(tài)。
      
      NULL Object模式:提供一個(gè)給定類(lèi)型的NULL Object對(duì)象,用以代替這個(gè)對(duì)象為null的情況,簡(jiǎn)化代碼。
  •      2005年閱讀的這本書(shū),也因此知道了鄧輝這個(gè)人,對(duì)前幾章印象深刻,特別是敏捷的宣言和SOLID設(shè)計(jì)原則,但是后面的具體例子,受限于設(shè)計(jì)能力和語(yǔ)言差別,理解不深,知道了TDD,結(jié)對(duì)編程等概念,但是不能肯定是否有效。隨后打算重讀一遍技術(shù)章節(jié);
      
  •     讀懂這本書(shū)還是需要一定功底的,需要相當(dāng)?shù)脑O(shè)計(jì)實(shí)踐經(jīng)驗(yàn)才能完全理解,書(shū)中也描述了一些設(shè)計(jì)模式,不過(guò)相比GOF的《設(shè)計(jì)模式》來(lái)說(shuō)它是在一個(gè)更高設(shè)計(jì)原則的層次來(lái)描述經(jīng)典模式的,總的來(lái)說(shuō)值得閱讀。
  •     絕對(duì)是值得每一個(gè)敏捷開(kāi)發(fā)人員閱讀的圖書(shū)。內(nèi)容很實(shí)用。尤其是第六章《一次編程實(shí)踐》部分的例子對(duì)我的觸動(dòng)很大。
  •     看到前面有評(píng)論說(shuō),此書(shū)與敏捷的關(guān)系不大,頗有同感。所謂敏捷,那就是代碼先寫(xiě)了再說(shuō),且看我們是如何做到,這就是讀了這本書(shū)的感受。
      
      中文版沒(méi)有把特定的英文縮寫(xiě)在第一次引用時(shí)列出來(lái)(只能在后面的索引表里找到),讓我很不爽,比如DIP和SRP。不過(guò),說(shuō)到底還是中文看得快,比看小說(shuō)都快。
      
      本書(shū)的一大特點(diǎn)就是淺顯,比GOF的那本《設(shè)計(jì)模式》通俗易懂多了。雖然我還是不喜歡看大段的代碼,但不可否認(rèn)那些代碼能夠幫助理解。
      
      本書(shū)最好的地方,還是敏捷設(shè)計(jì)一章,列出了幾個(gè)基本的原則:
      1.單一職責(zé)原則(SRP)
      2.開(kāi)發(fā)-封閉原則(OCP)
      3.Liskov替換原則(LSP)
      4.依賴(lài)倒置原則(DIP)
      5.接口隔離原則(ISP)
      
      以及后面的打包原則:
      1.內(nèi)聚性原則
      2.耦合性原則
      3.穩(wěn)定依賴(lài)原則
      4.穩(wěn)定抽象原則
      
      特別是LSP還是第一次聽(tīng)說(shuō),真是耳目一新。而穩(wěn)定依賴(lài)原則,則有了更深的理論認(rèn)識(shí),雖然沒(méi)有仔細(xì)看明白那些數(shù)學(xué)公式。
      
      當(dāng)然,關(guān)于好的設(shè)計(jì)模式,還有很多很多,這本書(shū)也只是講了很小一部分,講得還不錯(cuò)。不過(guò)很多東西已經(jīng)很老套了,基本都是N年前的東西了,難道是Bob大叔老了?
  •     一本還不錯(cuò)的軟件設(shè)計(jì)方面的書(shū)。不過(guò)為什么要扯上敏捷的頭銜呢。書(shū)中最有價(jià)值的還是那個(gè)附錄《源代碼即設(shè)計(jì)》,其它的真正敏捷的東西太少了。而且放的代碼過(guò)多。
      
  •     通過(guò)這本書(shū),你可以有以下收獲:
      1.更深入的理解模式。
      2.提供了更好的軟件開(kāi)發(fā)的方法。
      3.具有了總體理解系統(tǒng)架構(gòu)的能力。
      
      我以前總想看懂DELPHI的源碼,總覺(jué)得一頭霧水,現(xiàn)在知道是我沒(méi)明白他的設(shè)計(jì)思想,不能從上往下看,越看東西越多就糊涂啦。
  •   有同感!
    我相信作者的幽默感不錯(cuò),但翻譯之后,平平淡淡得!
  •   老大,這本來(lái)就是本2002年的書(shū),當(dāng)然是N年前......
  •   “所謂敏捷,那就是代碼先寫(xiě)了再說(shuō)”,你的理解比較搞笑,完全誤解敏捷開(kāi)發(fā)的含義和主張。看來(lái)你還是一個(gè)寫(xiě)代碼的啊。。。
  •   to TiMeZz,我可不可以認(rèn)為你沒(méi)有寫(xiě)過(guò)代碼?
  •   難倒狗咬了你一口你就要咬回來(lái)?
  •   Gabriel糾正得極是,我還得加強(qiáng)修煉才行,呵呵。
  •   總有人覺(jué)得自己很高竿.
  •   敏捷還真就是代碼先寫(xiě)了再說(shuō),整個(gè)極限編程的核心就死簡(jiǎn)單實(shí)現(xiàn)...
  •   從書(shū)中的舉例和故事來(lái)看,其實(shí)也和敏捷實(shí)踐有很大關(guān)系
  •   “所謂敏捷,那就是代碼先寫(xiě)了再說(shuō)”,這倒也是,我看了一遍這書(shū)都快把它當(dāng)作面向?qū)ο箝_(kāi)發(fā)的讀物來(lái)對(duì)待了。
  •   TiMeZz說(shuō)的沒(méi)有錯(cuò),optman所說(shuō)的“敏捷”就是先寫(xiě)代碼,確實(shí)沒(méi)有理解到敏捷軟件開(kāi)發(fā)的精髓。
    敏捷是指,不斷維護(hù)一套靈活性很高的,易于修改的,防止其腐化,使之始終保持最佳狀態(tài),這樣就能夠快速地應(yīng)對(duì)不斷而來(lái)的客戶需求變化,從而使得最終產(chǎn)生最符合客戶需求的質(zhì)量最高的系統(tǒng)。
  •   還是先寫(xiě)代碼
  •   跟敏捷的關(guān)系還是很大啊。。
  •    “所謂敏捷,那就是代碼先寫(xiě)了再說(shuō)”, 代碼是要寫(xiě)的, 但不僅僅是這樣的吧, 呵呵
  •   對(duì)于我們這樣的菜豆來(lái)說(shuō),代碼是理解原理的最好形式。
  •   有了這些代碼, 理解設(shè)計(jì)模式就比GOF輕松多了.而且從代碼的演化過(guò)程可以學(xué)會(huì)如何重構(gòu),重構(gòu)是如何進(jìn)行的,為什么重構(gòu).
  •   基本上就沒(méi)有什么敏捷的內(nèi)容在里面,這年代你不談xp,不談agile,不談scrum,出版商都和你急!
  •   難道真沒(méi)有麼?真的沒(méi)有麼?真的是沒(méi)有麼?
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7