軟體預先架構(一)

摘要:軟體預先架構(一)

何謂預構(Prefactoring)
利用自己累積或他人的經驗,藉以開發軟體。


預構的焦點應該放在,如何使用元件而非該怎麼讓元件運作。
這邊讓我想到敏捷軟體開發書中所提到的,先寫出如何使用方法、類別,再去補足這些方法、類別的動作。
而這樣做有一個好處,就是未來重構時,不變動外在行為,只改變內部實作。


預構有許多方針可以參考,主要以三個極致,

  1. 極致抽象化
  2. 極致區隔
  3. 極致可讀性

抽象化:如同上面所提到的,專注於要什麼,而非該怎麼運作。
這邊書中提到,各種概念絕對不要用基本資料型態描述,似乎是在說明不要有魔術數字(magic number)
 

區隔:將不同類別、方法、變數之間的責任切割出來。
跟單一職責的概念應該是雷同的,而這樣做的原因,在於未來重構或擴充時,只需修改一個類別,不會影響到其他類別,而非偶合性太高導致整個類別都要修正。
不過這邊有一個議題,如何拆解類別,要拆幾個,這也一直困擾著我。

可讀性:為了自己與他人未來的維護,一個有規範的命名方式與風格是必要的,規範有很多種,微軟、java、C語言都有不同的建議的規範文件,而我個人認為,只需要專注於一種上面就好,至少很容易讓其他工程師很快就可以了解我的風格。

情境就是一切小節中提到,要用什麼原理、設計模式、物件導向...等,取決於當下的情況,而非為了達到一個原理則套用。

回顧自身經驗,當程式遇到臭蟲,並非馬上除去臭蟲,而是要了解為何會造成臭蟲的產生,記得我剛進入公司時,大多時間都在除錯,剛開始都是只是為了除錯而除錯,臭蟲消失,也就不管了,可以運行就好,直到同樣的狀況又發生時,才發現我當了第二次笨蛋,此時,才開始先了解為何有錯誤的產生,才能避免下一次再發生同樣的狀況。

本章節最後有提到,作者主要在面對所有的情境中,透過極致編成中反覆流程與漸增流程所組合的複合式流程。

敏捷軟體開發第六章,編成插曲中大致上使用的應該就是這兩個流程,一開始會將大致的架構訂出來,細節於開發時,遇到問題調整,談到細節在設計,反覆的重構,直到實作完。

 

如文章有錯誤,煩請告知,新人發帖請多包涵

 

創用 CC 授權條款