2009-07-24 63 views
5

我現在正在學習函數式編程概念,而且專業上我是一名Asp.net開發人員。但是asp.net讓你在代碼後面經常更改對象的屬性。函數式編程基於不可變對象。並且應用這個概念來改變文本框的值將是非常痛苦的。此外,在一些事件處理程序中,像FormView的ItemInserted參數可供開發人員使用,如開發人員可以更改爲true/false的KeepInInsertMode,在這種情況下,我們正在修改針對FP的輸入參數。 你的想法是。 哪個是在軟件世界中處理UI的正確方式? FP或OOPS。基於功能性編程的用戶界面

回答

2

你問「正確」的方式,但這是一個工程問題,而不是數學問題。有一些權衡,一些形式的味道起作用,並且不可能有一種適合所有完美解決方案的單一尺寸。

另外,只是因爲asp.net以某種方式做了某些事情,這是否意味着OO框架已經做出了相同的設計決策。看看Ruby on Rails,或Smalltalk Seaside網頁框架的一個不同的,但仍然面向對象的方法。例如,即使ASP.net MVC採取了與vanilla ASP.net不同的方法。

用於UI處理的FP框架也是如此,另外需要注意的是,它們目前似乎更具實驗性 - 即我不認爲所有的設計選項都被用作面向對象框架的探索。如果你想看一看,我建議看看functional reactive programming(主要用於交互式動畫),Links(學術 - 與LINQ有共同點)或LiveLab's reactive framework - 每個都強調問題的不同方面。

這裏有很多東西要學,最重要的可能就是沒有簡單的答案...

2

使用功能範例會導致以另一種方式進行思考:您不會懷疑「單擊此按鈕時會發生什麼」,而是:按下按鈕後,我的應用程序的新狀態是什麼。

「新狀態」將被軟件的表示層用於執行一些GUI工作。

這將導致「狀態 - >事件 - >狀態」函數,這可能比OO「告訴,不要問」範例更加可預測。

但它也可能更詳細。