Перечисления, начинающиеся с цифр - PullRequest
0 голосов
/ 09 июня 2018

У меня есть список команд из прежней системы, которые я перечисляю как перечисления.Это почти все 3 заглавных символа [AZ], но два из них являются 3-значными числами.

Для примера, скажем, они {FOO, BAR, BAZ, QUX, 007, 999}.

Я пытаюсь найти соглашение об именах, которое не вызовет ни у меня, ни у кого-либо еще головной боли.Эти значения, вероятно, будут в какой-то момент преобразованы между Java, JSON и * дрожи * Excel.

Это то, что у меня есть в данный момент.

public enum SystemXCommands {
    _007 ("007"),
    _999 ("999"),
    FOO,
    BAR,
    BAZ,
    QUZ;

    //The exact formatting of this command used in SystemX 
    String code;

    SystemXCommands(String code) {
        this.code = code;
    }

    SystemXCommands() {
        this.code = this.name();
    }
}

Мне интересно, стоит ли мне беспокоиться из-за проблем с конвертацией форматов, которые могут вызвать проблемы с подчеркиванием?Если да, есть ли лучшее соглашение в такой ситуации?

1 Ответ

0 голосов
/ 09 июня 2018

Я не понимаю, как именование Java может повлиять на сериализацию / десериализацию JSON.Токен в JSON (или «имя элемента», если хотите) является строкой и может быть «_007», а также «007» или «BAZ».Также я не вижу, как это может привести к каким-либо трудностям с Excel.

Вывод: У вас нормальное имя и вам не стоит об этом беспокоиться.

Кстатиследующий подход может привести к ошибкам:

this.code = this.name();

Предположим, вы проведете рефакторинг через пару месяцев и переименуете свои элементы перечисления, такие как _007 -> CMD_007, FOO -> CMD_FOO.Тогда после переименования логика, в которой использовалось _007, все еще будет работать, потому что она имеет код "007", который не был изменен во время рефакторинга.Но переименование FOO -> CMD_FOO приводит к изменению кода с «FOO» на «CMD_FOO».Как будто вы изменили FOO ("FOO") на CMD_FOO ("CMD_FOO").Это может затормозить вашу логику.Хуже всего то, что вы не увидите ошибок компиляции и заметите эти проблемы намного позже во время выполнения.Я бы порекомендовал вам объявить коды явно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...