2010-06-07 23 views
3

我正在設計.NET API以允許開發人員爲3D simulated soccer league創建RoboCup代理。我很喜歡API如何使用C#代碼,但是我想用這個項目來提高我的F#技能(目前基於閱讀而不是實踐)。有關設計.NET API以供將來使用F的提示#

因此,我想問一下在設計一個由C#和F#代碼使用的API時應考慮哪些類型的事情。

有些觀點。

  • 我對矩陣和向量數學作了相當大的使用。這些目前是不可變的類/結構體。
  • API目前使用其實現的實例(例如:MyAgent)定義與消費者實現(例如:IAgent)的幾個接口來構建其他API類(例如:new Client(myAgent))。
  • API觸發事件。
  • 該API公開了一些委託類型。
  • 該API包含多個枚舉。

我想盡快發佈API的一個版本,如果我意識到從F#開始工作太困難了,我不想在之後做出重大修改。任何建議表示讚賞。

回答

3

最好的建議可能是嘗試使用來自F#的API。 :)

這麼說,我覺得你有什麼聽起來不錯

  • 任何好的C#API應該是一個相當不錯的F#API
  • 使用委託時,有一點點摩擦/ Func/Action在邊界,但沒有什麼是你將在這裏改變
  • 枚舉,事件,接口類,結構無一不精
  • 如果可能的話,就避免返回通常被忽略值的API(如流利接口「迴歸這」是AB樂爲「鏈通話」 - 這導致F#需要大量的|>ignore S)

不過說真的,需要一個小時,並嘗試寫庫的F#的消費者。很可能,在最糟糕的情況下,您可能會建議一些幫助函數或F#的擴展方法來平滑界面邊界上的任何摩擦點,但我認爲您應該都很好。

+0

謝謝Brian。一些有用的技巧。我也會從F#開始,但是根據我的編程經驗,需要大量的知識才能確定真正有效,哪些沒有。我對F#很陌生,因此是個問題。 – 2010-06-07 18:14:21

+0

是的;如果你可以讓一個F#用戶試用它,它可能會有所幫助(或者給予更多的信心)。如果沒有用軟件的至少一個「目標用戶」對其進行測試以獲得可用性反饋,就很難獲得任何軟件(包括API)。 – Brian 2010-06-07 19:13:10

相關問題