重構---重構手法-----替換演算法(Substitute Algorithm)
阿新 • • 發佈:2019-02-06
本文是在學習中的總結,歡迎轉載但請註明出處:
本文轉載,原作者:皮斯特勞沃
http://blog.csdn.net/pistolove/article/details/42582611開門見山
發現:你想要把某個演算法替換為另一個更清晰的演算法。
解決:將函式本體替換為另一個演算法。
//重構前 String foundPerson(String[] people){ for (int i = 0; i < people.length; i++) { if(people[i].equals("Don")){ return "Don"; } if(people[i].equals("John")){ return "John"; } if(people[i].equals("Dave")){ return "Dave"; } } return ""; }
//重構後 String foundPerson(String[] people){ List<String> candidates = Arrays.asList(new String[]{"Don","John","Dave"}); for (int i = 0; i < people.length; i++) { if(candidates.contains(people[i])){ return people[i]; } } return ""; }
動機
解決問題的方法往往會有很多種,但是其中總會有一些方法比另一些簡單。演算法也是如此。如果你發現做一件事可以有更加清晰的方式,就應該以清晰的方式取代複雜的方式。“重構”可以把一些複雜東西分解為較簡單的小塊,當有時候你就必須刪除整個演算法,待之以簡單的演算法。
隨著對問題有了更多瞭解,你往往會發現,在原先的做法之外,有更簡單的解決方案,此時,你就需要改變原先的演算法,使之變得更加清晰、簡潔。
在使用這項重構手法之前,你需要確定自己已經儘可能分解原先函式。替換一個巨大而複雜的演算法是非常困難的,只有先將它分解為較簡單的小型函式,然後你才能很有把握地進行演算法替換工作。