背景
??19年末重構(gòu)的項(xiàng)目在經(jīng)歷半年的業(yè)務(wù)迭代后web層的代碼已經(jīng)開始混亂,沒有秩序,可讀性下降,由此引發(fā)一些的思考.
序
??在一次同事相互CodeReview中發(fā)現(xiàn),業(yè)務(wù)中負(fù)責(zé)對接App接口的Web項(xiàng)目在半年的業(yè)務(wù)迭代中,代碼的可讀性,擴(kuò)展性已經(jīng)出現(xiàn)壞味道,在原有代碼上開發(fā)的效率已經(jīng)開始下降,代碼的業(yè)務(wù)含義也不再清晰,為了解決或避免這類問題,我們需要思考并總結(jié).
問題出現(xiàn)的原因
??Web層代碼現(xiàn)象到底是如何出現(xiàn),并發(fā)展的?這是要考慮和研究清楚的.只有發(fā)現(xiàn)問題出現(xiàn)的規(guī)則,才能從底層解決不在復(fù)現(xiàn)
- App的版本升級
?? App在業(yè)務(wù)迭代中不斷升級,展示層不斷改變,Web層接口為了適應(yīng)App的展示改動(dòng),勢必會(huì)導(dǎo)致Web層出現(xiàn)多個(gè)版本的代碼糾纏和粘合的現(xiàn)象. - 業(yè)務(wù)迭代沒有重構(gòu)時(shí)間
??在每一次的業(yè)務(wù)迭代的資源分配中,業(yè)務(wù)方?jīng)]有給與技術(shù)迭代的時(shí)間和資源,在一次次迭代后技術(shù)債務(wù)堆積,沒有時(shí)間處理和消化. - 惰性和責(zé)任
??還有一部分原因是人本身的惰性導(dǎo)致,懶于去優(yōu)化,去重構(gòu),去添加注釋和日志,去提高代碼的質(zhì)量和優(yōu)雅性.對于一些勤奮且對代碼有要求的同事,承擔(dān)代碼重構(gòu)導(dǎo)致的后果和責(zé)任是另一方面顧慮,在沒有完備的自動(dòng)化測試和充足的黑盒測試資源下,貿(mào)然改動(dòng)老舊代碼導(dǎo)致線上事故,并背負(fù)批評和責(zé)備是非??膳碌?
是否有解決方案
??上面的問題中,2和3是開發(fā)的共性問題,就不在這里詳細(xì)論述,我們專注于問題1.
??App的版本升級導(dǎo)致的問題,我認(rèn)為是有解決方案的,并且可以在代碼維度從根本上解決這類問題.
解決方案
??這類接口版本兼容導(dǎo)致的代碼腐爛和壞味道等問題,其實(shí)都可以通過模板方法結(jié)合工廠方法實(shí)現(xiàn)良好的擴(kuò)展性和可讀性.
??思想就是通過模板方法實(shí)現(xiàn)代碼復(fù)用和擴(kuò)展性,利用工廠方法實(shí)現(xiàn)接口版本和實(shí)現(xiàn)的關(guān)聯(lián).
文末
??具體的代碼就不貼出來了,實(shí)現(xiàn)起來沒有什么難度,真正困難的是能夠在項(xiàng)目啟動(dòng)時(shí)候,就架構(gòu)出一套可擴(kuò)展的方案,或是項(xiàng)目迭代中,有魄力去重構(gòu)代碼,化腐朽為神奇.
??寫代碼能力很容易通過短時(shí)間工作達(dá)到90分的,而架構(gòu)能力需要不斷的去思考和總結(jié),去逐漸提升,共勉!