編寫 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 是一種旨在提高生產力的語言,它是爲大規模、工業規模的軟件設計而構建的。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/iFeEE675r6zjFP9tqdx6UA