怎么提高代碼質量?-來自Google的研發經驗總結

發表于:2019-03-14來源:稀土掘金作者:稀土掘金點擊數: 標簽:代碼質量
你的團隊有沒有過這樣的經歷:開發效率低,招了很多人,天天加班,出活卻不多,線上bug頻發,領導發飆,中層束手無策,工程師抱怨不斷,查找bug困難。其實這些都是代碼質量差惹

你的團隊有沒有過這樣的經歷:開發效率低,招了很多人,天天加班,出活卻不多,線上bug頻發,領導發飆,中層束手無策,工程師抱怨不斷,查找bug困難。其實這些都是代碼質量差惹的禍。代碼質量是研發質量管理的根本,它決定了整個開發團隊的開發效率,項目質量,其他監控,告警,日志等手段都只能是事后補償。本文就如何保證代碼質量總結了一些經驗和方法,供大家參考。
代碼質量本身并沒有一個特別明確的量化指標,而且根據公司發展的不同階段,團隊規模的大小不同,項目性質的不同等,對代碼質量的要求也不盡相同.不過如果項目中出現以下情況時候,就說明代碼質量要值得重視了.
添加或修改一個簡單功能時,涉及要修改的地方特別多,而且很分散;
代碼不可復用:相似的功能無法復用代碼,要重新開發;
線上bug頻發,排錯困難,修復難度大,時間長;
有很多奇怪的代碼,代碼讀不懂,新人無法很快了解代碼;
代碼中坑特別多,不敢大動,一不小心就踩坑;
以上這些問題,基本上都是代碼質量不高導致的,包括代碼無注釋,無文檔,命名差,項目層次結構差,調用關系混亂,到處hardcode,臨時解決方案等等。怎么才能時刻保證代碼的高質量,避免以上問題發生?當然團隊的技術素質很重要,除此之外,還有一些方法可循的.
1. 吹毛求疵般地執行編碼規范
嚴格執行代碼編寫規范,可以使一個項目乃至一個公司的代碼具有完全統一的風格,就像同一個人編寫的一樣,而且命名良好的變量,函數,類和注釋,也無疑可以提高代碼的可讀性.具體落實到執行層面,可以參照Google的編碼規范或者java官方的編碼規范,網上可以找到,關鍵是要嚴格遵守,并且在code review時,嚴格要求,沒有按照規范的一定要指出并且要求修改.
實際情況往往是雖然大家都知道優秀的代碼規范是怎樣的,但在具體寫代碼的過程中,卻執行的差強人意,很多情況是認識上不夠重視,覺得一個變量或者函數的命名成哪樣關系不大,所以不夠推敲,注釋很多也都不寫,code review的時候大家也都事不關己心態,或者覺得沒必要太摳細節,導致慢慢的整個code base變得越來越差.所以這里還是要強調一下,細節決定成敗,提高團隊對代碼規范的認同及其嚴格的執行是關鍵.
2. 編寫高質量的單元測試
單元測試是最容易執行,且對提高代碼質量見效最快的方法之一還。但還是有很多公司對單元測試重視不夠,包括一些大的互聯網公司,不寫或者隨便寫寫。
有些工程師覺得有測試團隊就夠了,再寫單元測試就是浪費時間。其實測試團隊的測試和單元測試是在不同層面上的,測試團隊的測試一般是黑盒測試,系統層面的集成測試,對于復雜系統來說,組合爆炸,測試團隊無法窮舉所有的測試用例。單元測試是代碼層面的測試,一般是針對類的測試。既然無法從系統的整體上保證100%符合我們的預期,那單元測試起碼能保證我們代碼在細粒度上運行符合預期。
有些工程師認為開發任務重沒時間寫。這個還是沒有足夠重視單元測試,覺得是可有可無的部分,才會有這樣的想法。寫好單元測試,節省很多解決線上bug的時間,開發時間反而更充足了。
還有很多工程師雖然在寫單元測試,但只對正常流程做測試。代碼中的bug多數是寫代碼時異常情況沒有考慮全面導致的,正常流程一般不會出問題。單元測試的作用就在于測試各種異常情況下代碼的運行是否符合預期,所以只對正常流程測試無法發揮單元測試真正的作用。
一般情況下,單元測試代碼量要比要測試的代碼多,一般是1-2倍的樣子,寫單元測試本身沒有太多的技術挑戰,主要看工程師邏輯是否縝密,能夠考慮各種異常情況,寫起來比較枯燥,所以寫高質量的單元測試的一方面要靠工程師的耐心執行,另一方面要靠團隊的嚴格要求。當然這些都是建立在對單元測試重要性的認同之上。
3. 不流于形式的Code Review
如果說單元測試很多工程師不怎么重視,那code review就是不怎么接受.跟很多大型互聯網公司的人聊過,對code review都不怎么認可,大部分反應都是,這玩意不可能很好的執行,浪費時間,是的,code review做的再流暢,也是要花時間的,關鍵在于我們是愿意花2天寫代碼花5天修bug,還是愿意花3天寫代碼花半天修bug.
其實,code review的好處不僅僅是能夠大大提高代碼質量,減少代碼bug,你想想如果我們沒有code review,平時寫的代碼“偷偷”就commit了,難免有人不自律,有了code review,直播代碼,曝光dirty code,大家就會更認真些.其次來講,code review也是一種有效技術傳幫帶的途徑,每次code review都是一次案例的剖析,可以幫助初級的工程師培養編碼規范,提高編碼質量,設計能力甚至于架構能力,反過來,review別人寫的好的代碼,對自己也是一種學習和提高.

原文轉自:https://juejin.im/post/5c88ac2b5188257dda56c87e

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97