有過慘痛維護經驗的開發者都會了解,程式是需要設計的!設計不良的架構,會在未來增修功能的時候,大喊要殺了某人;但追求完美設計的下場,反而會被不懂程式的非工程人員追進度,還會被嫌沒效率;「重構」能在這兩個極端之間取得一個平衡。它能在具備基本設計的架構上,持續以增修功能為目的,補足設計上的缺陷。不僅能持續交付程式碼,也能持續改善設計,好重構,不試嗎?
前言 在開始講重構前,先來講個小故事: 臺中都會區鐵路高架捷運化計畫目前豐原到大慶的高架化工程已完成九成左右了。以下撇開政治因素與技術細節,純粹就維基資料來討論...
昨天曾提到,難改的程式通常設計不會太好;程式會設計不好有很多因素,比方說,筆者最常看到的是:因趕上線而寫出設計不好的程式碼。 我們會因為某些因素,而寫出未來難以...
Teddy 再談技術債一文有提到,軟體品質有分「外在品質」與「內在品質」。外在品質是使用者直接感受到的品質,而內在品質則是開發者才有辦法感受到的真相。 「魚與熊...
昨天提到,開發者都是在第一線直接被技術債凌虐,是最有感覺的苦主。 在談技術債的時候曾說過:「事後被別人發現的才叫 bug ,自己開發當下發現的不算」,技術債也是...
敏捷軟體開發宣言是現正流行的開發精神。敏捷宣言雖然看起來有點抽象,其實背後有十二個原則: 我們最優先的任務, 是透過及早並持續地交付有價值的軟體 來滿足客戶需...
寫出好維護的程式要靠經驗累積的,初學程式經驗少,因此容易寫出有壞味道的程式。而有經驗的開發者,看到壞味道一定很敏感。但是檢查原始碼的狀況,也是得看人品。運氣不好...
雖然軟體量測很方便,也能找到很多可能有問題的程式碼,但最終還是需要人工檢查程式的設計。這時就需要原則(principle),讓檢視過程能有正確的方向。 SOLI...
原文定義是這樣子的: Software entities (class, modules, functions, etc.) should be open f...
一樣要考古一下原文: Subtypes must be substitutable for their base types. 子類別必須要能取代它的父類別...
Clients should not be forced to depend on methods that they do not use. 直譯:「客戶...