2010-06-07 4 views
3

Я занимаюсь разработкой .NET API, чтобы позволить разработчикам создавать агенты RoboCup для 3D simulated soccer league.Советы по проектированию .NET API для будущего использования с F #

Я доволен тем, как API работает с кодом C#, однако я бы хотел использовать этот проект для улучшения своего умения F # (которое в настоящее время основано на чтении, а не на практике).

Поэтому я хотел бы спросить, какие вещи я должен учитывать при разработке API, который должен использоваться как C#, так и кодом F #.

Некоторые моменты.

  • Я делаю довольно тяжелое использование матричной и векторной математики. В настоящее время они являются неизменяемыми классами/структурами.
  • API в настоящее время определяет несколько интерфейсов с потребительскими инструментами (например: IAgent), используя экземпляры их реализаций (например: MyAgent) для создания других классов API (например: new Client(myAgent)).
  • API запускает события.
  • API предоставляет несколько типов делегатов.
  • API содержит несколько перечислений.

Я хотел бы как можно скорее опубликовать версию API и не хочу вносить в нее серьезные изменения позже, если я понимаю, что с F # работать слишком сложно. Любые советы приветствуются.

ответ

3

Лучшим советом, вероятно, является попытка использования API из F #. :)

То есть, я думаю, что у вас есть хорошо звучит

  • любого хорошего C# API должен быть очень хорошо F # API
  • есть немного трения при использовании делегатов/Func/Action на границе , но здесь ничего не изменится
  • перечисления, события, интерфейсы, классы, структуры все в порядке
  • , если возможно, избегайте API, возвращающих значения, которые обычно игнорируются (например, беглые интерфейсы, которые «возвращают это», аб ле к «цепи вызовов» - эти причины F # понадобится много |>ignore с)

Но на самом деле, занять час и попробовать писать F # потребителя библиотеки. По всей вероятности, в худшем случае вы можете предложить несколько вспомогательных функций или методов расширения для F #, чтобы сгладить любые точки трения на границе интерфейса, но я думаю, что у вас все должно быть в порядке.

+0

Спасибо Брайан. Некоторые полезные советы есть. Я также отдам его от F #, но по моему опыту программирования требуется довольно много внимания, чтобы разобраться в том, что действительно работает хорошо, а что нет. Я совершенно новичок в F #, поэтому вопрос. –

+0

Да; если вы можете заручиться одним пользователем F #, чтобы попробовать его, это может помочь (или дать больше уверенности). Трудно получить какое-либо программное обеспечение (включая API) точно так же, не протестировав его, по крайней мере, с одним «целевым пользователем» программного обеспечения, чтобы получить обратную связь от использования. – Brian

Смежные вопросы