3

私は、開発者が3D でシミュレートされたサッカー リーグ用の RoboCup エージェントを作成できるようにする .NET API を設計中です。

API が C# コードでどのように機能するかにはかなり満足していますが、このプロジェクトを使用して F# スキルを向上させたいと考えています (現在は練習ではなく読書に基づいています)。

そこで、C# と F# の両方のコードで使用される API を設計する際に、どのようなことを考慮する必要があるかをお聞きしたいと思います。

いくつかのポイント。

  • 私は行列演算とベクトル演算をかなり多用しています。これらは現在不変のクラス/構造体です。
  • API は現在、消費者の実装 (例: ) とのいくつかのインターフェースを定義し、IAgentそれらの実装のインスタンス (例: ) を使用してMyAgent他の API クラス (例: ) を構築しますnew Client(myAgent)
  • API がイベントを発生させます。
  • API は、いくつかのデリゲート タイプを公開します。
  • API にはいくつかの列挙型が含まれています。

API のバージョンをできるだけ早くリリースしたいと考えており、F# から操作するのが難しすぎることに気付いたとしても、後で大きな変更を加えたくありません。アドバイスをいただければ幸いです。

4

1 に答える 1

3

最善のアドバイスは、おそらく F# の API を使用してみることです。:)

そうは言っても、あなたが持っているものはうまく聞こえると思います

  • 優れた C# API は、かなり優れた F# API である必要があります
  • 境界でデリゲート // を使用すると少し摩擦がありますが、ここで変更することは何もありFuncませんAction
  • 列挙型、イベント、インターフェイス、クラス、構造体はすべて問題ありません
  • 可能であれば、通常は無視される値を返す API は避けてください (たとえば、「呼び出しを連鎖させる」ことができるように「これを返す」流暢なインターフェイス - これらにより、F# は多くの|>ignores を必要とします) 。

しかし実際には、1 時間かけて、ライブラリの F# コンシューマーを作成してみてください。ほとんどの場合、最悪の場合、F# のヘルパー関数または拡張メソッドをいくつか提案して、インターフェイス境界での摩擦点を滑らかにすることもできますが、あなたが持っているものはすべて問題ないと思います。

于 2010-06-07T17:30:02.903 に答える