Posted on 2006-03-31 11:51
Terry的Blog 閱讀(1051)
評論(8) 編輯 收藏 所屬分類:
java語言
??????今天在javaeye上看到BirdGu的一席話,深有同感。
??????他說:“重構(gòu)的目的是什么?是為了滿足程序員對完美程序的不懈追求嗎?不是。重構(gòu)的目的是改善程序的結(jié)構(gòu),使程序有更好的可擴展性和靈活性,使得更容易擴充新功能的需要和應(yīng)對需求變更;同時使程序有更好的可讀性,方便其它程序員的閱讀和維護。這些當(dāng)然對用戶是有價值的,用戶為這些工作買單也是理所當(dāng)然的。?
??????有味道的代碼是從哪里來的呢?
人是不完美的,自然也不可能一開始就寫出完美的代碼。
另一方面,代碼的好壞有時并無法作出絕對的判斷。設(shè)計的過程是一個權(quán)衡的過程。某種條件組合下是好的,合理的權(quán)衡,另一種條件組合下會變成不好的,不合理的權(quán)衡。因此某些條件下是好的代碼,條件變化了,可能會變成不好的代碼,會需要重構(gòu)了。
先以最簡單的方式實現(xiàn)功能,然后再進(jìn)行重構(gòu)。實質(zhì)就是先提供用戶最需要的東西:實現(xiàn)功能。再提供額外的價值,就是可擴展性,靈活性和可維護性。這也是從用戶需要出發(fā)的。?
??????那么在最開始寫程序,甚至開始開發(fā)以前,我們能不能,需不需要做些工作以減少以后的重構(gòu)呢?關(guān)于這個問題請看今年Jolt大獎的獲獎作品:Prefactoring。“
??????不管做什么事情都要經(jīng)常提醒自己最終的目的是什么。重構(gòu)的目的不是滿足代碼潔癖,設(shè)計framework的目的不是練習(xí)各種Design pattern,下載電子書的目的不是收藏......