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

軟件開(kāi)發(fā)七宗罪

原創(chuàng)
開(kāi)發(fā) 開(kāi)發(fā)工具
一起來(lái)看看世界各地的程序員們所共有的致命通病,從軟件開(kāi)發(fā)的地獄中拯救自己。這七宗罪你有幾條?

想成為一名優(yōu)秀的軟件開(kāi)發(fā)人員需要很長(zhǎng)時(shí)間的培訓(xùn)和實(shí)踐。但是如果不遵循合適的原則,即便是再好的程序員也會(huì)成為失敗的犧牲品。不經(jīng)意間你就會(huì)養(yǎng)成一些可怕的壞習(xí)慣,它們可能會(huì)一而再再而三地出現(xiàn),甚至對(duì)于經(jīng)驗(yàn)最為豐富的程序員而言也是如此。我認(rèn)為軟件開(kāi)發(fā)至少存在七宗罪。那么,就請(qǐng)看看欲望、暴食、貪婪、懶惰、憤怒、嫉妒和驕傲?xí)槟愕淖钚戮幊添?xiàng)目帶來(lái)哪些意想不到的損失吧。

51CTO推薦:《開(kāi)發(fā)高手的物種起源

程序員七宗罪 

軟件開(kāi)發(fā)七宗罪,你有幾條?

軟件開(kāi)發(fā)第一宗罪:欲望(過(guò)度設(shè)計(jì))

現(xiàn)代編程語(yǔ)言趨向于不斷增加更新的功能讓其臻于成熟。程序員們一層一層地往上堆疊抽象的代碼,用新設(shè)計(jì)的關(guān)鍵字和結(jié)構(gòu)來(lái)增加代碼的可讀性和可重用性——只要你肯花時(shí)間去學(xué)習(xí)如何正確地使用它們。

與此同時(shí),編程的原則在這些年里有所改變。今天,你可以飽覽到成千上萬(wàn)的設(shè)計(jì)方案和模式,而且每幾個(gè)月就會(huì)有人想出新的開(kāi)發(fā)方案。此外,開(kāi)發(fā)人員總是信誓旦旦地宣稱(chēng)這些開(kāi)發(fā)方案會(huì)讓你成為程序員中們眼中的佼佼者。

但是紙上談兵往往不見(jiàn)得在實(shí)際操作中奏效,這個(gè)道理很簡(jiǎn)單,打個(gè)比方來(lái)說(shuō)就是你可以去做某些事情但是并不意味著你應(yīng)該去這么做。就像編程大師Joel Spolsky所說(shuō)的,那些盲目迷戀自己工具的程序員們都不可避免地忽略了這一點(diǎn),甚至于最簡(jiǎn)單的項(xiàng)目也可能葬送進(jìn)開(kāi)發(fā)的地獄。所以,必須抵制這種不可取的沖動(dòng),那么首先要做到的就是堅(jiān)持你最初的設(shè)計(jì)方案。

軟件開(kāi)發(fā)第二宗罪:暴食(不進(jìn)行重構(gòu))

沒(méi)有比開(kāi)發(fā)軟件更令人可喜的事情了。一旦你有一個(gè)正在開(kāi)發(fā)的產(chǎn)品,就會(huì)很容易受到開(kāi)始籌劃下一次迭代的引誘。新產(chǎn)品應(yīng)該具備什么樣的新特征呢?我們?cè)诘谝惠唽?shí)施的時(shí)候沒(méi)有注意到哪些問(wèn)題?

人們總是很容易忘記代碼很少能在運(yùn)行的時(shí)候保持最佳狀態(tài)。然后,當(dāng)新功能不斷地累積直至幾個(gè)輪回的發(fā)展之后,程序員們往往會(huì)傾向于復(fù)合過(guò)去發(fā)生的錯(cuò)誤,這樣就導(dǎo)致了一個(gè)臃腫、脆弱的代碼基礎(chǔ),難以進(jìn)行有效地維持。

所以,在添加新功能之前盡量克制自己,對(duì)現(xiàn)有代碼的質(zhì)量和可維護(hù)性進(jìn)行評(píng)估。對(duì)于每一次新一輪的開(kāi)發(fā),都必須將代碼重構(gòu)列入預(yù)算范圍之內(nèi)。用戶(hù)可能只會(huì)關(guān)心每一個(gè)版本的新功能,但是從長(zhǎng)遠(yuǎn)來(lái)看,他們一定會(huì)更希望你保持產(chǎn)品的精煉性。

軟件開(kāi)發(fā)第三宗罪:貪婪(團(tuán)隊(duì)之間的競(jìng)爭(zhēng))

