Спрашивая себя снова и снова, какой хороший код, я прочитал совет "Примите самых слабых, верните самых сильных".
Для меня очевидно, почему принимать самые слабые: метод объявляет самый слабый возможный контракт со своим клиентом. Таким образом, клиентам не нужно "специализироваться" на очень "сильном" интерфейсе.
"Возвращение сильнейшего" для меня не так понятно. Почему я должен вернуть самый сильный интерфейс? Какой самый сильный интерфейс? Как вы оцениваете силовость?
Предположим, что существует метод, возвращающий последовательность элементов. Самый слабый интерфейс будет иметь тип IEnumerable. Следуя рекомендациям, мы должны вернуться, например, IList. Но почему?
Я хотел бы попросить объяснение, почему нужно вернуть самый сильный интерфейс.