Новые стили в C # - PullRequest
       9

Новые стили в C #

4 голосов
/ 01 августа 2010

Свободные API очень распространены в наши дни. В последнее время я нахожу их почти в каждой системе, с которой я работаю. В основном, они улучшают читабельность, но иногда они привязывают меня к негибким спецификациям, делая понимание поведения во время выполнения спецификации, которую они создают, практически невозможно. Есть ли согласие о том, как создать хороший свободный API? Каковы наилучшие способы представления структуры или спецификации, используя свободный API?

Недавно я заметил этот новый вариант в API-интерфейсе NServiceBus :

class EndpointConfig : IConfigureThisEndpoint, AsA_Server { }

Он использует несколько интерфейсов как своего рода линейный свободный интерфейс. Мне это нравится, потому что это не накладывает на меня тяжелого бремени дополнительного кода и контекста, когда я только пытаюсь представить простые требования. В простых случаях этого достаточно. Я не думаю, что это будет масштабироваться до сложных спецификаций, хотя. Что вы думаете об этом использовании интерфейсов?

Какие еще новые идиомы вы используете в C #? Где вы их используете? Каковы их сильные стороны? Где бы вы их не использовали? Кроме того, как бы вы оценили сильные стороны идиомы, которую вы хотели использовать?

1 Ответ

1 голос
/ 18 августа 2010

Я использовал для исключения булевых параметров в методах, которые указывают на другое поведение, например Я бы взял

int ExpensiveComputation(bool useDiskCache)

и предпочитаю превратить его в

int ExpensiveComputation(CacheType.DiskCache)

Я предпочел это, потому что когда вы звоните ExpensiveComputation(true), неясно, что означает true, не зная всего о ExpensiveComputation, тогда как ExpensiveComputation(CacheType.DiskCache) дает вам хорошую идею.

Однако с именованными параметрами я часто нахожу приемлемым использование первого и называю его так: ExpensiveComputation(useDiskCache: true) Так что это недавняя идиома, которую я придумал для себя.

...