Использование файла конфигурации это эквивалентно использованию глобальных? - PullRequest
7 голосов
/ 10 ноября 2008

Я читал много раз и согласен с тем, чтобы не использовать глобальные переменные для сохранения кода ортогональным Использование файла конфигурации для хранения информации только для чтения, используемой вашей программой, аналогично использованию глобальных файлов?

Ответы [ 6 ]

3 голосов
/ 10 ноября 2008

Ну, поскольку файл конфигурации и глобальная переменная могут распространять изменения по всей системе - они примерно одинаковы.

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

Наличие файла конфигурации обычно помогает при СУХОЙ концепции , и это также не должно нарушать ортогональность системы.

Бонусные баллы за использование $ 25 слова «ортогонально». Мне пришлось поискать это в Википедии, чтобы найти неевклидово определение.

3 голосов
/ 10 ноября 2008

Моя первая реакция будет то, что это не то же самое. Я думаю, что проблема с глобальными переменными - это сценарий чтения + записи. Конфиг-файлы доступны только для чтения (по крайней мере, с точки зрения выполнения). Точно так же константы не считаются плохим поведением при программировании. Config-файлы, по крайней мере в том виде, в котором я их использую, являются просто легко изменяемыми константами.

3 голосов
/ 10 ноября 2008

Если вы используете конфигурационные файлы вместо глобальных, тогда да, они похожи.

Файлы конфигурации следует использовать только в тех случаях, когда конечный пользователь (предположительно, опытный компьютерный пользователь, например, разработчик) должен объявить настройки для приложения или фрагмента кода, не допуская при этом выхода из самого кода.

0 голосов
/ 10 ноября 2008

Они абсолютно не одинаковы или заменяют друг друга. Конфигурационный файл или объект можно использовать не глобально, то есть передавать явно.

Конечно, у вас может быть глобальная переменная, которая ссылается на объект конфигурации, и это побеждает цель.

0 голосов
/ 10 ноября 2008

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

Один «глобальный» объект никогда не изменится во время выполнения, другой объект инициализируется через файл конфигурации, но может измениться позже.

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

0 голосов
/ 10 ноября 2008

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

Для запоминания вещей между выполнениями программ используется более специализированная форма файлов конфигурации, пользовательские настройки.

...