CODING DevOps 線下沙龍回顧一:DevOps 代碼質量實戰

11 月 22 日,由 CODING 主辦的 DevOps 技術沙龍系列「質量」專場在上海圓滿結束。在活動現場,四位來自騰訊等知名企業的技術大咖們分享了研發質量與效能的實戰經驗,與觀衆們共同探討如何採起有效手段以保證和提升軟件質量。程序員

本期沙龍回顧爲你們帶來的,是來自騰訊雲 CODING 佈道師楊周的議題——《DevOps 代碼質量實戰》編程

問題:人愈來愈多,代碼愈來愈亂

隨着團隊成員增多,每一個人在縮進、換行、空格以及大小寫方面有不一樣的習慣,致使代碼愈來愈亂。代碼風格問題尚且不致命,更嚴重的是這些問題:安全

  • Hard code:在代碼中書寫各類環境配置、連接、密鑰,致使安全風險
  • 魔法數字(Magic Number):難以理解和維護
  • 代碼行數過多:難以維護,違反面向對象的 SOLID 原則

很多業界大廠公佈了代碼規範,推薦你們直接採用,由於本身發明規範每每不夠全面,很難服衆。架構

代碼規範不僅是縮進換行問題,經過強制約束圈複雜度、文件行數和方法行數,可促使你們按照面向對象的方式設計。ide

如何強制執行代碼規範

有了代碼規範,但怎麼落地?是不少團隊面臨的問題。Lint 程序用來檢查代碼規範,各個語言(好比 Kotlin、Java、PHP)都有本身的規範和 Lint。函數

自動檢查代碼規範有三個時機:工具

  • IDE:最實時方便的,但須要全部人進行配置、某些 IDE 可能不支持
  • Git commit Hook:提交時,會調用命令行工具強制檢查,優勢是很是及時,然而存在可被刪除的風險
  • 服務端:在 Git push 以後,在服務端進行檢查,很可靠,但缺點是不夠實時

所以,建議同時使用這三種方式。測試

在代碼檢查以後,如何處理?老項目有成千上萬處不規範,很顯然不能一次清理乾淨,讓全部人停下老項目去清理老代碼並不現實,並且一次改動太多文件的風險也很高。所以建議使用增量檢查,尤爲是 Java 增量檢查方案比較複雜,詳情可識別下圖二維碼閱讀 CODING 文檔網站

服務端檢查:建議使用持續集成(持續不斷地把代碼集成到主幹,實現質量內建)。流程爲:鎖定 Git 主幹,全部人開發功能拉取小分支,小分支提交後觸發持續集成進行代碼規範檢查,經過以後再通知同事進行代碼評審,經過這套流程來提升代碼質量。CODING 持續集成兼容 Jenkins,圖形化界面易上手,若是項目已經在用 Jenkins 可平滑遷移。spa

代碼整潔了,但結果正確嗎?

不少項目到最後面臨的困境——沒有人敢改老代碼。好比開發人員會把已有函數如get() 複製一份再修改,變成了 get1()、get2(),這種作法致使項目逐漸潰爛。根源在於沒有人知道修改老代碼會不會致使其餘地方調用出錯。

在開發和測試分離的團隊架構中,一個負責任的開發者在寫了代碼以後要自測,而後提測給測試人員。可是後期你們逐漸會變得不耐煩,從自測 10 種狀況到 5 種狀況,再到只測一種,最後到徹底不自測直接提測,全部的壓力都慢慢轉移到了測試人員身上。負責任的開發逐漸變成不負責任的開發,問題仍是出在機制上。

國外十幾年前就開始這個方案:測試人員轉崗學編程開發,僅保留少部分的人工測試。開發人員本身寫測試代碼,測試覆蓋率不達標(好比 80%)則禁止合併。

開發人員如何對本身的代碼有信心?不是靠聰明才智,由於人總會百密一疏,即便頂尖的程序員也可能會犯最初級的問題,所以本身寫測試代碼纔是最可靠的方案,測試代碼覆蓋了多種邊界狀況,即便其餘人來改寫代碼也無需擔憂掛掉。

最晚何時開始自動化測試?

自動化測試很好,可是也面臨困境:業務太忙,沒有時間寫測試代碼。

從我的職業發展的角度,把手動操做 Postman 自測的時間用來寫自動化測試代碼,這樣一來,本身的水平獲得了提升,後續改代碼的時候重測時間也獲得了節省,再也不是一直堆業務代碼,難以成長。

之前中國的大公司項目質量廣泛十分糟糕,由於前 20 年是 2C 的紅利期,你們在快速搶佔市場,但如今到了守地盤的時候,這兩年大公司開始重視代碼質量問題,建議你們爲這個機遇早作準備。

從公司角度,主要看時機。好比 2C 項目逐漸成熟,用戶量變大,線上的故障損失已經大於多招開發人員的成本,或者隨着項目功能逐漸增長,迴歸測試時間愈來愈長,若是一個網站一天上線屢次,一天把整個網站全部功能測過來是不實際的,所以自動化測試才能保障持續的高上線頻率。而 ToB 項目初期出現了嚴重 bug 可能就要賠償客戶,所以初期就須要自動化測試。

代碼質量評級標準:從下圖中能夠看到,「優」級別的代碼質量標準圈複雜度最多容許 5,類行數不能超過 50,函數行數不能超過 10,測試覆蓋率需達到 90%。CODING的合做夥伴優普豐提供了 CSD 認證培訓,可以幫助開發者們達到相應的標準,可識別二維碼瞭解詳情。

那麼本次的分享就到這裏,你們能夠前往 B 站觀看演講視頻並獲取完整 PPT,或者前往 CODING 瞭解更多。

相關文章
相關標籤/搜索