Web程式重構改善Web程式的設計JACEJU哇寶資訊技術總監重構是什麼?打掉重做!?重構就像握著方向盤在直路上開車一點一點修正你的程式碼重構保護你的程式碼重構前…程式碼是黑白的重構後…程式碼是彩色的重構不該改變原有功能所以重構是工程師自爽的工作那麼為什麼要重構?1.重構讓程式碼更具彈性2.重構讓程式碼更容易被看懂3.重構幫你找到Bug完全不會!都是常見的程式技法!重構困難嗎?隨時都可以重構無法判斷何時該重構的話,以下有幾個建議的好時機:•加新功能•修Bug•Review程式碼•當舊有設計趕不上變化那麼什麼時候需要重構?或是你聞到程式碼有以下壞味道時~•看不懂的程式碼•一堆複製貼上的程式碼•部份函式越來越大,功能越來越複雜•一個小功能,要更動好幾個地方•PHP,HTML,Style,JavaScript夾雜在一起那麼重構可以解決各種疑難雜症嗎?錯!重構不是萬靈丹!發現以下症狀時,重構是沒用的…•舊程式已經一團亂的時候•迫近死亡之線的時候測試才能確保重構的正確性但Web開發所牽涉到的測試範圍非常廣:•Server端應用程式•JavaScript•HTML畫面•資料庫•其他如何保證重構後功能不變?那麼Web程式重構到底要做些什麼?封裝常變化的部份•將常變動的設定移出程式外•將常改的Switch改為類別復用•包裝成函式或Plugin•減少SQL串接•善用主樣版易維護的程式碼•定義常數•對調常數判斷式•善用JavaScriptLibrary•可讀的函式參數•加上為什麼的註解(而不是怎麼做)架構重整•分離業務處理邏輯與資料呈現邏輯•單一檔案單一功能•單一程式或類別只做它該做的事•錯誤控制大部拆解分離業務處理邏輯與資料呈現邏輯PHPHTML單一功能單一檔案HTMLJSCSSPHP單一程式或類別只做它該做的事DB抽象層ModelController這邊最花時間,也不容易除錯錯誤控制dieException定義常數對調常數判斷式加上註解把可以Reuse的部份包裝起來包裝成函式或Plugin包裝成函式或Plugin減少SQL串接減少SQL串接把常變動的部份封裝起來可設定的程式可設定的程式將常改的Switch改為類別將常改的Switch改為類別將常改的Switch改為類別將常改的Switch改為類別JavaScript善用JavaScriptLibrary善用JavaScriptLibrary可讀的函式參數可讀的函式參數樣版善用主樣版善用主樣版還有更多重構技巧謝謝大家