對(duì)于財(cái)富和權(quán)利的過(guò)度欲望——要不然如何解釋程序員與自己同僚之間競(jìng)爭(zhēng)的動(dòng)機(jī)?當(dāng)一個(gè)團(tuán)隊(duì)得到了其他團(tuán)隊(duì)泄露出來(lái)的電子郵件,就開(kāi)始進(jìn)行閉門(mén)會(huì)議和開(kāi)發(fā)。接下來(lái)的事情你應(yīng)該知道,這個(gè)團(tuán)隊(duì)編寫(xiě)了一個(gè)代碼庫(kù),它已經(jīng)超越了其他團(tuán)隊(duì)已經(jīng)完成的編碼庫(kù)功能的一半以上。

開(kāi)發(fā)團(tuán)隊(duì)很少會(huì)出于惡意來(lái)進(jìn)行重復(fù)的工作,但是他們往往缺乏明確的目標(biāo)和責(zé)任感。得到的結(jié)果則是多余、無(wú)力的代碼庫(kù),更不要說(shuō)預(yù)算的損失和之前付之一炬的努力。經(jīng)營(yíng)開(kāi)發(fā)項(xiàng)目的首要任務(wù)之一應(yīng)該是了解其他團(tuán)隊(duì)正在做什么,然后所有的團(tuán)隊(duì)都朝著一個(gè)共同的目標(biāo)去努力。分享與共享應(yīng)該成為開(kāi)發(fā)人員的座右銘。

軟件開(kāi)發(fā)第四宗罪:懶惰(不驗(yàn)證輸入)

基本編程容易犯的錯(cuò)誤清單很長(zhǎng),但是沒(méi)有驗(yàn)證輸入這樣的錯(cuò)誤非常低級(jí)以至于不能不從別的角度來(lái)思考犯這類(lèi)錯(cuò)誤的原因。這個(gè)看似低級(jí)的錯(cuò)誤仍舊出現(xiàn)在許多經(jīng)驗(yàn)豐富的程序員編寫(xiě)的代碼中,這一點(diǎn)十分令人費(fèi)解。然而,很多普通的安全漏洞,從緩沖區(qū)泛濫成SQL注入攻擊,卻可以直接追溯到用戶(hù)輸入的代碼沒(méi)有進(jìn)行正確格式驗(yàn)證這一點(diǎn)。

現(xiàn)代編程語(yǔ)言提供了許多工具來(lái)幫助程序員來(lái)避免類(lèi)似情況的發(fā)生,但是他們必須對(duì)其使用得當(dāng)。切記,一個(gè)JavaScript的Web表單驗(yàn)證輸入可能很容易被在瀏覽器中禁用的JavaScript回避,或者干脆不使用瀏覽器進(jìn)行訪問(wèn)。輸入驗(yàn)證應(yīng)該是你應(yīng)用程序的核心部分,而不是在用戶(hù)界面上煞費(fèi)苦心。如果做不到這一點(diǎn)只能歸咎于程序員的懶惰了。

程序開(kāi)發(fā)第五宗罪:憤怒(不對(duì)你的代碼進(jìn)行注釋?zhuān)?/strong>

對(duì)于你的同僚而言,有什么行為能比不對(duì)你的代碼做出任何注釋這種行為更具敵意?我自己寫(xiě)的我當(dāng)然知道:精心編寫(xiě)的代碼是它本身最好的文檔資料。那么,你知道嗎,其他人能看懂嗎?其實(shí)這些你自認(rèn)為值得驕傲的代碼可能并非天衣無(wú)縫。

程序員們自己很可能很快就會(huì)遺忘他們現(xiàn)在所寫(xiě)的代碼,但是這些代碼將在他們離開(kāi)以后繼續(xù)存在很長(zhǎng)一段時(shí)間。對(duì)于取代他們的程序員而言,要想搞清楚每一個(gè)代碼真正代表什么是一件吃力不討好的工作。鑒于此,在你編寫(xiě)程序的時(shí)候,行行好吧,多給他們留下一些暗示。

但是請(qǐng)記住,難以理解的注釋或者注釋過(guò)多都與不做任何注釋的性質(zhì)同樣惡劣。類(lèi)似于“這已經(jīng)損壞”或者“不要碰這個(gè)”的注釋對(duì)于任何人都沒(méi)有什么幫助。也不要做多余的評(píng)論來(lái)解釋簡(jiǎn)單的操作,比如變量初始化。代碼就是其本身最好的文件材料,所以出現(xiàn)的注釋評(píng)論應(yīng)該盡可能解釋原因和本質(zhì)。

軟件開(kāi)發(fā)第六宗罪:嫉妒(不使用版本控制)

