2011-12-12 20 views
2

最近我一直在使用函數式編程,並且發現了不變性以提供關於解決問題的不同視角。我正在考慮在未來的開發中默認使用不可變類。爲什麼在默認情況下域(業務邏輯)中的不可變性更常見?

除了潛在的小性能成本之外,爲什麼在普通的「好」設計中,不可變的類不像普通常規那樣普遍?有沒有我不知道與不可改變的類(不包括性能)?

我知道不變性經常被討論,但我很難找到任何具體解決爲什麼它沒有使用超過可變類的東西。

+0

因爲大多數對象是邏輯上可變的? – Erix

+0

這和ASP.NET MVC有什麼關係? –

+0

@Erix對象可以是可變的或不可變的。可變性可以是一個角度。通常,函數式語言將所有東西都作爲不可變的,這使得我對於命令式編程感到好奇。我不明白爲什麼這是封閉的。在命令性領域解釋可變性的優劣或不利因素不是「建設性」的? –

回答

2

我認爲這只是因爲我們正在研究Von Neumann model,它是可變的,它帶來了C編程語言,並且擁有大量的派生語言,如C++,Java,C#等等。這些語言規則世界和人們都擁有多年來一直在以可變的方式思考。我們學習可變編程,我們被教導可變編程,現在大部分系統都是可變的。即使人和世界也是可變的。

我們都(好吧,我們大多數人)可變。我們只是習慣了它。

相關問題