2015年5月10日 星期日

The Pragmatic Programmer : from journeyman to master 書摘


我們,採集的只是石頭,卻必須時時刻刻展望未來的大教堂。
                                                                                                                —採石工人的信條

  1. 第一章:注重時效的哲學
    • 負責你的代碼,不要找蹩腳的藉口
    • 不要容忍破窗戶:有問題就及時修改,別累積技術債
    • 做團隊裡「做變化的催化劑」:提供大家改變的契機,讓大家追隨你而改變
    • 永遠記住大目標,要見樹並見林
    • 使質量成為需求問題:讓你的用戶參與權衡
    • 定期為你的知識資產做投資
    • 批判地分析你讀到的和聽到的
    • 你說什麼和你怎麼說同樣重要:交流、知道你要說什麼、瞭解聽眾、選擇文件的風格和美觀
  2. 第二章:注重實效的途徑
    • 不要重複你自己:和重用(Reuse)差別在,重複(Repeat)在於你做了同樣的事情,你應該只做一次卻做了很多次,造成時間和成本浪費;而重用則是再次利用優秀的程式碼來達到效率上的精進。
    • 讓重用變得容易(Make It Easy to Reuse)
    • 消除無關事物之間的影響:提升系統各組件的正交性(即降低耦合性)
      • 有正交性的好處:提高生產率、降低風險、項目團隊、設計
      • 編碼:讓代碼解藕、避免使用全域變數、避免相似的函數
    • 可撤銷性:不要存在最終決策,你的產品隨時隨地都有可能砍掉重練
    • 使用曳光彈來幫助你找到目標:和原型製作的差異在於曳光彈代碼是完整的,之後會構成最終系統的骨架的一部分
      • 用戶能及早看到能工作的東西
      • 開發者建構了一個他們能在其中工作的結構
      • 有了集成的平台
    • 為了學習而製作原型:原型所具備的元素有
      • 正確性
      • 完整性
      • 健壯性
      • 風格
    • 靠近問題領域編寫程式(Program Close to the Problem domain):選擇特定語言或是編寫特別定義過的程式來解決問題
    • 估算以免發生意外
      • 理解提問內容
      • 建立系統的模型
      • 把模型分解為組件
      • 給參數指定值
      • 估算項目進度
  3. 第三章:基本工具
    • 用純文本保存知識(Keep Knowledge in Plain Text)
    • 利用命列Shell的威力(Use the Power of Command Shells)
    • 用好一款編輯器:好的編輯器應該具有以下特性
      • 可配置:可高度客製化
      • 可擴展性
      • 可編程性
    • 總是使用原始碼控制工具
    • 要修正問題,而不是發出指責
    • 不要恐慌
      • 將你的數據視覺化
      • 跟蹤
      • 使用橡皮鴨:向別人解釋你的程式碼,讓別人像鴨子一樣一直點頭,直到問題出現
      • 消除過程
    • Select沒有問題
    • 不要假定,要證明
    • 學習一種文本操縱語言
    • 撰寫能撰寫程式碼的工具
  4. 第四章:注意時效的偏執
    • 你不可能寫出完美的軟體
    • 使用DBC按照合約設計:
      • 前條件
      • 後條件
      • 類別不變項
(未完.....)

沒有留言:

張貼留言