一.設計臭味
1.僵化性
僵化性是指難以對軟體進行改動,即使是簡單的改動。如果單一的改動會導緻有依賴關系的子產品中的連鎖改動,那麼設計就是僵化的。改動時,必須要改動的子產品越多,設計就越僵化。
2.脆弱性
脆弱性是指,在進行一個改動時,可能會導緻程式的許多地方出現問題。常常是,出現新問題的地方與改動的地方沒有概念上的關聯。
3.頑固性
頑固性是指,設計中包含了對其他系統有用的部分,但是要把這些部分從系統中分離出來所需要的代價很巨大的。
4.粘滞性
軟體粘滞性
當面臨一個改動時,開發人員常常發現會有多種改動的方法。其中,一些方法會保持設計;而另一些方法會破壞方法(也就是拼湊的方法)。當可以保持系統設計的方法比拼湊手法更難應用時,就表明設計具有很高的粘滞性。
環境粘滞性
當開發環境遲鈍。低效時,就會産生環境的粘滞性。
5.不必要的複雜性
如果設計中包含了目前沒有用到的組成部分,他就包含不必要的複雜性。為過多的可能性做準備,緻使設計中含有絕對用不到的結構,進而變得混亂。這些準備工作也許會帶來回報,但更多的不會有什麼好的回報。同時,設計時背負着這些用不到的部分,是軟體變得複雜,并且難以了解。
6.不必要的重複性
剪切和粘貼也許是有用的文本編輯器操作,但卻是災難性的代碼罪魁禍首。
7.晦澀性
晦澀性是指子產品難以了解。代碼随着時間而演化,往往會變得越來越灰色,讓開發人員越來越難了解子產品的工作方式。為了使代碼的晦澀性保持最低,就需要持續地保持代碼清晰和富有表達力。
二、軟體為何會腐朽
在非靈活的環境中,由于需求沒有按照初始預期的方式進行變化,進而導緻設計的退化。通常,改動都非常很急迫,并且進行改動的開發人員對于原始的設計思路并不熟悉。因而,雖然是可以對設計進行改動,但是卻在某種程度上違反了原始的設計。随着改動的不斷進行,這些诟病将漸漸的積累起來,直到惡性惡性良性腫瘤的出現。
三、什麼是靈活
靈活設計是一個過程,不是一個事件。它是一個持續的應用原則、模式以及實踐來改進軟體的結構和可讀性的過程。它緻力于保持系統設計在任何時間都盡可能的簡單、幹淨和富有表達力。