編寫go語言代碼三條基本原則
這是一篇翻譯文章,為了使讀者更好的理解,會在原文翻譯的基礎增加一些講解或描述。
軟件工程是當您添加時間和其他程序員時編程發生的事情。— Russ Cox
Russ 正在區分軟件編程和軟件工程。前者是您為自己編寫的程序,后者是隨著時間的推移許多人會使用的產品。工程師會來來去去,團隊會擴大和縮小,需求會改變,功能會被添加,錯誤會被修復。這是軟件工程的本質。
三條基本原則
- 清晰可讀
- 化繁為簡
- 生產力
你會注意到我沒有說性能或并發性。有些語言比 Go 快一點,但它們肯定不像 Go 那樣簡單。有些語言將并發作為最高目標,但它們的可讀性和生產力都不高。性能和并發性是重要的屬性,但不如清晰、簡單和生產力重要。
1.1 清晰可讀
程序代碼應該主要是方便人類閱讀,并且可以在機器上運行。代碼的閱讀次數比編寫次數多得多。一段代碼在其生命周期中將被閱讀數百次,甚至數千次。清晰很重要,因為所有軟件,不僅僅是go程序,都是由人類編寫的,以供其他人閱讀。機器也使用軟件這一事實是次要的。
如果你正在為自己編寫一個程序,也許它只需要運行一次,或者你是唯一會看到它的人,那么就做對你有用的事情。但是,如果這是一個多人貢獻的軟件,或者人們會在足夠長的時間內使用它,要求、功能或運行它的環境可能會發生變化,那么您的目標必須是為您的 程序是可維護的。
1.2 化繁為簡
簡單是可靠性的先決條件。— Edsger W. Dijkstra
為什么我們要追求簡單?為什么 Go 程序簡單很重要?
控制復雜性是計算機編程的本質。— Brian Kernighan
我們都遇到過你說“我無法理解這段代碼”的情況,是嗎?我們都參與過你害怕做出改變的程序,因為你擔心它會破壞程序的另一部分;您不了解且不知道如何修復的部分。這是復雜性。
構建軟件設計有兩種方式:一種是簡單到沒有明顯的缺陷,另一種是復雜到沒有明顯的缺陷。第一種方法要困難得多。— C. A. R. Hoare
復雜性將可靠的軟件變成了不可靠的軟件。復雜性會扼殺軟件項目。因此簡單是 Go 的最高目標。無論我們編寫什么程序,我們都應該同意它們很簡單。
1.3 生產力
設計是一門藝術,要求編寫的代碼當前可用,并且以后仍能被改動 --Metz
我要強調的最后一個基本原則是生產力。開發人員的生產力是一個龐大的話題,但歸結為這一點;你花多少時間做有用的工作而不是等待你的工具或絕望地迷失在外國代碼庫中。Go 程序員應該覺得他們可以用 Go 完成很多工作。
有玩笑說 Go 是在等待 C++ 程序編譯時設計的。快速編譯是 Go 的一個關鍵特性,也是吸引新開發人員的關鍵特性。編譯速度是經久不衰的話題,公平地說,在其他靜態語言中需要幾分鐘的操作,在 Go 中只需要幾秒鐘。這有助于 Go 開發人員感覺與使用動態語言工作的同行一樣高效,而不會出現那些動態語言固有的可靠性問題。
Go 程序員需要意識到編寫代碼是為了閱讀,因此將閱讀代碼的行為置于編寫代碼的行為之上。Go 甚至通過工具和自定義來強制所有代碼都以特定樣式格式化。這消除了學習項目特定方言的困難,并有助于發現錯誤,因為它們看起來不正確。
Go 程序員不會花幾天時間調試難以理解的編譯錯誤。他們不會在復雜的構建腳本或將代碼部署到生產環境中浪費時間。最重要的是,他們不會花很長時間去理解同事寫的代碼。
Go 是一種旨在提高生產力的語言,它是為大規模、工業規模的軟件設計而構建的。