軟件開發中的兩種態度
英文原文:SoftwareDevelopmentAttitude
一種態度認為,應該對程序員在軟件開發中的行為進行約束(DirectingAttitude)。 持這種態度的人認為大部分的程序員水平都不高(謠傳說有 50% 的人低于平均水平),所以應該對他們所做的事情進行管教約束。要防止他們做一些可能會給他們正在開發的系統帶來危害的事情。通常,這種態度體現在一些系統 設計和工具中時,你會發現它們會試圖阻止程序員去做某些事情,限制程序員的一些做法,以此避免他們陷入過于復雜的境況。
另一種態度認為程序員都是可以信賴的專業人員,應該給他們做自己任何想做的事情的自由。秉持這種態度的軟件設計以好用易用為目標,但前提假設是 程序員必須知道自己在做什么。所以,遵循這種態度的軟件設計里并不會特意阻止程序員錯誤的使用它們。而你可以不正確的使用它們,但因為這種態度認為你是知 道如何正確的使用它,所以,如果你沒有按正確的方式使用,后果自負。
軟件開發中的很多爭論的挑起都是因為觀點方要么持約束態度,要么持縱容態度。這種態度上的差異影響到了對編程語言、設計方案、開發工具、開發過程等很多方面的選擇。
下面是這兩種對立態度的一些例子:
- 前不久有一場討論,是由 Joel Spolsky 的一篇關于異常(Exceptions)的博客引起的。Joel Spolsky 不喜歡異常,因為它很容易引起誤用,導致代碼混亂不堪(約束態度)。而 Bill Caputo 指出,異常,如果用的好,可以讓你的編程更簡單方便(縱容態度)。
- 一些關于靜態/動態類型的爭論也體現了這兩種態度的差異。喜歡靜態類型的人會說靜態類型能防止你犯某些錯誤(約束態度)。而動態類型支持者提出靜態類型限制了很多有用的語言功能(縱容態度)。
- 敏捷開發實踐指導是面向人的(縱容態度),而計劃驅動的開發方法是在確保即使一個很爛的開發團隊也能完成工作(約束態度)。
這些態度未必是持久不變的。在某些情況下人們通常會持約束態度,而另外一些情況會持縱容態度。但我想是有一個底層的因素在起作用,通常是個人性格決定的,是個人性格在這些關于應該如何開發軟件的討論表象下發揮著作用。(我是完全屬于縱容類的,也許你沒看出來。)
也許你會認為對一個程序員的行為的任何限制都反映了一種約束態度,可事情并不是這么簡單。比如說對內存的管理。也許你會認為這是一種約束的表 現:不能相信程序員有能力正確的對內存進行管理,所以,剝奪他們分配內存的權利。但我卻把內存上的這種管理視為一種縱容策略——它拿走了我一些不想為之操 心的權利,反而我可以專注于那些我很關心的事情。Steve 通過將“問題”和“困難”進行比較,很好的支持了我的這種觀點。
<span id="shareA4" class="fl"> </span>
</div>