Лучшая практика для путей, определенных в кросс-платформенных конфигурационных файлах - PullRequest
0 голосов
/ 06 марта 2019

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

Эти файлы конфигурации будут использоваться в Windows, Linux и MacOSX. Например, проект с использованием этого приложения может быть разработан как в Windows, так и в MacOSX, но файлы конфигурации одинаковы.

Каков наилучший метод для форматирования путей в этом случае?

У меня есть пара возможностей:

  • Принудительно установить POSIX для файлов конфигурации, а затем при обработке их преобразовать их в текущую платформу. Проблема в том, что пользователи Windows могут не захотеть иметь пути в другом формате, к которому они привыкли.
  • Разрешить оба формата в файлах конфигурации, а при разборе конвертировать их в текущую платформу. Боюсь, это может привести к проблемам при разборе. Кроме того, это может привести к странным смешанным файлам конфигурации.

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

Спасибо за вашу помощь!

Редактировать: пути будут только относительными, без абсолютных путей. Если кто-то задает абсолютный путь, то этот конфиг в любом случае нельзя использовать в разных ОС, так что все в порядке.

1 Ответ

0 голосов
/ 06 марта 2019

Преобразование между / и \ на лету не должно быть большой проблемой, с проблемой корня пути возникают проблемы.

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

imagedir=%config%/myimages
fallbackimagedir=%appdir%/images

Вам также следует попытаться использовать полные пути.

Я бы посоветовал вам преобразовывать пути букв дисков Windows, такие как c:\foo в /c/foo при чтенииКонфигурация в системах POSIX.Это легко, поскольку длина строки одинакова, но предполагается, что /c был настроен как нечто полезное.

Чтение пути POSIX в Windows сложнее, если задан путь, начинающийся с / Вы должны поставить перед ним префикс.То, что это что-то, зависит от вас, возможно, от корня буквы диска, на котором установлено ваше приложение.

...