Я хочу моделировать некоторые коды ошибок. Классический подход перечислениеопределить коды ошибок в java с наследованием
public enum FileError implement FormattedError {
_10 ("some error with parameters [{0}] and [{1}]"),
_20 ("some other error");
private final String description;
private Error(String description) {
this.description = description;
}
public String getDescription(Object... parameters) {
return // logic to format message
}
...
}
это не хорошо для меня, потому что у меня есть много модулей, каждый с его коды ошибок, и я не хочу, чтобы скопировать и вставить шаблонного (конструкторы, Геттеры, логика ..) в все эти перечисления.
Так что я пошел на «ручной» перечислимый реализованных как этот
public class FileError extends BaseError {
public final static FileError _10 = new FileError (10, "some message with parameters [{0}] and [{1}]");
public final static FileError _20 = new FileError (20, "some other message");
}
, где я могу определить свою логику в BaseError и повторно использовать его.
, но он по-прежнему плох, потому что невозможно связать имя переменной с номером (от 10 до 10), и люди, скопировавшие вставку, могут повторно использовать один и тот же номер, не замечая. Я мог бы добавить тест, чтобы проверить это с помощью рефлексии, но затем как заставить людей использовать этот тест для их реализации.
так вы, ребята, лучше знаете, как я мог это достичь?
[изменить] Пожалуйста, имейте в виду, что я не хочу помещать коды ошибок в файлы свойств, потому что я хочу, чтобы ide связывал коды ошибок в коде с их сообщением.
Интеграционных тесты должны проверить, что никаких цифр не используются повторно, предпочитаемые, эти тесты должен запускаться сразу после тестирования модуля, чтобы тест мог использовать 'BaseError.class.getSubClasses()', чтобы быстро получить все подтипы. – Ferrybig
Возможный дубликат [Лучший способ определения кодов ошибок/строк в Java?] (Http: // stackoverflow.com/questions/446663/best-way-to-define-error-codes-strings-in-java) – vels4j