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



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

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

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

      上面所說(shuō)的現(xiàn)象在開(kāi)發(fā)者新人中和在老手中一樣突出。通過(guò)這幾年的工作,我認(rèn)為我已經(jīng)可以很好地在這方面達(dá)到平衡,什么時(shí)候應(yīng)該增加軟件的復(fù)雜性,什么時(shí)候應(yīng)該拒絕。我常常回想一個(gè)朋友對(duì)Ken Thompson所開(kāi)發(fā)的Go語(yǔ)言編譯器的評(píng)價(jià):它很快,因?yàn)樗蛔龊苌俚墓ぷ鳎拇a十分簡(jiǎn)單易懂。

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

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

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

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

      北大青鳥(niǎo)網(wǎng)上報(bào)名
      北大青鳥(niǎo)招生簡(jiǎn)章
      主站蜘蛛池模板: 在线精品亚洲一区二区| 久久精品一区二区三区中文字幕 | 国产精品视频一区二区噜噜| 精品福利视频一区二区三区| 国产成人久久一区二区三区| 国产福利91精品一区二区| 国产一区二区三区久久| 亚洲片一区二区三区| 无码丰满熟妇浪潮一区二区AV| 99精品国产一区二区三区不卡 | 精品一区二区三区免费毛片爱| 制服中文字幕一区二区| 婷婷国产成人精品一区二 | 熟妇人妻AV无码一区二区三区| 国产精品污WWW一区二区三区 | 日韩免费一区二区三区在线播放| 亚洲欧洲∨国产一区二区三区| 亚洲美女高清一区二区三区| 国产剧情一区二区| 国产成人精品无码一区二区老年人| 日本一区二区三区不卡视频| 无码中文字幕乱码一区 | 午夜视频在线观看一区二区| 无码日本电影一区二区网站| 欧美激情国产精品视频一区二区| 中日韩精品无码一区二区三区| 日韩一区二区三区四区不卡| 五十路熟女人妻一区二区| 爱爱帝国亚洲一区二区三区| 国产一区二区在线视频播放| 亚洲高清成人一区二区三区| 国产在线精品一区二区高清不卡| 中文字幕在线观看一区二区 | 色欲精品国产一区二区三区AV| 亚洲图片一区二区| 亚洲熟女www一区二区三区 | 蜜臀AV在线播放一区二区三区| 乱色精品无码一区二区国产盗| 亚洲AV无码国产一区二区三区| 国产女人乱人伦精品一区二区| 日韩福利视频一区|