Дизайн интерфейса сервиса - исключение или иерархия объектов? - PullRequest
1 голос
/ 13 июля 2010

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

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

Есть ли лучший подход для реализации таких интерфейсов?

1 Ответ

2 голосов
/ 13 июля 2010

Это действительно зависит от того, как вы видите, как это используется.

Я бы не стал создавать API, который использовал бы исключения для "нормальных" действий. Если в вашем API не очевидно, требуется ли проверка заранее, я думаю, что встраивание проверок непосредственно в API вместе с чистым способом проверки этого заранее предпочтительнее исключений.

Если, однако, заранее очевидно, требуется ли валидация или нет, я бы попытался встроить ее в API (то есть: заставить вызовы метода требовать передачи информации валидации). Это предотвратит необходимость в исключениях в большинстве случаев. При необходимости вы можете вызвать исключение.

В общем, я настоятельно рекомендую рассматривать исключения как «исключительные», а не как механизм управления потоком. Пользователь не должен иметь для обработки исключений, чтобы эффективно использовать ваш API.

...