關(guān)于后端展示層的思考

背景

??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)

  1. App的版本升級
    ?? App在業(yè)務(wù)迭代中不斷升級,展示層不斷改變,Web層接口為了適應(yīng)App的展示改動(dòng),勢必會(huì)導(dǎo)致Web層出現(xiàn)多個(gè)版本的代碼糾纏和粘合的現(xiàn)象.
  2. 業(yè)務(wù)迭代沒有重構(gòu)時(shí)間
    ??在每一次的業(yè)務(wù)迭代的資源分配中,業(yè)務(wù)方?jīng)]有給與技術(shù)迭代的時(shí)間和資源,在一次次迭代后技術(shù)債務(wù)堆積,沒有時(shí)間處理和消化.
  3. 惰性和責(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é),去逐漸提升,共勉!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)結(jié)構(gòu)隊(duì)列集合鏈表、數(shù)組字典、關(guān)聯(lián)數(shù)組棧樹二叉樹完全二叉樹平衡二叉樹二叉查找樹(BST)紅黑樹B-,B+,B*樹...
    jackcooper閱讀 3,381評論 1 50
  • 后端架構(gòu)師技術(shù)圖譜 最后更新于20180502 數(shù)據(jù)結(jié)構(gòu)隊(duì)列集合鏈表、數(shù)組字典、關(guān)聯(lián)數(shù)組棧樹二叉樹完全二叉樹平衡二...
    01_小小魚_01閱讀 1,879評論 0 38
  • 1.從傳統(tǒng)三層架構(gòu)與DDD分層架構(gòu)的編程演變其實(shí)是思想的演變。 傳統(tǒng)三層架構(gòu),即用戶界面層UI、業(yè)務(wù)邏輯層BAL、...
    咖啡電視閱讀 8,624評論 0 6
  • Django是一個(gè)Python界的Web開發(fā)框架,符合MVC模式,只不過對應(yīng)到Django是MTV(T為Templ...
    利來有道閱讀 1,098評論 0 1
  • 久違的晴天,家長會(huì)。 家長大會(huì)開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,828評論 16 22

友情鏈接更多精彩內(nèi)容