У меня обманчиво простой сценарий, и я хочу простое решение, но не очевидно, что является «наиболее правильным» или «наиболее Java».
Допустим, у меня есть небольшой метод аутентификации (клиент-клиент) в каком-то классе. Аутентификация может быть неудачной по ряду причин, и я хочу вернуть простое логическое значение для потока управления, но также вернуть сообщение String для пользователя. Вот те возможности, о которых я могу подумать:
- Вернуть логическое значение и передать StringBuilder для сбора сообщения. Это самый близкий к C-стилю способ сделать это.
- Бросьте исключение вместо возврата false и включите сообщение. Мне это не нравится, так как неудача не является исключительной.
- Создайте новый класс с именем AuthenticationStatus с логическим значением и строкой. Это кажется излишним для одного маленького метода.
- Сохранить сообщение в переменной-члене. Это может привести к состоянию потенциальной расы, и мне не нравится, что оно подразумевает некое состояние, которого на самом деле нет.
Любые другие предложения?
Редактировать Эта опция отключена
- Вернуть ноль для успеха - это небезопасно?
Редактировать Решение:
Я выбрал самое ОО-решение и создал небольшой класс AuthenticationResult. Я бы не стал делать это на любом другом языке, но мне нравится это на Java. Мне тоже понравилось предложение
возврата String [], поскольку это похоже на нулевой возврат, но безопаснее. Одним из преимуществ класса Result является то, что вы можете получить сообщение об успехе с дополнительной информацией, если требуется.