Pg 001

無瑕的程式碼-敏捷軟體開發技巧守則 + 番外篇-專業程式設計師的生存之道 (雙書合購)

Robert C. Martin 著、博碩文化 譯、陳錦輝 審校

  • 出版商: 博碩
  • 出版日期: 2013-09-17
  • 台幣定價: $940
  • 售價: 6.9$650
  • 語言: 繁體中文
  • ISBN: PG-001
  • ISBN-13:

立即出貨

買這商品的人也買了...

產品描述

無瑕的程式碼-敏捷軟體開發技巧守則 (Clean Code: A Handbook of Agile Software Craftsmanship)

<關於本書>

 

  • 本書的原文書名為《Clean Code: A Handbook of Agile Software Craftsmanship》,根據作者的說法,《無瑕的程式碼》為Jolt得獎著作《敏捷軟體開發:原則、樣式及實務》的前傳。 
  • 在台灣另一本銷售極佳的書籍《重構改善既有程式的設計》,根據亞馬遜Amazon網站的統計,購買該書原文版《Refactoring: Improving the Design of Existing Code》,又同時購買的其他書籍第一名,正是《Clean Code: A Handbook of Agile Software Craftsmanship》這一本書。 

 

 

<內容簡介>

第一章作者開宗明義說明什麼是Clean Code,他詢問了包含C++發明人Bjarne StroustrupEclipse策略教父Dave Thomas、極限程式設計大師Ron Jeffries、維基與極限程式設計發明人,Ward Cunningham等等的大師,從他們的眼光來描述什麼是Clean Code,最後才說到作者本人認為的Clean Code應該長成什麼樣子,有什麼好處,以及學習撰寫Clean Code的基本原則。

 

小編只能說,能和那麼多大師對談,就已經證明了作者也是一位大師

 

其餘部分本書分成三部份。

 第一部份

 包含有許多章節,這些章節將描述撰寫clean code的原則、模式及實踐,這些章節包含了不少的程式碼篇幅,閱讀它們頗具有挑戰性。這些章節替你準備好閱讀第二部份所需的背景知識。

 

第二部份

 這裡包含許多複雜性不斷增加的案例討論。在這個部分,作者會直接帶領您進行整個重構的過程,每次的修改,作者都會說明原因,重構的對象並不僅止於一般的程式,甚至還包含了著名的框架,例如JUnit(哇!把開放原始碼框架拿來重構,真酷)

 

第三部份

 終於到了成果收割的時候。最後一章列出了案例討論時搜集到的程式啟發和氣味。在案例討論裡走過和清理程式碼時,紀錄了每個行為的原因,並整理成一種程式啟發或氣味,成了一個知識庫,這個知識庫可以說是整本書的精華與交互參照。


<章節目錄>

