今天把〈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
- The code contains an instance of the switch key word.
- A switch has more than two branches (including default statement.)
- Each branch has more than a threshold value of line of code.
- 狀況2
- The code contains an instance of if-else key work.
- This if-else block has more than two branches.
- 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位專家來幫他們打分數。專家的背景與評分結果如下。
4位專家背景,2位來自學術界另外2位是開發人員。
4位專案對於作者所提出5個壞味道定義的看法
***
看完這三篇,鄉民們也可以自己打幫這5個修正後的壞味道打分數,看看和這4位專家的看法有多少差異。
***
友藏內心獨白:倒數2個壞味道比較難單純從結構上判斷。
沒有留言:
張貼留言