作爲一個工作時間並不算長的phper,卻參與了兩家公司的代碼重構.下面談談我的一些感受.
在mjm公司,當時我負責日常的需求開發和2.0的重構.當初的重構更多的是clean codes和一些代碼規範上的.用了phpcs去規範代碼,封裝了一些重複的代碼.並使用了單元測試,對重構的部分run了一遍.從做事習慣上來看,算是比較嚴謹.但重構效果也只是修修枝葉罷了.甚至可以說並沒有做到真正意義上的重構,當然這也和我當時的能力有限有關.
重構不是重生,但是卻能讓整個項目煥然新生.我上個月開始了一個新的項目,我第一次獨自架構一個項目,從底層慢慢搭架子.我開始發現並不是說mvc框架就能解決所有或者說規避設計模式的使用.我開始發現了設計模式和面向對象原則在很多地方可以使用開來,下面我一一道來.
第一個要說的肯定是類的單一職責性.在<<設計模式之禪>>裏面開篇就在講這個,這個概念也是飽受爭議.不是說這個原則有錯,而是我們因爲個人能力見解以及實際情況的不同,對一個類的職責劃分可能出現很多分歧.
一個類最好只做它本職工作的東西,不要太"牛",什麼都去實現。其實這和人做事的道理是一樣的,全面發展往往都是全面平庸,點帶動面自然是例外。
我後面所舉例都是基於cakephp框架下的實踐,對cakephp並不熟悉的人,可以自己google.
比如我在處理一次對數據的再加工的func的時候,我並沒有往之前處理批量的那個helper類裏面去增加一個新的func,而是重新創建了個對應的SingRow類,把新的處理func給了它。讓批量處理的去找專門批量處理的類,各司其職。就算以後有了新的處理要求,我也能很輕鬆地進行add.如果長期扔給老的類,最後會導致類的過於臃腫。
讓類專一一點。清爽的代碼和結構,會讓你後面run better.
越簡單的道理,我們越會忽略,但是這是真正寫出better codes的first step!