1. 軟體維護的成本遠遠高於初始成本(維護成本由圖示中項目所組成)。 2. 我們的實作策略應該是盡量將支出延後。 3. 由於不確定性的存在,實作策略應該更傾向於帶來即時收益,而非長遠收益。 4. 實作模式一方面著眼於獲得即時收益,另一方面也在建立乾淨的程式碼,以方便將來的開發工作。 -《Kent Beck的實作模式》 CH4動機 p.47-48
看見第2~3點時,忽然有錯覺以為是在讀投資策略的書XD
seen from Türkiye

seen from Singapore
seen from United States
seen from Canada
seen from Thailand
seen from China
seen from United States
seen from United States
seen from United States

seen from United States
seen from United States

seen from Malaysia
seen from United States

seen from Malaysia
seen from China
seen from China
seen from Maldives
seen from United States
seen from Indonesia
seen from Singapore
1. 軟體維護的成本遠遠高於初始成本(維護成本由圖示中項目所組成)。 2. 我們的實作策略應該是盡量將支出延後。 3. 由於不確定性的存在,實作策略應該更傾向於帶來即時收益,而非長遠收益。 4. 實作模式一方面著眼於獲得即時收益,另一方面也在建立乾淨的程式碼,以方便將來的開發工作。 -《Kent Beck的實作模式》 CH4動機 p.47-48
看見第2~3點時,忽然有錯覺以為是在讀投資策略的書XD
Chapter 7
『輸入若是垃圾,輸出也會是垃圾。』
客戶對功能的設想,其實經不起在電腦前真刀實槍的考驗。
『完成』意味著所有程式碼都寫完了,所有測試都通過了,QA和需求方已經認可。
測試是為了確定系統的各項指標符合要求。
絕不能被動接受測試!
職責是協助團隊開發出最棒的軟體。
=================================
【過早精細化】 業務方未啟動專案,就精確要知道最後能得到什麼;開發方尚未評估整個專案,就希望精確知道要交付什麼。
-東西畫在紙上與真正做出來,是不一樣的。
- 不確定原則(或稱觀察者效應): 每次向業務方展示一項功能,他們將獲得更多資訊,而這些新資訊進而影響他們對整個系統的看法。
-需求完成得越精確,就越容易被忽視。
-即便擁有全面精確的資訊,評估也通常存在巨大變數。
-需求是一定會變化的,所以追求那種精確性是白作工的。
【遲來的模糊性】 為避免過早精細化,就盡可能地『推遲』 精細化。專業開發人員直到開發前一刻才將需求具體化,結果可能反而造成另一問題『遲來的模糊化』。
=================================
業務分析員:測試『正常路徑』,以證明功能的業務價值。
QA:測試『錯誤路徑』、邊界條件、異常、例外情況,考慮哪些部分可能會出問題。
=================================
驗收測試 != 單元測試
單元測試: 1程式設計師to程式設計師 2正式的設計文件,描述底層結構&程式碼行為。 3關心者為程式設計師。 4深入系統內部執行,呼叫特定類別的方法。
驗收測試: 1業務方to業務方 2正式的需求文件,描述業務方認為系統應如何運行。 3關心者為業務方&程式設計師。 4在系統外部,通常是在API或UI層級進行。
這兩者首重的是『文件』,然後才是測試。 它們的主要目的是以文件如實描述系統的設計、結構、行為。
=================================
Chapter 1
重構:修改程式的實務作為,藉此改良其內部結構,而不會改變其外在行為。
預購:利用你從經驗累積而得的洞察力以及他人的經驗,藉以開發軟體。
Some Noun
※ Extreme Programming 極致編程,簡稱XP。
※ Extreme Abstraction 極致抽象化
※ Extreme Separation 極致區隔
※ Extreme Readability 極致可讀性
Chapter 3
※ 回歸測試(regression testing) :是當程式進行修改之後,檢查修改之前能正常執行的功能是否仍舊能無誤地執行。
Chapter 5
※ TDD三大法則
第一法則:在撰寫一個單元測試 (測試失敗的單元測試) 前,不可撰寫任何產品程式。
第二法則:只撰寫剛好無法通過的單元測試,不能編譯也算無法通過。
第三法則:只撰寫剛好能通過當前測試失敗的產品程式。
※ 事後寫的測試只是一種『防守』, 而先行編寫的測試則是『進攻』。
事後編寫測試的作者已經受制於已存在的程式碼,他已經知道問題是如何解決的。 與採用先行方式編寫的測試程式碼比起來, 後寫的測試在深度和捕抓錯誤的靈敏度方面要遜色很多。
人生的『過程』是在遵循自己的熱情, 找出你認為值得追求的目標, 然後朝那個目標持續努力。 結果往往會有極為豐厚的外在獎賞, 但你的方向以及動機卻是源於內在。
Charles Wheelan 《非典型人生建言》p.63
Chapter 9
番茄工作法: 設定計時時間,於這段倒數時間不要讓任何事情干擾你的工作。
番茄時間: 有生產效率的,你可以真正做點事。
非番茄時間: 用於應付干擾、參加會議、休息等非工作事宜的時間。
《無暇的程式碼 番外篇》p.154