Здесь мы не так уверены. Действительно ли программист не хотел, чтобы эта строка была локализована, или программист забыл о локализации, когда писал этот код?

ий наЯвляются ли когда-нибудь жесткие литералы приемлемыми?Но я специально думаю о «волшебных струнах» здесь.

В большом проекте у нас есть таблица параметров конфигурации:

Name         Value
----         -----
FOO_ENABLED  Y
BAR_ENABLED  N
...

(Сотни из них).

Обычной практикой является вызов универсальной функции для проверки такой опции:

if (config_options.value('FOO_ENABLED') == 'Y') ...

(Конечно, эту же опцию может потребоваться проверить во многих местах системного кода.)

При добавлении новой опции я подумывал добавить функцию, чтобы скрыть «волшебную строку», например:

if (config_options.foo_enabled()) ...

Однако коллеги подумали, что я ушел за борт, и возражали против этого, предпочитая жесткое кодирование, потому что:

Это то, что мы обычно делаемЭто облегчает увидеть, что происходит при отладке кода

Проблема в том, что я вижу их точку зрения! На самом деле, мы никогда не собираемся переименовывать параметры по любой причине, поэтому единственное преимущество, которое я могу придумать для своей функции, заключается в том, что компилятор будет перехватывать любую опечатку, например, fo_enabled (), но не «FO_ENABLED».

Как вы думаете? Я пропустил какие-либо другие преимущества / недостатки?

Ответы на вопрос(1)

Ваш ответ на вопрос