1章  無瑕的程式碼      (Clean Code
2章  有意義的命名      (Meaningful Names
3章  函式          (Functions
4章  註解          (Comments
5章  編排          (Formatting
6章  物件及資料結構     (Objects and Data Structures
7章  錯誤處理        (Error Handling
8章  邊界          (Boundaries
9章  單元測試        (Unit Tests
10章  類別         (Classes
11章  系統         (Systems
12章  羽化         (Emergence
13章  平行化        (Concurrency
14章  持續地精煉      (Successive Refinement
15章  JUnit 的內部結構    (JUnit Internals
16章  重構SerialDate Refactoring SerialDate
17章  程式碼的氣味和啟發  (Smells and Heuristics

附錄 A 平行化之二 
Concurrency II
附錄 B org.jfree.date.SerialDate (第16章,重構的目標與結果)
附錄 C 啟發的相互參照    (Cross References of Heuristics

 

無瑕的程式碼 番外篇-專業程式設計師的生存之道 (The Clean Coder: A Code of Conduct for Professional Programmers)

<本書特色>

要介紹這本書的特色,就不得不介紹《無瑕的程式碼Clean Code一書,因為兩書是互補的。
在該書中,作者教您的是如何
做事(也就是如何寫出Clean Code)。
而本書中,作者教您的是如何做人(也就是如何做個Clean Coder)。

要想成為一位Clean Coder,可不簡單,絕不是只學會寫Clean Code就可以了。
還需要把寫Clean Code融入到真實的職場生涯當中。而這就牽涉到了職場求生術這類的議題。

在工作中撰寫Clean Code,初期一定會遇到一些困難,本書將教導您如何應付這些困難,說服上司、老闆、客戶、夥伴以及自己,以寫Clean Code的精神來應付開發專案時所遭遇的各種情況,才是正道。

<本書簡介>

在職場上,不可避免地會被要求趕工、加功能,即便大師也不例外,遇到這些情況,你必須學會Say No,同樣地,你也必須學會Say Yes,只有謹慎地Say Yes,別人才會對你有所尊重,相信你是一位專業人士,如此當你在Say No時,才會更有分量,更能說服對方。

本書作者Bob大叔,
Robert C. Martin,是一位軟體大師,也是一位著名作家,其著作《Agile Software Development: Principles, Patterns, and Practices》曾獲得有IT奧斯卡獎之稱──Jolt震撼年度大獎。


<本書適用對象>

本書是Bob大叔近期的新作,在本書中,Bob大叔以親身經歷及輔導過的案例作為範例,以說故事的方式來描述各種情景。如果你寫程式專案超過一年,相信這些情景你一定不陌生,那都是軟體開發過程常遇到的真實情境

不同的是,以往你只會做出一種回應,因此事態的發展只有一條路徑,而最終就陷入了一種悲慘的循環。那是個什麼樣的循環呢?
 

 

  1. 在面對一個新的專案或功能時,沒有一套科學的辦法來進行時程的預估〈老是估不準〉 
  2. 開發過程中,老是〈無法集中專注力〉,被這樣的事、那樣的事所影響,工作效率極差。
  3. 由於工作效率差,所以跟不上進度,〈壓力〉來了,只好加班熬夜來趕工。也〈沒時間寫測試〉
  4. 加班熬夜寫出的程式,品質比較差,常常出現bug
  5. 由於沒有寫測試,沒有一套自動化測試,所以〈除錯〉又花了許多時間,導致要加更多的班來進行除錯。
  6. 在接近專案截止日之前,終於快要完工了,但是客戶又要求〈加入新功能〉。但也給你更多的時間來開發,使你無法拒絕。
  7. 由於大多數程式碼都是加班趕出來的,品質非常差,因此在擴充功能時難以修改。只好回頭做〈重構〉
  8. 由於加班趕工沒做好自動化測試,所以當加入新功能後,對於〈原有功能是否因此出錯了?〉,沒有把握,所以必須花做更多的時間在測試。


現在又回到了12,直到客戶不再要求加入新功能為止。

  1. 已經沒時間測試了,在最終的截止日期還是把結果給發佈出去了。〈交給客戶去測吧〉。客戶必須測完後才會交付尾款。
  2. 由於沒有進行完整的測試,因此,客戶發現了bug,所以要求修改,同時也對您所推出的最後版本產生懷疑,因此使得〈專案遲遲無法結案,無法收到尾款〉



現在又回到了5,直到有天客戶的常用功能都OK了,或者你再也受不了而離職,甚至放棄收取尾款為止。

即便離職或放棄尾款也不能解決問題,因為你還是必須接新的專案,而這又回到了1


以上的循環是否讓您感覺生活品質很差呢?是不是懷疑自己走錯行了呢?其實不是這樣的,問題在於你沒有找對方法來處理每一個步驟的應對之策

這本書,從每個您所熟悉的故事中,發展出不同的分支,教導您如果這樣做,結果會是怎樣?如果那樣做,結局又會是怎樣?Bob大叔開的是一間顧問公司,寫程式也有四十幾年了,因此,他提出的做法完全是經驗的累積,經得起實際的考驗。如果您有疑慮,那大可不必一次全部都應用到同一個專案中,一次針對某一項來修改應對之策,您會發現,即便只是針對某一項來作修正,都會讓您獲益匪淺。

本書大多數的篇幅都在說故事,以說故事的方式來論理,當中有大約四個章節是和技術高度相關的,當中包含TDD、驗收測試、測試策略、協作、工具等等。關於這些議題,本書並未提供程式碼,而是以方法介紹為主軸來進行介紹,若你想看看實際程式碼的示範,可以參閱《無瑕的程式碼》一書。

PS
《無瑕的程式碼》上市後,連續三月勇奪天瓏資訊圖書銷售冠軍,非常值得一讀。http://www.tenlong.com.tw/items/9862017058?item_id=570049


<兩書閱讀方式>

這兩本姊妹書並沒有固定的閱讀順序,
如果您先讀本書《無瑕的程式碼──番外篇 The Clean Coder》,但對於實際的Clean Code有所好奇的話,可再去翻閱《無瑕的程式碼Clean Code》。
如果您先讀的是《無瑕的程式碼Clean Code》,但對於怎樣把Clean Code帶入職場有所疑問的話,則本書將為您解惑。

雖然單一本書已經能夠提升您的職場價值。但對於一位專業的程式設計師而言,最好是兩本書都讀過,如此才能發揮最大的效用。

 

<章節目錄>

說在前頭              (Pre-Requisite Introduction
Chapter 1 
專業主義        (Professionalism
Chapter 2 
說「不」        (Saying No
Chapter 3 
說「是」        (Saying Yes
Chapter 4 
寫程式         (Coding
Chapter 5 
測試驅動開發      (Test Driven Development
Chapter 6 
練習          (Practicing
Chapter 7 
驗收測試        (Acceptance Testing
Chapter 8 
測試策略        (Testing Strategies
Chapter 9 
時間管理        (Time Management
Chapter 10 
預估          (Estimation
Chapter 11 
壓力          (Pressure
Chapter 12 
協作          (Collaboration
Chapter 13 
團隊與專案       (Teams and Projects
Chapter 14 
輔導、學徒期與工藝典範 (Mentoring, Apprenticeship, and Craftsmanship
Appendix A 
工具          (Tooling

 

<作者簡介> 

Robert C. Martin:人稱Uncle Bob,程式設計經驗超過40年,Agile Software(敏捷軟體開發)的提倡者之一。創立Object Mentor,這是一間專注於C ++Java物件導向、模式、UML、敏捷方法學和極限程式設計的顧問諮詢公司。
在這些領域,作者撰寫了相當多的名著,其中,又以獲得有IT奧斯卡獎之稱──Jolt震撼年度大獎的
Agile Software Development: Principles, Patterns, and Practices
《敏捷軟體開發:原則、樣式及實務》
最為知名。該得獎年度,Jolt僅頒布通用類、技術類各一本著作得獎,通用類由此書獲得大獎,而技術類書籍則由另一本廣為人知的《Thinking in Java(第三版)》獲得。