編寫go語(yǔ)言代碼三條基本原則
這是一篇翻譯文章,為了使讀者更好的理解,會(huì)在原文翻譯的基礎(chǔ)增加一些講解或描述。
軟件工程是當(dāng)您添加時(shí)間和其他程序員時(shí)編程發(fā)生的事情?!?Russ Cox
Russ 正在區(qū)分軟件編程和軟件工程。前者是您為自己編寫的程序,后者是隨著時(shí)間的推移許多人會(huì)使用的產(chǎn)品。工程師會(huì)來(lái)來(lái)去去,團(tuán)隊(duì)會(huì)擴(kuò)大和縮小,需求會(huì)改變,功能會(huì)被添加,錯(cuò)誤會(huì)被修復(fù)。這是軟件工程的本質(zhì)。
三條基本原則
-
清晰可讀 -
化繁為簡(jiǎn) -
生產(chǎn)力
你會(huì)注意到我沒有說性能或并發(fā)性。有些語(yǔ)言比 Go 快一點(diǎn),但它們肯定不像 Go 那樣簡(jiǎn)單。有些語(yǔ)言將并發(fā)作為最高目標(biāo),但它們的可讀性和生產(chǎn)力都不高。性能和并發(fā)性是重要的屬性,但不如清晰、簡(jiǎn)單和生產(chǎn)力重要。
1.1 清晰可讀
程序代碼應(yīng)該主要是方便人類閱讀,并且可以在機(jī)器上運(yùn)行。代碼的閱讀次數(shù)比編寫次數(shù)多得多。一段代碼在其生命周期中將被閱讀數(shù)百次,甚至數(shù)千次。清晰很重要,因?yàn)樗熊浖粌H僅是go程序,都是由人類編寫的,以供其他人閱讀。機(jī)器也使用軟件這一事實(shí)是次要的。
如果你正在為自己編寫一個(gè)程序,也許它只需要運(yùn)行一次,或者你是唯一會(huì)看到它的人,那么就做對(duì)你有用的事情。但是,如果這是一個(gè)多人貢獻(xiàn)的軟件,或者人們會(huì)在足夠長(zhǎng)的時(shí)間內(nèi)使用它,要求、功能或運(yùn)行它的環(huán)境可能會(huì)發(fā)生變化,那么您的目標(biāo)必須是為您的 程序是可維護(hù)的。
1.2 化繁為簡(jiǎn)
簡(jiǎn)單是可靠性的先決條件。— Edsger W. Dijkstra
為什么我們要追求簡(jiǎn)單?為什么 Go 程序簡(jiǎn)單很重要?
控制復(fù)雜性是計(jì)算機(jī)編程的本質(zhì)。— Brian Kernighan
我們都遇到過你說“我無(wú)法理解這段代碼”的情況,是嗎?我們都參與過你害怕做出改變的程序,因?yàn)槟銚?dān)心它會(huì)破壞程序的另一部分;您不了解且不知道如何修復(fù)的部分。這是復(fù)雜性。
構(gòu)建軟件設(shè)計(jì)有兩種方式:一種是簡(jiǎn)單到?jīng)]有明顯的缺陷,另一種是復(fù)雜到?jīng)]有明顯的缺陷。第一種方法要困難得多。— C. A. R. Hoare
復(fù)雜性將可靠的軟件變成了不可靠的軟件。復(fù)雜性會(huì)扼殺軟件項(xiàng)目。因此簡(jiǎn)單是 Go 的最高目標(biāo)。無(wú)論我們編寫什么程序,我們都應(yīng)該同意它們很簡(jiǎn)單。
1.3 生產(chǎn)力
設(shè)計(jì)是一門藝術(shù),要求編寫的代碼當(dāng)前可用,并且以后仍能被改動(dòng) --Metz
我要強(qiáng)調(diào)的最后一個(gè)基本原則是生產(chǎn)力。開發(fā)人員的生產(chǎn)力是一個(gè)龐大的話題,但歸結(jié)為這一點(diǎn);你花多少時(shí)間做有用的工作而不是等待你的工具或絕望地迷失在外國(guó)代碼庫(kù)中。Go 程序員應(yīng)該覺得他們可以用 Go 完成很多工作。
有玩笑說 Go 是在等待 C++ 程序編譯時(shí)設(shè)計(jì)的??焖倬幾g是 Go 的一個(gè)關(guān)鍵特性,也是吸引新開發(fā)人員的關(guān)鍵特性。編譯速度是經(jīng)久不衰的話題,公平地說,在其他靜態(tài)語(yǔ)言中需要幾分鐘的操作,在 Go 中只需要幾秒鐘。這有助于 Go 開發(fā)人員感覺與使用動(dòng)態(tài)語(yǔ)言工作的同行一樣高效,而不會(huì)出現(xiàn)那些動(dòng)態(tài)語(yǔ)言固有的可靠性問題。
Go 程序員需要意識(shí)到編寫代碼是為了閱讀,因此將閱讀代碼的行為置于編寫代碼的行為之上。Go 甚至通過工具和自定義來(lái)強(qiáng)制所有代碼都以特定樣式格式化。這消除了學(xué)習(xí)項(xiàng)目特定方言的困難,并有助于發(fā)現(xiàn)錯(cuò)誤,因?yàn)樗鼈兛雌饋?lái)不正確。
Go 程序員不會(huì)花幾天時(shí)間調(diào)試難以理解的編譯錯(cuò)誤。他們不會(huì)在復(fù)雜的構(gòu)建腳本或?qū)⒋a部署到生產(chǎn)環(huán)境中浪費(fèi)時(shí)間。最重要的是,他們不會(huì)花很長(zhǎng)時(shí)間去理解同事寫的代碼。
Go 是一種旨在提高生產(chǎn)力的語(yǔ)言,它是為大規(guī)模、工業(yè)規(guī)模的軟件設(shè)計(jì)而構(gòu)建的。
往期推薦
想要了解Go更多內(nèi)容,歡迎掃描下方??關(guān)注公眾號(hào),回復(fù)關(guān)鍵詞 [實(shí)戰(zhàn)群] ,就有機(jī)會(huì)進(jìn)群和我們進(jìn)行交流
分享、在看與點(diǎn)贊,至少我要擁有一個(gè)叭~



