Как гласит название: хорошо ли документировать заброшенные исключения для интерфейсов? Существует ли вообще согласованная передовая практика? Я чувствую, что это деталь реализации, которая никак не должна быть включена в интерфейс, но в то же время я считаю, что это ценная информация, которую должен иметь пользователь интерфейса.Является ли хорошей практикой документировать выброшенные исключения для интерфейсов?
Является ли такая рекомендация хорошей практикой, является темой для другого обсуждения, поэтому, чтобы ограничить сферу этого вопроса, предположим, что мы согласились с тем, что документирование кода с комментариями, как это, является хорошей практикой. Здесь, с такими комментариями, я имею в виду комментарии, которые вы можете генерировать, например, документацию или метаданные, а не только «нормальные» комментарии. Примеры включают документацию XML, Javadoc и Doxygen.
Теперь, какой из этих примеров C# является лучшей практикой, если можно даже договориться о какой-либо лучшей практике?
интерфейс без документации исключения:
public interface IMyInterface {
/// <summary>
/// Does something.
/// </summary>
void DoSomething();
}
Интерфейс с документацией исключения:
public interface IMyInterface {
/// <summary>
/// Does something.
/// </summary>
/// <exception cref="System.Exception">Something went wrong.</exception>
void DoSomething();
}
Прежде всего, используйте только комментарии при необходимости. Я даже сомневался в необходимости «Что-то». комментарий. В стороне, я могу реализовать 'IMyInterface' с' DoSomething() ', который ловит« Исключение », что означает, что ваше описание теперь неправильно. Целью интерфейса является контракт. Этот контракт не может обеспечить исключение броска, поэтому его не должно быть. –
@DavidArno В вашем комментарии так много всего плохого. 1) использование '///' не создает нормального комментария, оно создает метаданные, на которые вы можете создавать документацию. 2) Вполне приемлемо, чтобы возможные известные исключения были частью контракта. 3) «Что-то». это всего лишь пример текста для этого фрагмента. –
@ScottChamberlain, ваш комментарий аккуратно подсвечивает, почему я голосовал, чтобы закрыть этот вопрос как «в основном основанный на мнениях». Вы думаете, что я ошибаюсь; Я думаю, вы ошибаетесь. Это не делает для хорошего контента SO ... –