作者:苗現方
想要做好代碼質量,我們不得不提什么是代碼質量?本文中討論的代碼質量一般是指代碼的風格、重復率和復雜度等,代碼是技術團隊的價值產物,是寶貴的財富,同樣代碼質量的好壞可以直接體現出團隊的重視程度和技術管理水平,
代碼質量的下降是內在原因,通常會惡性回圈,主要表現出以下兩個特性:
感染性:壞代碼總能在部門渲染著只要業務交付達成,代碼質量不重要的負面氣氛,嚴重減低了研發人員的技術熱情,破壞作業氛圍,導致更多的壞代碼出現,
心理暗示性:在壞代碼基礎上繼續生產壞代碼的"罪過"減輕,
為什么會產生這樣的結果,這里我與你舉個生活中的栗子,我在上個周日收拾房間,發現一個房間衣柜中的衣服很亂,花了很長時間才疊放好,過兩天晚上下班回家,我發現客廳沙發上也很亂,衣服、電腦、背包、零食幾乎日常的小物件都會有,兩件事情合在一起想,這確實是一個很有趣的思考,為什么會是這樣的?在一個相對封閉的空間中,任其無意識地隨著時間的發展,房間和沙發也一定很亂,注意,這里我說的是無意識,也就是我并沒有刻意放,或者去刻意整理,帶著這個思考的結果,我又觀察了大家的工位、園區內景觀,一段時間內一定會出現亂象,不過通過一頓治理之后很快恢復到有秩序,好,大家可以猜到這是什么定律,就是熵增定律,不了解的可以自行網路科普,那么在質量域中依然存在這樣的定律,不然熵增定律也不會被古今中外的物理學家所推崇備至,它的定義是:在一個孤立系統里,如果沒有外力做功,其總混亂度(即熵)會不斷增大,
代碼質量在軟體專案是一種有序的狀態,自然總是向著無序發展的,要想保持這種有序,需要主動投入資源,就像整理房間,花草修剪一樣,
回到我們的多數開發作業中,我們面臨的現狀是這樣的:
1、業務交付壓力大,需求優先上線,業務邏輯實作優先級最高,沒時間沒精力關注代碼質量,甚至終極目標就是需求上線,導致壞代碼產生,開發效率逐步下降,隨著后續版本的迭代,業務交付壓力越來越大,
2、出現了1的情況后,我們意識到壓力越來越大,為了應付這種交付壓力,常見的手段就是增加人力,但是一味的增加人數,溝通成本及風格的一致性無法得到保障,這將進一步產生更多的壞代碼,
針對以上2個現狀,我們該怎么著手解決,
我的建議方案是多渠道,系統性解決問題,首先控制人力的大量投入,主動發起對代碼質量進行管控,其次持續提升技術升級,但是,從減輕業務交付壓力的結果來看,人們往往傾向于增加人力來快速解決問題,技術升級需要靠長期的投入才能有所識訓,所以,我們需要在質量方面增加強有力的管控,
如果做好代碼質量管控?
代碼質量管控首先應解決兩個問題,庫存壞代碼和增量壞代碼,
想解決這兩個問題,我們要對現有的系統、人員、工具、流程整合形成一套體系化的方案,
對代碼質量管控,通過在部門內工程實踐,我認為需要經歷以下這四個程序,部門內建立代碼規范制度(EOS)、檢查代碼問題的自動化工具(bamboo平臺)、代碼質量檢查與代碼流動程序系結(質量門禁)、部門視角下,集中管理代碼規范和質量狀況的透明(代碼質量評測系統),
程序一:代碼質量的基礎是規范,包括代碼風格的規范、長期一線代碼實踐規范、與業務需求相關的特殊規范,例如風控文案、例外托底文案等,
程序二:實作自動化的檢查能力是在規范基礎之上,通過自動化工具進行檢查,包括對代碼重復率、圈復雜度、單測case通過率、靜態規則掃描等,
程序三:實作質量檢查與代碼流動程序系結,在編輯-構建-提交-發布各個時段部署檢查能力保障上線代碼必須經過機器和人工的多環節檢查,
程序四:團隊規模逐步擴大,各業務線專案快速發展,實作規范管理統一、專案要求一致、各專案質量狀況透明、對比,建立統一的評測體系,
為了讓你有一個很直觀的認識,我在下面畫了一個張圖,希望可以幫你快速理解,
總結:
在日常開發作業中,大家都會想到通過增加人手來緩解專案交付的壓力,這是可以理解,但是從整體角度看,人員的增加會產生越來越多的壞代碼,使整體的效率下降,這又進而加劇了后續專案交付的壓力,在這種壓力下,又通過增加人手緩解......讓代碼質量變的越來越差,這也是房間為什么會越來越亂,是熵增定律在軟體質量域的生動體現,
為了抑制這種惡性回圈,我們意識到了通過有效的手段和資源投入進行各項工程實踐,逐步完善代碼質量的管控體系,積累很多方法和工具,
目前,我也在積極探索對統一代碼質量評測體系的實踐,希望逐步建立一套中心化的代碼質量評測系統,在這個系統中讓工匠精神、專家文化借住平臺進一步傳播、讓系統的質量更加透明,有關評測的具體實踐,我在后續的文章中與大家分享,
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/538253.html
標籤:其他
上一篇:想要做好代碼質量,如何破局?
