軟體開發中的兩種態度

紫鳳發表於2014-03-21

   enter image description here

一種態度認為,應該對程式設計師在軟體開發中的行為進行約束(DirectingAttitude)。持這種態度的人認為大部分的程式設計師水平都不高(謠傳說有50%的人低於平均水平),所以應該對他們所做的事情進行管教約束。要防止他們做一些可能會給他們正在開發的系統帶來危害的事情。通常,這種態度體現在一些系統設計和工具中時,你會發現它們會試圖阻止程式設計師去做某些事情,限制程式設計師的一些做法,以此避免他們陷入過於複雜的境況。

另一種態度認為程式設計師都是可以信賴的專業人員,應該給他們做自己任何想做的事情的自由。秉持這種態度的軟體設計以好用易用為目標,但前提假設是程式設計師必須知道自己在做什麼。所以,遵循這種態度的軟體設計裡並不會特意阻止程式設計師錯誤的使用它們。而你可以不正確的使用它們,但因為這種態度認為你是知道如何正確的使用它,所以,如果你沒有按正確的方式使用,後果自負。

軟體開發中的很多爭論的挑起都是因為觀點方要麼持約束態度,要麼持縱容態度。這種態度上的差異影響到了對程式語言、設計方案、開發工具、開發過程等很多方面的選擇。

下面是這兩種對立態度的一些例子:

  • 前不久有一場討論,是由Joel Spolsky的一篇關於異常(Exceptions)的部落格引起的。Joel Spolsky不喜歡異常,因為它很容易引起誤用,導致程式碼混亂不堪(約束態度)。而Bill Caputo指出,異常,如果用的好,可以讓你的程式設計更簡單方便(縱容態度)。
  • 一些關於靜態/動態型別的爭論也體現了這兩種態度的差異。喜歡靜態型別的人會說靜態型別能防止你犯某些錯誤(約束態度)。而動態型別支持者提出靜態型別限制了很多有用的語言功能(縱容態度)。

  • 敏捷開發實踐指導是面向人的(縱容態度),而計劃驅動的開發方法是在確保即使一個很爛的開發團隊也能完成工作(約束態度)。

這些態度未必是持久不變的。在某些情況下人們通常會持約束態度,而另外一些情況會持縱容態度。但我想是有一個底層的因素在起作用,通常是個人性格決定的,是個人性格在這些關於應該如何開發軟體的討論表象下發揮著作用。(我是完全屬於縱容類的,也許你沒看出來。)

也許你會認為對一個程式設計師的行為的任何限制都反映了一種約束態度,可事情並不是這麼簡單。比如說對記憶體的管理。也許你會認為這是一種約束的表現:不能相信程式設計師有能力正確的對記憶體進行管理,所以,剝奪他們分配記憶體的權利。但我卻把記憶體上的這種管理視為一種縱容策略——它拿走了我一些不想為之操心的權利,反而我可以專注於那些我很關心的事情。Steve通過將“問題”和“困難”進行比較,很好的支援了我的這種觀點。

本文選自:外刊評論網

Martin Fowler大師於2000年加入ThoughtWorks。圖靈最新出品的《軟體開發與創新:ThoughtWorks文集(續集)》圖書中,Martin Fowler是作者之一,圖書可以說是他和他同事們在追求軟體卓越的道路上繼續前行中的又一次總結,閱讀後將會獲益匪淺。同時,相對《軟體開發沉思錄:ThoughtWorks文集》散文式的組織方式,《軟體開發與創新:ThoughtWorks文集(續集)》則通過更加清晰的結構,更加全面地覆蓋了軟體開發技術和創新幾個關鍵的方面。與此同時,仍然保持了每個章節單獨成篇的特點,便於讀者選擇有興趣、有需要的章節閱讀。

              enter image description here

      試讀地址:http://www.ituring.com.cn/book/1109

相關文章