l

2015年1月23日 星期五

更精確的壞味道定義(下)

Jan. 20 10:52~11:27
螢幕截圖 2015-01-20 11.26.52

 

今天把〈Improving the Precision of Fowler’s Definitions of Bad Smells〉這篇論文做結尾,介紹Switch Statements這個壞味道的定義,以及4位專案業人員對於作者所修正的壞味道定義的認同度。

***

Switch Statements(Switch敘述)

先看一下Fowler書中對於Switch Statements壞味道的原始定義:

The problem with switch statement is essentially that of duplication. Often you find the same switch statement scattered about a program in different places. If you add a new clause to the switch, you have to find all these switch statements and change them. So most times you see a switch statement you should consider polymorphism. 

這篇論文把Switch Statements壞味道改用下列兩種狀況來表示(直接引用論文的內容):

  • 狀況1
    1. The code contains an instance of the switch key word.
    2. A switch has more than two branches (including default statement.)
    3. Each branch has more than a threshold value of line of code.
  • 狀況2
    1. The code contains an instance of if-else key work.
    2. This if-else block has more than two branches.
    3. The logic expressions in the if-else statements are type checking expressions using instanceof key words.

和Fowler的定義相比,論文的定義並沒有指出switch statement所造成的duplication問題,所以Teddy覺得狀況1的定義沒什麼用。至於狀況2指出在if-else條件式中使用 instanceof 有很高的機率是不好的用法,但這是否過度擴充原本Switch Statements壞味道的適用範圍,要花點腦筋思考一下。

關於Switch Statements壞味道,可以參考〈談談壞味道(6):Switch Statements & Parallel Inheritance Hierarchies〉。

***

為了驗證作者所提出這5個壞味道修正定義的有效性,作者找了4位專家來幫他們打分數。專家的背景與評分結果如下。

螢幕截圖 2015-01-20 11.19.05

4位專家背景,2位來自學術界另外2位是開發人員。

 

螢幕截圖 2015-01-20 11.19.25

4位專案對於作者所提出5個壞味道定義的看法

***

看完這三篇,鄉民們也可以自己打幫這5個修正後的壞味道打分數,看看和這4位專家的看法有多少差異。

***

友藏內心獨白:倒數2個壞味道比較難單純從結構上判斷。

沒有留言:

張貼留言