【C++代码整洁之道】遗留系统之殇
遺留系統(tǒng)之殤
本系列文章均整理自《C++代碼整潔之道——C++17可持續(xù)軟件開(kāi)發(fā)模式實(shí)踐》
測(cè)試金字塔
在軟件開(kāi)發(fā)項(xiàng)目中有不同級(jí)別的質(zhì)量保證措施, 這些不同級(jí)別的質(zhì)量保證措施通常使用金字塔的形式形象的表達(dá), 也就是所謂的測(cè)試金字塔.
因?yàn)閷?shí)踐表明, 關(guān)于測(cè)試實(shí)施和維護(hù)的總成本是朝著金字塔頂端增長(zhǎng)的. 大型系統(tǒng)的測(cè)試和手動(dòng)的用戶驗(yàn)收測(cè)試通常是很復(fù)雜的, 并且一般需要大規(guī)模的組織又難以實(shí)施自動(dòng)化.
但是不幸的是, 在一些軟件開(kāi)發(fā)項(xiàng)目中, 你會(huì)發(fā)現(xiàn)退化的測(cè)試金字塔. 這些項(xiàng)目中人們把更多的精力投入到高層的測(cè)試中, 忽略甚至沒(méi)有單元測(cè)試.
破窗效應(yīng)
此理論認(rèn)為環(huán)境中的不良現(xiàn)象如果被放任存在, 會(huì)誘使人們仿效, 甚至變本加厲.
一幢有少許破窗的建筑為例, 如果那些窗不被修理好, 可能將會(huì)有破壞者破壞更多的窗戶. 最終他們甚至?xí)J入建筑內(nèi), 如果發(fā)現(xiàn)無(wú)人居住, 也許就在那里定居或者縱火. 一面墻, 如果出現(xiàn)一些涂鴉沒(méi)有被清洗掉, 很快的, 墻上就布滿了亂七八糟的東西. 一條人行道有些許紙屑, 不久后就會(huì)有更多垃圾, 最終人們會(huì)視若理所當(dāng)然地將垃圾順手丟棄在地上. 這個(gè)現(xiàn)象, 就是犯罪心理學(xué)中的破窗效應(yīng).
童子軍原則
在離開(kāi)露營(yíng)地的時(shí)候, 應(yīng)該讓露營(yíng)地比你來(lái)之前還要干凈.
改善代碼并不一定要大刀闊斧的去做, 也可能只是一次小小的清理. 例如:
- 重命名命名不佳的類, 變量, 函數(shù)或方法
- 將大型函數(shù)分解為更小的函數(shù)
- 讓需要注釋的代碼不言自明, 以避免注釋
- 清理復(fù)雜而令人費(fèi)解的 if-else 組合
- 刪除一小部分重復(fù)的代碼
代碼所有權(quán)集體化
代碼所有權(quán)集體化意味著我們應(yīng)該真正的融入團(tuán)隊(duì). 每個(gè)團(tuán)隊(duì)成員在任何時(shí)候都可以對(duì)任何代碼進(jìn)行更改或擴(kuò)展, 不應(yīng)該有這樣的態(tài)度 “這是 A 的代碼, 這是 B 的模塊, 我不會(huì)碰他們!”. 其他人可以接管我們寫(xiě)的代碼, 這應(yīng)該被當(dāng)做一種很高的衡量標(biāo)準(zhǔn), 團(tuán)隊(duì)中的任何人都不應(yīng)該害怕, 或者必須獲得許可才能整理代碼或添加新功能. 代碼所有權(quán)集體化這種文化將使童子軍原則很好的執(zhí)行.
是什么在阻擋我們的步伐
惡性循環(huán)
如何改善
我們首先開(kāi)啟了為遺留代碼補(bǔ)充單元測(cè)試的工作, 新需求按照 TDD 的方法進(jìn)行開(kāi)發(fā), 期望通過(guò)建立更加完善的測(cè)試體系來(lái)打破上述的惡性循環(huán)
但是為遺留系統(tǒng)補(bǔ)充單元測(cè)試確實(shí)非常困難, 任重道遠(yuǎn), 方向方法都還需要不斷的摸索改進(jìn).
總結(jié)
以上是生活随笔為你收集整理的【C++代码整洁之道】遗留系统之殇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 商品分类无限层级递归
- 下一篇: koa --- [MVC实现之一]自定