天天看點

靈活設計-腐化軟體的氣味腐化軟體的氣味總結

靈活設計是一個過程,而不是一個事件。它是一個持續的應用原則、模式以及實踐改進軟體結構和可讀性的過程。

腐化軟體的氣味

當軟體出現下面現象,表明軟體正在腐化。

  • 僵化性
  • 脆弱性
  • 頑固性
  • 粘滞性
  • 不必要的複雜性
  • 不必要的重複
  • 晦澀性

僵化性

給了一個看起來簡單的改動的合理估算,實際改動時發現改動帶來的很多影響并沒有預測到,需要修改的子產品數目遠遠超過最初的預測,所話費的時間比初始估算的長。

脆弱性

進行一個改動時,可能會導緻程式的許多地方出現問題。出現新問題的地方與改動的地方并沒有概念上的關聯。要修正這些問題又會引起更多的問題。

頑固性

設計中包含了對其他系統有用的部分,要把這部分從系統分離出來所需要的努力和風險是巨大的。

粘滞性

粘滞性有兩種表現形式。

軟體的粘滞性,一些方法會保持設計;另外一些會破壞設計(拼湊的方法),當可以保持系統設計的方法比拼湊手法更難應用時,表明設計具有高粘滞性;

環境的粘滞性,開發華甯遲鈍,低效時,會産生環境的粘滞性。比如編譯時間很長,開發被引誘做不會導緻大規模編譯的改動,破壞原設計。

不必要的複雜性

設計中包含了目前沒有用的組成部分,它就含有不必要的複雜性。這些麼有用的組成部分往往來自于開發預測需求的變化,在軟體中設定的應變代碼。

不必要的重複

複制和粘貼的代碼。當在一個重複代碼體重發現了錯誤,就必須在每個重複體中一一修改,但是每個重複體之間都會有細微的差别,修正方式也不盡相同。

晦澀性

子產品難以了解,開發人員必須站在代碼閱讀者的角度,努力的對代碼進行重構。

總結

靈活開發人員緻力于保持設計盡可能的适當、幹淨。不是每幾周才"清潔"他們的設計,而是每天,每小時甚至每分鐘都要保持軟體盡可能的幹淨、簡單并富有表達力。下面會介紹一些原則,靈活開發人員不會把這些原則應用到一個龐大的預先設計中。相反,這些原則被應用在一次次的疊代中。沒有任何征兆的情況下,應用這些原則是不明智的。