天天看點

PHP舊系統基于命名空間重構經驗

命名空間其實隻是一個形式,最終目的是重構代碼,但這個過程想要一蹴而就是不可能的。

一開始給了一個僞命題:基于ThinkPHP的重構(不要問為什麼)。經過一段的實踐,發現這是一個大錯特錯的思維方式,其中遇到的坑在此略過不表。

首先,不要想着全盤基于命名空間重寫,而應該是基于局部的。

最終思考後的結果,是以Model層基于命名空間改造為目标,這樣可以在新的架構下重用系統中Model層資源。因為理論上Model層隻與資料打交道,耦合度最低。

但改造過程也發現一些問題,原來的Model層耦合了業務邏輯,甚至與session、cache等系統環境挂鈎,不是純粹的Db操作,而是含有很多業務代碼,這意味着這一部分的代碼在初步改造完成後,是無法在新架構中重用的。

這些存在問題的地方,也間接證明了一些基礎程式設計思想的正确性:OOP的本質是代碼重用;PSR系列規範對于提高代碼重用度的直接作用;代碼分層合理性對于代碼維護性的影響等;全局變量對代碼重用性的極度負面影響。

什麼是逐漸重構?

逐漸重構的基本原則是相容,不是推翻重來,隻要事情變成了推到重來,就不是重構,簡直就是重寫了。在創業小團隊,推到重寫,are u kidding me?

相容是重構的起點和過程,重用是結果;新的功能可以基于新的架構開發,但同時可以在平台内部重用已有功能代碼,是以這是一個過程。

上一篇: Focus