STRINGS codificadas são sempre aceitáveis?

Igual aLiterais de codificação embutida são aceitáveis?, mas estou pensando especificamente em "cordas mágicas" aqui.

Em um projeto grande, temos uma tabela de opções de configuração como estas:

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

(Centenas deles).

A prática comum é chamar uma função genérica para testar uma opção como esta:

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

(Obviamente, essa mesma opção pode precisar ser verificada em muitos lugares no código do sistema.)

Ao adicionar uma nova opção, eu estava pensando em adicionar uma função para ocultar a "string mágica" assim:

if (config_options.foo_enabled()) ...

No entanto, os colegas pensaram que eu tinha exagerado e me opus a fazer isso, preferindo a codificação embutida porque:

Isso é o que normalmente fazemosTorna mais fácil ver o que está acontecendo ao depurar o código

O problema é que eu entendo o ponto deles! Realisticamente, nunca vamos renomear as opções por nenhum motivo, então a única vantagem que posso pensar para minha função é que o compilador capturaria qualquer erro de digitação como fo_enabled (), mas não 'FO_ENABLED'.

O que você acha? Perdi outras vantagens / desvantagens?

questionAnswers(1)

yourAnswerToTheQuestion