軟件工程師完整的代碼質(zhì)量指南
譯文【51CTO.com快譯】有些人在使用軟件時會遇到出錯或體驗不佳的情況,但可能沒有意識到代碼質(zhì)量問題,但是軟件工程師查看軟件的代碼時可能知道這一點。造成這種情況可能是由于編程方式不合理,充滿錯誤,過于冗長,或在使用術語和命名約定時非常不一致。幸運的是,軟件工程師可以通過多種方法來提高代碼質(zhì)量,使其更易于檢查和測試,并減少以后必須修復所有錯誤的麻煩。
代碼質(zhì)量的基礎知識
代碼質(zhì)量是指代碼的屬性和特征。代碼質(zhì)量可能會根據(jù)組織的特定業(yè)務和團隊的特定需求而有所不同。雖然沒有明確的清單,但大致上有幾種策略或措施將高質(zhì)量的代碼與劣質(zhì)的代碼區(qū)分開。
良好代碼的標志:
- 清潔。
- 一致。
- 功能性或有用性—代碼應按其將要執(zhí)行的操作。
- 易于用戶理解,而不僅是編程者自己了解。
- 高效:簡潔的代碼。
- 可測試:良好的代碼應進行測試,以確保沒有錯誤或缺陷。
- 易于維護。
- 將來易于構建、重用或復制。
- 有良好的文件記錄:編寫得很好,并遵守公認的標準或風格指南。
值得注意的是,所有這些標志對于不同的人員或團隊來說可能意味著不同的含義。例如某人可能會認為代碼寫得清晰并且易于理解,而另一個人卻認為代碼不清楚并且很難維護。但是,使用一些參數(shù)會很有幫助。
文檔、代碼標準和樣式指南
正如行業(yè)專家Damien Conway所描述的那樣:“文檔和代碼中的注釋是編程人員向未來自己傳達信息的一種方式,說明了可能以某種方式編寫代碼的原因?;蛘邽槭裁磮F隊成員在特定時間做出了特殊決定,這也為其他團隊成員提供了做出決策的見解。”
代碼標準也有助于在整個團隊中提供統(tǒng)一的代碼,這讓其使用和維護變得更加容易。行業(yè)專家William Moore將它們描述為“特定編碼語言的一系列過程,是需要一種編碼格式、方法和不同的過程。”
樣式指南在一個地方提供了組織的標準約定(例如命名約定)和其他優(yōu)秀實踐。其目的是確保所有團隊成員的代碼都是一致的,從而更易于使用和審查。如果希望真正擁有并采用它,并且可能需要對團隊成員進行一些培訓,但是應該得到他們的同意。
谷歌、微軟和WebKit等一些公司已經(jīng)在網(wǎng)上發(fā)布了樣式指南,這些指南可以幫助用戶創(chuàng)建自己的樣式指南。此外,還有許多特定于編程語言的指南,例如為RealPython編寫Alexander Van Tol,為Python程序員提供了一些很好的資源,其包括特定于Python的樣式指南和應用代碼校驗(Linter)。
代碼審查的重要性
代碼審查對于確保良好的代碼并提供查找問題的方式至關重要,以便可以盡早解決。他們還可以確保所構建軟件的一致性和可靠性。對于采用DevOps方式的組織而言,代碼評審是理所當然的,并且已經(jīng)盡早地嵌入到流程中。發(fā)現(xiàn)錯誤越早,解決錯誤的速度就越快、越容易、代價也就越低。
SmartBear Software公司在2020年6月開展了一項全球在線調(diào)查活動,對20個不同行業(yè)的740多位軟件開發(fā)人員、測試人員、IT /運營專業(yè)人員以及業(yè)務負責人進行調(diào)查。受訪者認為代碼審查是提高代碼質(zhì)量最好的一種方式。
此次調(diào)查還表明,提高代碼質(zhì)量是影響代碼審查工具需求的業(yè)務驅動因素。
此外,接受調(diào)查的80%以上的開發(fā)人員表示,對代碼審查流程的滿意度與對軟件發(fā)布總體質(zhì)量的信心直接相關。
除了對代碼進行審查之外,一些受訪者表示,進行單元、連續(xù)和功能測試是提高代碼質(zhì)量的有效步驟之一。持續(xù)集成和集成也被認為是軟件開發(fā)的優(yōu)秀實踐。
就頻率來說,大約63%的受訪者至少每周一次參與某種形式的代碼審查。關于頻率和使用哪種方法的問題,27%的受訪者表示每天進行基于工具的代碼審查,而有19%的受訪者表示每周進行一次。
全面的代碼審查可以確保代碼符合良好代碼標志所提到的屬性。代碼審查可確保代碼高效、無缺陷、符合標準,并且其總體目標是在問題頻發(fā)之前盡早發(fā)現(xiàn)問題。
組織可以通過多種方式進行代碼審查,其中包括人工審查、配對編程、指導以及使用共享文檔以方便審查。但是,所有這些方法都可能很耗時,并且代碼審查工具提供了一種使過程自動化的方法。
審查代碼質(zhì)量的工具
大多數(shù)開發(fā)人員已經(jīng)使用GitHub維護其Git存儲庫,并習慣于使用pull請求和forks來檢查代碼。還有許多其他工具可幫助團隊實現(xiàn)代碼審查過程的自動化:
- Codacy
- Code Climate
- CodeGrip
- CodeScene
- Reviewboard
- Smartbear
- SonarQube
- Veracode
有關其他代碼檢查工具,需要查看在Geekflare公司編譯的列表。值得注意的是,安全性是代碼質(zhì)量的關鍵部分。
代碼質(zhì)量和安全性相似,因為可以通過靜態(tài)分析來識別這兩種類型的問題。開發(fā)人員通常使用靜態(tài)分析方法來設計和測試組件。在這種情況下,代碼可能沒有運行或執(zhí)行,但是工具本身使用源代碼作為輸入數(shù)據(jù)執(zhí)行。靜態(tài)分析使開發(fā)人員還可以使用工具早期發(fā)現(xiàn)安全問題,通常是在編寫代碼時實時發(fā)現(xiàn)。這些工具在開發(fā)人員編寫時進行掃描,然后在工程師的集成開發(fā)環(huán)境(IDE)或編輯器中標記任何的安全問題。通過查看通過應用程序的數(shù)據(jù)流路徑,靜態(tài)分析工具可以識別應用程序在哪里處理數(shù)據(jù)或代碼會產(chǎn)生意想不到的結果。
靜態(tài)代碼審查軟件還可以幫助開發(fā)人員了解代碼結構和編碼標準,并實施自己的編碼標準。當開發(fā)人員將代碼直接投入生產(chǎn)時,靜態(tài)代碼分析還可以驗證代碼質(zhì)量,減少以后出現(xiàn)的錯誤。這些工具可以識別應用程序對數(shù)據(jù)錯誤的處理或代碼導致意外后果時對數(shù)據(jù)錯誤的處理。
代碼重構
另一種提高代碼質(zhì)量的方法是重構。源代碼重構將雜亂的、不正確的或重復的代碼轉化為具有較低復雜性的干凈代碼。它解決了當多個開發(fā)人員提交他們自己的代碼時可能出現(xiàn)的標準化問題。重構后的代碼更易于閱讀和維護,它也更容易擴展和添加新功能。刪除不必要的部分(如重復項)也會導致代碼使用更少的內(nèi)存,執(zhí)行速度更快。
減少技術債務
生成不良的代碼最初可能看起來很有效,但是一旦需要修復,可能會帶來麻煩。從一開始就生成高質(zhì)量代碼的優(yōu)點之一是減少了技術債務。良好的代碼起初可能需要更長的時間才能生成,但是可以減少錯誤修復和重構的時間,并且消除技術債務帶來的長期痛苦。而高質(zhì)量的代碼可以使長期開發(fā)和可維護性更加容易。
提高代碼質(zhì)量的方法之一是不斷跟蹤技術債務并確定其優(yōu)先級,以便使業(yè)務案例能夠重構代碼庫中最重要的部分。
結論
編寫高質(zhì)量的代碼不僅可以帶來更高質(zhì)量的軟件,而且可以提高團隊滿意度。當使用工具和框架以及樣式指南來消除決策中的許多猜測時,這一點尤其重要,從而使開發(fā)人員能夠專注于更關鍵的任務。然而,保持高質(zhì)量的代碼與編寫代碼一樣重要,可以防止出現(xiàn)技術債務問題。
原文標題:The Engineer’s Complete Guide to Code Quality,作者:Cate Lawrence
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】