Refactoring in Python

2012年10月21日 星期日

Refactoring in Python


接觸了一陣子的Python

開始想要讓自己的程式碼能更有彈性化與更好Debug

所以在網路上搜尋了一下 Design Pattern for Python

真的有一堆東西

其中剛好有人寫到 Refactoring Python

就開始著手修改自己的Coding Style

底下會先用一個列出 動物有幾隻腳 的程式做為範例

在拿Refactoring後的程式與一開始常寫的東西做對比


重構前:
#!/usr/bin/env python

def animal_info(animal_type):
        feet = 0
        if animal_type == "lion":
                feet=4
        elif animal_type == "duck":
                feet=2
        elif animal_type == "dog":
                feet=4
        print "%s has %s feet"%(animal_type,feet)


if __name__ == "__main__":

        animal_info("lion")
        animal_info("duck")
        animal_info("dog")



重構後:
#!/usr/bin/env python

def animal_inspect(animal_type):
        animal_dict = {
        "dog" : { "feet":"4"},
        "duck" : { "feet":"2"},
        "lion" : { "feet":"4"}
        }

        animal_info = animal_dict[animal_type]
        animal_feet = animal_info["feet"]
        print "%s has %s feet"%(animal_type,animal_feet)

def main():
        animal_array = ["lion","duck","dog"]
        for animal_type in animal_array:
                animal_inspect(animal_type)


if __name__ == "__main__":
        main()



雖然重構後的架構會稍微的複雜些

但是如果要修改或是擴增上 就會便利許多

尤其是if else當越寫越長

就會越來越難debug

透過dict方式來替代if else的確是很棒的方式

0 意見 :

張貼留言