Справочные таблицы значений в войне против магических чисел - PullRequest
2 голосов
/ 29 мая 2010

Этот вопрос беспокоит меня уже много лет и, похоже, до сих пор не может найти хорошего решения. Я работаю в PHP и Java, но это звучит так, может быть, это не зависит от языка:)

Скажем, у нас есть стандартная справочная таблица статуса, которая содержит идентификаторы статуса для некоторого вида объекта. Далее, давайте предположим, что таблица будет иметь всего 5 значений и будет оставаться такой в ​​течение длительного времени, возможно, иногда редактироваться с добавлением нового статуса. Когда вы выбираете строку и хотите увидеть, в каком она состоянии, у вас есть 2 варианта (как я это вижу, по крайней мере) - укажите прямые значения идентификаторов (магические числа) или используйте именованную константу. Последнее кажется намного чище, хотя вопрос в том, куда оставить эти именованные константы? В модельном классе? В классе, который использует эту конкретную константу? Где-нибудь еще?

1 Ответ

1 голос
/ 29 мая 2010

Похоже, что вы хотите сделать, это перечисляемое значение.

Это значение, буквенное имя которого сопоставлено с постоянным значением, это будет что-то вроде

Statusone = 1
Statustwo = 2

Тогда в любом месте вашей программы вы можете переопределить statusone, который компилятор будет видеть как 1.

Я не уверен, существует ли это в php, но я почти уверен, что в java

РЕДАКТИРОВАТЬ В ответ на некоторые комментарии

Я бы обычно помещал перечисляемые значения в какое-то глобальное пространство имен, или, если они нужны вам только при специальном использовании этого класса, вы можете поместить их на уровне класса.

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