命名空間其實只是一個形式,最終目的是重構代碼,但這個過程想要一蹴而就是不可能的。 一開始給了一個偽命題:基於ThinkPHP的重構(不要為什麼)。經過一段的實踐,發現這是一個大錯特錯的思維方式,其中遇到的坑在此略過不表。 首先,不要想著全盤基於命名空間重寫,而應該是基於局部的。 最終思考後的結果,是 ...
命名空間其實只是一個形式,最終目的是重構代碼,但這個過程想要一蹴而就是不可能的。
一開始給了一個偽命題:基於ThinkPHP的重構(不要為什麼)。經過一段的實踐,發現這是一個大錯特錯的思維方式,其中遇到的坑在此略過不表。
首先,不要想著全盤基於命名空間重寫,而應該是基於局部的。
最終思考後的結果,是以Model層基於命名空間改造為目標,這樣可以在新的框架下重用系統中Model層資源。因為理論上Model層只與數據打交道,耦合度最低。
但改造過程也發現一些問題,Model層耦合了業務邏輯,甚至與session、cache等系統環境掛鉤,不是純粹的Db操作,而是含有很多業務代碼,這意味著這一部分的代碼在初步改造完成後,是無法在新框架中重用的。
這些存在問題的地方,也間接證明瞭一些基礎編程思想的正確性:OOP的本質是代碼重用;PSR系列規範對於提高代碼重用度的直接作用;代碼分層合理性對於代碼維護性的影響等;全局變數對代碼重用性的極度負面影響。
什麼是逐步重構?
逐步重構的基本原則是相容,不是推翻重來,只要事情變成了推到重來,就不是重構,簡直就是重寫了。在創業小團隊,推到重寫,are u kidding me?
相容是重構的起點和過程,重用是結果;新的功能可以基於新的框架開發,但同時可以重用已有功能代碼,所以這是一個過程。