也許你有理由對(duì)于你的項(xiàng)目不推行版本控制。也許一開(kāi)始你的項(xiàng)目很小。但是今天,功能強(qiáng)大并且高效的版本控制系統(tǒng)已經(jīng)可以免費(fèi)進(jìn)行使用。服務(wù)供應(yīng)商甚至可以對(duì)分布式項(xiàng)目提供價(jià)格低廉的托管代碼服務(wù)。所以沒(méi)有理由不在一開(kāi)始就使用一個(gè)代碼庫(kù),即便是再小的項(xiàng)目也是如此——除非,你無(wú)法容忍除了你以外的任何人實(shí)施代碼變化。

軟件開(kāi)發(fā)第七宗罪:驕傲(不進(jìn)行單元測(cè)試)

你往往會(huì)認(rèn)為自己的編程工作相當(dāng)出色,但是你又如何知道自己做的到底是否唯美無(wú)缺呢?有什么指標(biāo)來(lái)對(duì)你的工作好壞進(jìn)行衡量嗎?

除非你已經(jīng)在特定的測(cè)試環(huán)境下對(duì)你的代碼進(jìn)行了驗(yàn)證和測(cè)試,否則你就不能證明它能像廣告中說(shuō)的那樣完美無(wú)瑕。但是太多的開(kāi)發(fā)人員并不對(duì)他們的代碼進(jìn)行單元測(cè)試。他們聲稱(chēng)花時(shí)間進(jìn)行測(cè)試就沒(méi)有時(shí)間推行新功能了。事實(shí)上,一些開(kāi)發(fā)人員甚至不將質(zhì)量測(cè)試寫(xiě)入他們項(xiàng)目的預(yù)算范圍。

那么我又能說(shuō)什么呢?只能期待他們?cè)谄穱L失敗的滋味之前將這股傲氣拋之腦后。一旦存在缺陷的代碼抵達(dá)客戶(hù)手中的時(shí)候,再撤銷(xiāo)它們就未免太遲了。在進(jìn)行代碼傳輸之前,進(jìn)行越多的單元測(cè)試,就能在今后越多地避免不必要的損失。

原文標(biāo)題: The 7 deadly sins of software development

關(guān)于七宗罪

貪婪,失控的欲望,是七宗罪中的重點(diǎn)。其他的罪惡只是無(wú)理欲望的補(bǔ)充。

色欲:肉體的欲望,過(guò)度貪求身體上的快樂(lè)。  

饕餮:貪食的欲望,浪費(fèi)食物或者過(guò)度放縱食欲,過(guò)分貪圖逸樂(lè)皆為饕餮一罪。  

妒忌:財(cái)產(chǎn)的欲望,因?qū)Ψ綋碛械馁Y產(chǎn)比自己多而心懷怨恨(此處的資產(chǎn)并非限定于財(cái)產(chǎn),更多的指才能、才華)  

懶惰:逃避的欲望,懶惰及浪費(fèi)所造成的損失為懶惰一罪的產(chǎn)物。  

傲慢:卓越的欲望,過(guò)分自信導(dǎo)致的自我迷戀,以及過(guò)分渴求他人的關(guān)注為傲慢。  

暴怒:復(fù)仇的欲望,源于心底的暴躁,因憎恨產(chǎn)生的不適當(dāng)邪惡念頭。

七宗罪在拉丁語(yǔ)中為: “superbia”,“invidia”,“ira”,“accidia”,“avaritia”,“gula” and “luxuria  ”

【編輯推薦】

  1. 程序員的十大技術(shù)煩惱
  2. 架構(gòu)師最怕程序員知道的10件事
  3. 每個(gè)好架構(gòu)師都是一位出色的程序員
  4. 程序員必須養(yǎng)成良好的代碼習(xí)慣
  5. PHP程序員如何突破成長(zhǎng)瓶頸

 

責(zé)任編輯:彭凡 來(lái)源: 51CTO
相關(guān)推薦

2023-10-17 20:28:13

軟件開(kāi)發(fā)代碼

2023-05-08 10:54:39

IT管理CIO

2024-06-19 19:28:51

2011-03-02 08:47:08

IT技術(shù)周刊

2018-02-05 23:14:35

光纖網(wǎng)絡(luò)光纖施工

2021-03-01 18:48:21

Go管理工具

2013-01-17 17:14:52

Objective-C

2013-05-10 10:49:53

2014-01-13 09:35:13

創(chuàng)業(yè)企業(yè)

2015-09-15 13:22:08

數(shù)據(jù)分析七宗罪

2012-10-29 13:33:01

2010-08-18 10:05:27

IE7IE6

2017-01-09 15:25:49

物聯(lián)網(wǎng)策略設(shè)計(jì)

2017-08-02 16:24:04

2011-02-23 10:51:36

Chrome

2015-09-06 11:25:57

七宗罪失敗案例

2012-06-04 09:38:58

Windows Pho

2012-05-31 09:10:26

Windows Pho

2012-05-30 09:50:26

Windows Pho

2012-06-01 09:27:18

Windows Pho
點(diǎn)贊
收藏

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