軟件開發七宗罪(轉發)

軟件開發七宗罪,你有幾條?(轉自51CTO)

已有 41 次閱讀  2011-03-02 16:16


  •  

    軟件開發七宗罪,你有幾條?

    軟件開發第一宗罪:慾望(過度設計)

    現代編程語言趨向於不斷增加更新的功能讓其臻於成熟。程序員們一層一層地往上堆疊抽象的代碼,用新設計的關鍵字和結構來增加代碼的可讀性和可重用性——只要你肯花時間去學習如何正確地使用它們。

    與此同時,編程的原則在這些年裏有所改變。今天,你可以飽覽到成千上萬的設計方案和模式,而且每幾個月就會有人想出新的開發方案。此外,開發人員總是信誓旦旦地宣稱這些開發方案會讓你成爲程序員中們眼中的佼佼者。

    但是紙上談兵往往不見得在實際操作中奏效,這個道理很簡單,打個比方來說就是你可以去做某些事情但是並不意味着你應該去這麼做。就像編程大師Joel Spolsky所說的,那些盲目迷戀自己工具的程序員們都不可避免地忽略了這一點,甚至於最簡單的項目也可能葬送進開發的地獄。所以,必須抵制這種不可取的衝動,那麼首先要做到的就是堅持你最初的設計方案。

    軟件開發第二宗罪:暴食(不進行重構)

    沒有比開發軟件更令人可喜的事情了。一旦你有一個正在開發的產品,就會很容易受到開始籌劃下一次迭代的引誘。新產品應該具備什麼樣的新特徵呢?我們在第一輪實施的時候沒有注意到哪些問題?

    人們總是很容易忘記代碼很少能在運行的時候保持最佳狀態。然後,當新功能不斷地累積直至幾個輪迴的發展之後,程序員們往往會傾向於複合過去發生的錯誤,這樣就導致了一個臃腫、脆弱的代碼基礎,難以進行有效地維持。

    所以,在添加新功能之前儘量剋制自己,對現有代碼的質量和可維護性進行評估。對於每一次新一輪的開發,都必須將代碼重構列入預算範圍之內。用戶可能只會關心每一個版本的新功能,但是從長遠來看,他們一定會更希望你保持產品的精煉性。

    軟件開發第三宗罪:貪婪(團隊之間的競爭)

    對於財富和權利的過度慾望——要不然如何解釋程序員與自己同僚之間競爭的動機?當一個團隊得到了其他團隊泄露出來的電子郵件,就開始進行閉門會議和開發。接下來的事情你應該知道,這個團隊編寫了一個代碼庫,它已經超越了其他團隊已經完成的編碼庫功能的一半以上。

    開發團隊很少會出於惡意來進行重複的工作,但是他們往往缺乏明確的目標和責任感。得到的結果則是多餘、無力的代碼庫,更不要說預算的損失和之前付之一炬的努力。經營開發項目的首要任務之一應該是瞭解其他團隊正在做什麼,然後所有的團隊都朝着一個共同的目標去努力。分享與共享應該成爲開發人員的座右銘。

    軟件開發第四宗罪:懶惰(不驗證輸入)

    基本編程容易犯的錯誤清單很長,但是沒有驗證輸入這樣的錯誤非常低級以至於不能不從別的角度來思考犯這類錯誤的原因。這個看似低級的錯誤仍舊出現在許多經驗豐富的程序員編寫的代碼中,這一點十分令人費解。然而,很多普通的安全漏洞,從緩衝區氾濫成SQL注入攻擊,卻可以直接追溯到用戶輸入的代碼沒有進行正確格式驗證這一點。

    現代編程語言提供了許多工具來幫助程序員來避免類似情況的發生,但是他們必須對其使用得當。切記,一個JavaScript的Web表單驗證輸入可能很容易被在瀏覽器中禁用的JavaScript迴避,或者乾脆不使用瀏覽器進行訪問。輸入驗證應該是你應用程序的核心部分,而不是在用戶界面上煞費苦心。如果做不到這一點只能歸咎於程序員的懶惰了。

    程序開發第五宗罪:憤怒(不對你的代碼進行註釋)

    對於你的同僚而言,有什麼行爲能比不對你的代碼做出任何註釋這種行爲更具敵意?我自己寫的我當然知道:精心編寫的代碼是它本身最好的文檔資料。那麼,你知道嗎,其他人能看懂嗎?其實這些你自認爲值得驕傲的代碼可能並非天衣無縫。

    程序員們自己很可能很快就會遺忘他們現在所寫的代碼,但是這些代碼將在他們離開以後繼續存在很長一段時間。對於取代他們的程序員而言,要想搞清楚每一個代碼真正代表什麼是一件吃力不討好的工作。鑑於此,在你編寫程序的時候,行行好吧,多給他們留下一些暗示。

    但是請記住,難以理解的註釋或者註釋過多都與不做任何註釋的性質同樣惡劣。類似於“這已經損壞”或者“不要碰這個”的註釋對於任何人都沒有什麼幫助。也不要做多餘的評論來解釋簡單的操作,比如變量初始化。代碼就是其本身最好的文件材料,所以出現的註釋評論應該儘可能解釋原因和本質。

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

    也許你有理由對於你的項目不推行版本控制。也許一開始你的項目很小。但是今天,功能強大並且高效的版本控制系統已經可以免費進行使用。服務供應商甚至可以對分佈式項目提供價格低廉的託管代碼服務。所以沒有理由不在一開始就使用一個代碼庫,即便是再小的項目也是如此——除非,你無法容忍除了你以外的任何人實施代碼變化。

    軟件開發第七宗罪:驕傲(不進行單元測試)

    你往往會認爲自己的編程工作相當出色,但是你又如何知道自己做的到底是否唯美無缺呢?有什麼指標來對你的工作好壞進行衡量嗎?

    除非你已經在特定的測試環境下對你的代碼進行了驗證和測試,否則你就不能證明它能像廣告中說的那樣完美無瑕。但是太多的開發人員並不對他們的代碼進行單元測試。他們聲稱花時間進行測試就沒有時間推行新功能了。事實上,一些開發人員甚至不將質量測試寫入他們項目的預算範圍。

    那麼我又能說什麼呢?只能期待他們在品嚐失敗的滋味之前將這股傲氣拋之腦後。一旦存在缺陷的代碼抵達客戶手中的時候,再撤銷它們就未免太遲了。在進行代碼傳輸之前,進行越多的單元測試,就能在今後越多地避免不必要的損失。

    原文標題: The 7 deadly sins of software development

    關於七宗罪

    貪婪,失控的慾望,是七宗罪中的重點。其他的罪惡只是無理慾望的補充。

    色慾:肉體的慾望,過度貪求身體上的快樂。

    饕餮:貪食的慾望,浪費食物或者過度放縱食慾,過分貪圖逸樂皆爲饕餮一罪。

    妒忌:財產的慾望,因對方擁有的資產比自己多而心懷怨恨(此處的資產並非限定於財產,更多的指才能、才華)

    懶惰:逃避的慾望,懶惰及浪費所造成的損失爲懶惰一罪的產物。

    傲慢:卓越的慾望,過分自信導致的自我迷戀,以及過分渴求他人的關注爲傲慢。

    暴怒:復仇的慾望,源於心底的暴躁,因憎恨產生的不適當邪惡念頭。

    七宗罪在拉丁語中爲: “superbia”,“invidia”,“ira”,“accidia”,“avaritia”,“gula” and “luxuria ”

 
  • 一起來看看世界各地的程序員們所共有的致命通病,從軟件開發的地獄中拯救自己。這七宗罪你有幾條?

 

想成爲一名優秀的軟件開發人員需要很長時間的培訓和實踐。但是如果不遵循合適的原則,即便是再好的程序員也會成爲失敗的犧牲品。不經意間你就會養成一些可怕的壞習慣,它們可能會一而再再而三地出現,甚至對於經驗最爲豐富的程序員而言也是如此。我認爲軟件開發至少存在七宗罪。那麼,就請看看慾望、暴食、貪婪、懶惰、憤怒、嫉妒和驕傲會爲你的最新編程項目帶來哪些意想不到的損失吧。

51CTO推薦:《開發高手的物種起源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章