程序員修煉之道 (The Pragmatic Programmer From Journeyman to Master) 第二章讀書心得

續上一章程序員修煉之道 (The Pragmatic Programmer From Journeyman to Master) 第一章讀書心得.

此為讀後重點筆記,好書值得大家購買閱讀.

持續第一章,本章點出一些開發人員必要的心法,謹記在心可以避免很多低級錯誤!

重覆之罪這我幹醮很多次了! 不管再怎麼憤怒都不應該 CP 來 CP 去,好好靜下心來思考是否可重新利用(重構)可運行的程式碼,這才是王道. 另外減少重覆同時也是在縮小出包的範圍. XD

正交就是指每個元件的交集程度,交集越小也代表重覆的概念or責任越少. 但正交性這章看完,我不知道為什麼我總是會想到”上班好同事,下班不認識.”這句話. XD

可逆性白點就是話不要說太死,說太滿結果最後說錯可是很丟臉低. 寫扣前要好好想想是否未來此處有變動的機率,留點後路以後也不會太痛也可以少加一點班.

我個人開發還常用 Tracer Bullets 這個技巧,不浪費每一個我摸索所寫下的程式碼,我果然有客家人的血統.

相對於 Tracer Bullets ,我覺得寫程式用 Prototype 真的很腦殘,刻一個看起來正確卻無用的東西,真的是白癡!

領域語言我覺得跟第一章所說的溝通有關. 如何用對方了解的事物解釋對方所不了解的東西,就某方面來說,我覺得這是一個好 RD 跟 普通好 RD 的差別之一.

最後一章節就真的屌了! 估時程,坦白說,我真的覺得有些東西根本沒辦法估時程,有時候你很認真估了一個時程,到實際上也不一定照這個時程跑. 我覺得與其自己學好這些技巧,不如讓整個團隊也重視這個觀念來得有用!

第二章 A Pragmatic Approach

The Evils of Duplication

  • DRY.
  • 不要用低階的思唯層次寫註解,這樣子的註解可視為程式碼另一種型式的重覆. 另外,不符合程式碼的註解 不如 沒有註解.

Orthogonality

  • 系統中,每個程式元件都專心做好自己的事. 關於正交性最簡單的說法 : 大家都就做好自己該做的事.

Reversibility

  • 沒有替代方案是最危險的事.
  • 需求總是一直在變的.
  • 一次寫一點點,回饋快,砍掉重練也不那麼痛.

Tracer Bullets

  • 不是在紙上討論出所有未知問題的正確規格,而是用一種實驗性程式碼來找出問題的答案,每一次都是在寫一個從頭到尾的使用者案例.

Prototypes and Post-it Notes

  • 相對於 Tracer Bullets , Prototype 是隨時可以丟棄的程式碼,最終不會成為產品上的一部份.

Domain Languages

  • 領域語言幫助你補捉客戶的需求,隨著轉換成實作碼,最終它會變成可執行的程式碼.
  • 領域語言讓你先在高階層次思考問題,之後再來考慮低階的實作細節.

Estimating

  • 估時程前先問問自己: 對方是想要多精確的時程?
  • 單位要使用正確. 14天跟兩個星期都代表一樣的時間長度,但人們會覺得14天很快就到了(然後每天來問你好了沒)!
  • 估時程前,可以問問之前有做過一樣事情的人.
  • 估時程前,先了解問題.
  • 別人叫你估時程時,你最好回他”我估好再跟你說”.

0 則回應: