Я всегда определял константы, где бы они ни находились, исходя из вашего языка (статический класс? Контроллер всего приложения? Файл ресурсов?), И просто вызывал их там, где / когда это необходимо. Конечно, они все еще «жестко закодированы» в некотором смысле, но они также хорошо централизованы, с соглашениями об именах, которые имеют смысл.