¿Las cadenas codificadas son siempre aceptables?

Similar a¿Son aceptables los literales de codificación?, pero específicamente estoy pensando en "cuerdas mágicas" aquí.

En un proyecto grande, tenemos una tabla de opciones de configuración como estas:

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

(Cientos de ellos).

La práctica común es llamar a una función genérica para probar una opción como esta:

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

(Por supuesto, esta misma opción puede necesitar ser verificada en muchos lugares en el código del sistema).

Al agregar una nueva opción, estaba considerando agregar una función para ocultar la "cadena mágica" de esta manera:

if (config_options.foo_enabled()) ...

Sin embargo, los colegas pensaron que me había excedido y se opusieron a hacer esto, prefiriendo la codificación rígida porque:

Eso es lo que normalmente hacemosHace que sea más fácil ver qué sucede al depurar el código

El problema es que puedo ver su punto. Siendo realistas, nunca vamos a cambiar el nombre de las opciones por ningún motivo, por lo que la única ventaja que puedo pensar para mi función es que el compilador detectaría cualquier error tipográfico como fo_enabled (), pero no 'FO_ENABLED'.

¿Qué piensas? ¿Me he perdido otras ventajas / desventajas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta