Свободные API очень распространены в наши дни. В последнее время я нахожу их почти в каждой системе, с которой я работаю. В основном, они улучшают читабельность, но иногда они привязывают меня к негибким спецификациям, делая понимание поведения во время выполнения спецификации, которую они создают, практически невозможно. Есть ли согласие о том, как создать хороший свободный API? Каковы наилучшие способы представления структуры или спецификации, используя свободный API?
Недавно я заметил этот новый вариант в API-интерфейсе NServiceBus :
class EndpointConfig : IConfigureThisEndpoint, AsA_Server { }
Он использует несколько интерфейсов как своего рода линейный свободный интерфейс. Мне это нравится, потому что это не накладывает на меня тяжелого бремени дополнительного кода и контекста, когда я только пытаюсь представить простые требования. В простых случаях этого достаточно. Я не думаю, что это будет масштабироваться до сложных спецификаций, хотя. Что вы думаете об этом использовании интерфейсов?
Какие еще новые идиомы вы используете в C #? Где вы их используете? Каковы их сильные стороны? Где бы вы их не использовали? Кроме того, как бы вы оценили сильные стороны идиомы, которую вы хотели использовать?