設計異味

設計異味是計算機編程領域 ， 設計所用結構違背了基本設計原則並對設計質量有負面影響 。 這個術語源自馬丁 · 福勒在 《 重構 - 改善既有代碼的設計 》 一書中描述的代碼異味 。 不同作者對 “ 異味 ” （ smell ） 有不同的定義 ： N. Moha等 ： “ 代碼與設計異味是差的解決方案 ， 導致了實現與設計問題 ” R. C. Martin ： “ 設計異味是腐敗的軟件的氣味 ” Fowler ： “ 異味是代碼中特定的結構導致了重構的可能 ” 設計異味指示了積累的設計負債 （ 技術負債的主要維度 ） 。 Bug與未實現功能不算是設計異味 。 設計異味產生於很差的設計決策 ， 使得設計脆弱 、 難於維護 。 在一個軟件系統中辨別設計異味 ， 應用適當的重構去除異味 ， 避免積累技術負債 ， 是好的實踐 。 在確定特定結構或決策是否算作設計異味時 ， 上下文環境 （ 如問題清單 、 設計生態圈 、 平臺等 ） 扮演了重要角色 。 很多時候 ， 由於上下文環境所限 ， 只好容忍設計異味 。