Почти каждый основной язык программирования имеет библиотеку для обработки разделителей каталогов для вас. Вы должны использовать их. Это упростит ваш код и предотвратит ошибки .
По моему опыту, обычная причина для объединения строк, как это, заключается в том, что они приходят из разных источников. Иногда это разные части из файла конфигурации. Иногда это константа в сочетании с аргументом функции. В любом случае, когда они поступают из разных источников, вы должны рассмотреть несколько различных возможных случаев использования разделителей на концах:
- Оба конца могут иметь разделитель:
"images/"
и"/sounds"
- Только у одного есть разделитель:
"images"
и "/sounds"
или "images/"
и"sounds"
- Ни один из них не имеет разделителя:
"images"
и"sounds"
Тот факт, что каждая часть исходит из разных источников, означает, что у каждого источника могут быть свои представления о том, какие соглашения следует соблюдать, если кто-то вообще об этом подумал! Что бы ни вызывало ваш код, вам не нужно об этом беспокоиться . Ваш код должен обрабатывать все случаи, потому что кто- то нарушит ваше соглашение . Это приведет к потере времени на изучение причины ошибки и исправление. У меня было несколько неприятных случаев, когда коллега делал предположение о том, как пути должны быть отформатированы в файле конфигурации, что означало, что я должен был найти код и выяснить, что они ожидали (или исправить код).
Большинство основных языков предоставляют метод для этого, который уже обрабатывает многие случаи:
Есть предостережение с этим. Некоторые из них, по-видимому, предполагают, что ведущий разделитель каталогов во втором аргументе относится к корневому пути и что это означает, что первый аргумент должен быть отброшен полностью. Я не знаю, почему это считается полезным; для меня это просто вызывает проблемы. Я никогда не хотел объединять две части пути и в итоге отбрасывать первую часть. Внимательно прочитайте документацию для особых случаев и, при необходимости, напишите обертку, которая делает с ними то, что вам нужно, а не с их специальной обработкой.
Это также помогает, если у вас есть необходимость поддержки различных операционных систем. Эти классы почти повсеместно объясняют выбор правильного разделителя. В библиотеках также есть способ нормализации путей в соответствии с соглашениями ОС.
В случае, если ваш язык программирования не имеет легкодоступной библиотеки, вы должны написать метод, который обрабатывает все эти случаи и использует его свободно и в разных проектах.
Это относится к категории «не делайте предположений» и «используйте инструменты, которые вам помогут».