Есть ли способ использовать файлы свойств без жесткого кодирования ключей свойств в коде? - PullRequest
1 голос
/ 07 августа 2020

Я пробовал использовать файлы свойств, но ключи жестко запрограммированы в моем java файле.

Я пытался написать другой класс свойств, но в методе получения мне нужно использовать ключ свойства и все же ключи закодированы.

Ответы [ 2 ]

3 голосов
/ 07 августа 2020

Подумайте об этом: у вас здесь две стороны.

С одной стороны, у вас есть код, который должен «иметь дело» с определенными элементами. С другой стороны, у вас есть файлы свойств, которые содержат «дополнительную информацию».

Теперь: должен быть способ «соединить» эти две стороны. Видите ли, смысл вашего кода - «Я хочу сделать X, а для этого мне нужно работать с Y». Концептуально ваш код «знает» определенные вещи.

Следовательно, вам нужен способ обозначить эти вещи и с другой стороны. Самый простой способ заключается в том, что код знает ключи , которые используются в файле свойств. Чтобы изолировать эти знания, вы можете следовать передовым методам, например: сделать ключи константой в коде и убедиться, что они определены (и в идеале: используются) только в одном классе.

Помимо этого, вы, конечно, можете заниматься «метапрограммированием». Это означает: вы можете запрограммировать GUI и назвать элемент метки label-foo ... а затем добавить какой-нибудь маг c, который просматривает файлы свойств и просматривает все ключи в этом файле. И затем «автоматически» вычисляет, что ключ свойства label-foo-text должен использоваться для элемента GUI label label-foo.

Итак, ответ: не совсем. Когда ваша информация находится в нескольких местах, вам нужен какой-то своего рода механизм, чтобы собрать воедино то, что семантически принадлежит друг другу.

2 голосов
/ 07 августа 2020

В качестве общего правила программирования, если вы не хотите, чтобы A знал о B, вы всегда можете ввести C для управления отношениями между ними (уровень косвенного обращения).

Таким образом, вместо A --> B у вас есть A <-- C --> B.

Вы не можете избежать того факта, что какой-то компонент должен понимать параметры отношения, но вы можете контролировать, где это знание жизни. В корпоративных приложениях управление свойствами часто возлагается на контейнер внедрения зависимостей.

...