編寫干凈代碼的重要性
譯文【51CTO.com快譯】在金融行業(yè),可理解性指這個概念:應該以一種使讀者能夠快速輕松地理解的方式呈現(xiàn)信息。要做到可理解性,財務系統(tǒng)必須完整、簡潔、清晰且有條理。
需要將可理解性概念引入到軟件世界。
我們已看到,微服務、云和分布式系統(tǒng)的興起都增添了現(xiàn)代系統(tǒng)的復雜性。這意味著我們的開發(fā)團隊必須更努力地工作,才能高效構建可以由越來越多的開發(fā)人員輕松維護的應用程序。
我們如何編寫代碼?
可理解性始于我們編寫代碼的方式。作為開發(fā)人員,有必要花時間進行重構,以確保我們編寫的代碼易于被同事理解,還要易于被最終在下個月、下一年甚至十年后調試我們代碼的程序員理解。除此之外,只有內聯(lián)注釋和外部文檔完整、簡潔、清晰且有條理,才應批準變更請求。
- 完整:含有開發(fā)人員理解某個組件的預期行為所需要的所有信息。
- 簡潔:以一種易于掃描以查找重點內容,且不太麻煩或重復的方式來加以編寫;以一種含有相關信息,沒有太多其他信息的方式來加以編寫。
- 清晰:格式和介質易于掃描。在軟件開發(fā)界,這通常轉化為內聯(lián)注釋和維基頁面。
- 有條理:以一種使讀者易于相互對照信息的方式呈現(xiàn)信息。精心維護的維基頁面或者與IntelliSense工具或源代碼控制管理工具集成通常在這方面很有效。
文檔和注釋上花點時間似乎會減慢某項功能的開發(fā)。但正如有人曾說過,如果您有六小時的時間來砍樹,花前四個時間來磨斧頭是明智的。前期工作將使我們的應用程序將來調試和維護起來要容易得多。因為如果應用程序變得錯誤過多,太難支持,交接過程變得太耗時、效率低下,我們到頭來會把整個迭代開發(fā)周期(sprint)耗費在改進文檔、單元測試和日志記錄等方面上。
在微服務和分布式系統(tǒng)這個復雜的世界,開發(fā)人員花在閱讀代碼上的時間要比花在編寫代碼上的時間多10倍,因此我們編寫的代碼干凈、很容易展示給他人來得無比重要。
部署代碼后
即使您編寫了干凈、文檔完備的代碼,在云和分布式系統(tǒng)世界,仍然很難預測該代碼在部署后會有怎樣的行為。干凈的代碼好比詳細的烹飪食譜:它清晰地闡明了應該發(fā)生的事情,您在準備飯菜過程中會常常查閱食譜,但是食譜可能無法知道烤箱的當前溫度或您如何混合了配料。
為了使我們的應用程序真正易于理解,我們必須能夠實時觀察代碼。日志記錄、跟蹤、監(jiān)測、錯誤跟蹤和性能分析之類的工具可以告訴我們代碼在運行時應用程序的實際行為。這與一開始編寫干凈的代碼一樣重要,因為雖然閱讀靜態(tài)代碼對于理解應用程序至關重要,但我們也知道,它永遠無法完全代表應用程序在生產環(huán)境中的實際行為。
這方面的一個典例就是配置。如果您的代碼存在基于配置的大規(guī)模切換情形,那么僅僅閱讀代碼可以表明可能出現(xiàn)什么情況。想了解實際情況,您必須了解運行時在使用的配置。
還要記住,到頭來目的是不僅限于觀察系統(tǒng),而是進入到我們真正了解系統(tǒng)的階段。這意味著我們需要集成到開發(fā)環(huán)境中的工具、在所編寫代碼的上下文中檢索數(shù)據(jù)的工具以及深入動態(tài)地查看代碼在實際環(huán)境下如何運行的工具。
大多數(shù)公司還沒有抵達成功彼岸。如果您具備了可觀察性,已經(jīng)領先于大多數(shù)公司。但是觀察到問題后,仍需要進行額外的工作才能真正深入了解應用程序中發(fā)生的情況。生產級調試器就是一個典例,這種工具解決了可理解性問題;我預計在接下來幾個月,這一類工具的討論會越來越多。
原文標題:The Importance of Writing Clean Code,作者:Liran Haimovitch
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】