自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google工程師:復(fù)雜是軟件的死敵

開發(fā) 前端
Google開發(fā)工程師Evan Martin近日在其個人網(wǎng)站發(fā)表了一篇博文《Complexity is the enemy》,文章中指出復(fù)雜是軟件的死敵,新代碼的引入是否增加了軟件的復(fù)雜度,是否應(yīng)該加入,要依據(jù)是否符合項(xiàng)目特定設(shè)計(jì)目標(biāo)來判定,在文末作者指出應(yīng)該像C語言那樣寫Python代碼?,F(xiàn)把此文進(jìn)行了翻譯,全文如下:

這是我在Google工作的第七個年頭了,在Google我學(xué)到了很多東西,遠(yuǎn)比我可以寫下來的多得多。我想我至少可以和你們分享其中的一些。

復(fù)雜是軟件的死敵,它很難估值,常慢慢地混入到軟件開發(fā)中。它像一個逐漸變爛的膿包,發(fā)現(xiàn)它時,為時已晚。從另一方面來講,增加復(fù)雜度可以幫你解一時之憂:一個新的間接層允許增加新的特性X,但同時你需要增加另外一個間接層;把運(yùn)行在一個機(jī)器上的過程分隔成運(yùn)行于兩個機(jī)器上的過程,可以幫你解決當(dāng)前遇到的擴(kuò)展難題,但你同時也必須實(shí)現(xiàn)一個RPC層,來管理這兩個機(jī)器。

上面所說的現(xiàn)象在開發(fā)者新人中和在老手中一樣突出。通過這幾年的工作,我認(rèn)為我已經(jīng)可以很好地在這方面達(dá)到平衡,什么時候應(yīng)該增加軟件的復(fù)雜性,什么時候應(yīng)該拒絕。我常?;叵胍粋€朋友對Ken Thompson所開發(fā)的Go語言編譯器的評價:它很快,因?yàn)樗蛔龊苌俚墓ぷ?,它的代碼十分簡單易懂。

寫一篇長長的博客容易,而用簡短的話來概括相同的觀點(diǎn)卻很難,同樣的道理,開發(fā)一款簡小而優(yōu)秀的軟件是很困難的。在程序語言設(shè)計(jì)中,此種現(xiàn)像很普遍。新手所開發(fā)的新語言包含過多的屬性,很少具有C語言的簡明和清晰。在今天的程序開發(fā)中,程序的優(yōu)劣與其包含多少個對象有關(guān),在分布式系統(tǒng)中,則與有多少個可移動的部分有關(guān)。

針對此問題的另一個詞語是“精巧”:再引用這位C語言大牛的一句話,“調(diào)試代碼比寫代碼困難兩倍之多,所以,你如果寫的代碼盡可能的精巧,理論來講,你很難對它進(jìn)行***地調(diào)試。”

什么可以幫助解決這個問題呢?是否只能依靠經(jīng)驗(yàn)?zāi)?我發(fā)現(xiàn),通過特定的設(shè)計(jì)目標(biāo)來評估新代碼可能會有幫助。如果你說“這并不能幫助解決項(xiàng)目的最初目標(biāo)”,那么可以很容易地把新代碼否定掉。在Google,每個新項(xiàng)目的設(shè)計(jì)模版文檔的開頭都有一個“ non-goals”列表:你應(yīng)該拒絕的合理的項(xiàng)目擴(kuò)展。

很諷刺的是,我發(fā)現(xiàn)了一個很“差勁”的工具,它可以幫助減低軟件的復(fù)雜度。用C語言寫一段很復(fù)雜的程序很難,因?yàn)樗軐?shí)現(xiàn)的功能有限。C語言通常會使用大量的數(shù)組,而且你只能使用這些數(shù)組,但是這些數(shù)組功能很強(qiáng)大——可以壓縮存儲器表達(dá)式,如O(1) ,可以很好的定位數(shù)據(jù)位置。我從未有意地提倡使用這個“差勁”工具,然而我所得到的應(yīng)驗(yàn)是:像C語言那樣寫Python代碼。

【編輯推薦】

  1. 13個在企業(yè)應(yīng)用中迎頭猛進(jìn)的開源編程工具
  2. 微軟一站式示例代碼瀏覽器第三版發(fā)布
  3. 想成為更好的程序員嗎?學(xué)習(xí)Prolog語言吧
  4. 老程序員10年技術(shù)生涯的思考 從C++到Java
  5. 萬維網(wǎng)創(chuàng)立者:HTML 5為未來網(wǎng)絡(luò)技術(shù)埋下隱患
責(zé)任編輯:陳貽新 來源: CSDN
相關(guān)推薦

2009-02-11 13:15:54

軟件工程師女工程師google

2015-05-21 10:43:36

工程師如何寫代碼

2013-08-19 14:27:49

2011-12-30 09:40:28

2010-01-26 10:00:30

Google工程師Web

2011-09-16 09:23:41

軟件項(xiàng)目

2013-09-18 14:38:06

面試

2011-05-16 10:05:33

軟件工程師Java工程師

2011-02-24 10:40:18

Google人才

2009-03-04 09:17:47

GoogleChrome工程師

2015-03-04 10:03:09

2015-01-12 10:01:35

2016-09-21 10:10:50

2010-09-13 17:38:47

Google的系統(tǒng)工程

2013-10-25 11:19:18

Google大數(shù)據(jù)Sanjay Ghem

2020-08-28 13:20:53

谷歌Android開發(fā)者

2017-11-09 14:12:44

大數(shù)據(jù)軟件工程師算法工程師

2010-11-22 10:37:31

Google跳槽

2012-05-31 02:43:40

Google薪酬職位

2009-10-30 09:36:10

GoogleLinux操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號