Методы, позволяющие избежать жесткого кодирования пути набора данных

У меня есть несколько общих проектов, которые находятся под контролем версий (конкретно svn и bazaar, но я ищу общее решение), но наборы данных, которые используют проекты, не являются (слишком большими и общими для разных проектов).

В исходном коде мне нужно где-то "хранить" путь к набору данных. Путь, возможно, различен для каждого пользователя, поэтому жесткое кодирование определенно плохая идея (как всегда, я думаю).

Мой реальный обходной путь - жестко закодировать текстовый файл (скажем, "dataPath.txt"), в котором хранится фактический путь, и этот файл не находится под контролем версий (каждый участник проекта создает свой собственный файл со своей настраиваемой информацией). Решение, однако, довольно хрупкое: 1) если какой-либо участник добавляет в versione контроль над файлом, который раздражает 2) когда я экспортирую "исполняемый файл", мне нужно перемещаться по файлу, который должен находиться в том же каталоге (относительный путь).

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

1 ответ

Решение

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

prog -d dataPath.txt

В общем, предоставление таких настроек в конфигурационном файле - хорошая идея. В Java помогают свойства (как указано в SO-вопросе, который вы связали). В других языках я бы, вероятно, использовал файл настроек в формате JSON- доступны библиотеки разбора.

Другие вопросы по тегам