Quase todas as principais linguagens de programação possuem uma biblioteca para lidar com os separadores de diretório para você. Você deve aproveitá-los. Isso simplificará seu código e evitará erros .
Na minha experiência, o motivo usual para combinar seqüências de caracteres como essa é que elas vêm de diferentes fontes. Às vezes, são partes diferentes de um arquivo de configuração. Às vezes, é uma combinação constante com um argumento de função. Em todo e qualquer caso, quando eles vêm de fontes diferentes, é necessário considerar vários casos possíveis diferentes em relação aos separadores nas extremidades a serem combinados:
- Ambas as extremidades podem ter um separador:
"images/"
e"/sounds"
- Apenas um tem um separador:
"images"
e "/sounds"
ou "images/"
e"sounds"
- Nem tem um separador:
"images"
e"sounds"
O fato de cada parte vir de uma fonte diferente significa que cada fonte pode ter suas próprias idéias sobre quais convenções seguir, se alguém pensar em alguma coisa! O que quer que esteja chamando seu código não deve se preocupar com isso . Seu código deve lidar com todos os casos, porque alguém violará sua convenção . Isso resultará em perda de tempo investigando a causa de um erro e corrigindo. Eu tive várias ocasiões desagradáveis em que um colega de trabalho assumiu como os caminhos devem ser formatados em um arquivo de configuração, o que significa que eu tive que procurar o código e descobrir o que eles estavam esperando (ou consertar o código).
A maioria dos idiomas principais fornece um método para fazer isso para você que já lida com muitos dos casos:
Há uma ressalva com estes. Vários deles parecem supor que um separador de diretório principal no segundo argumento se refira a um caminho raiz e que isso significa que o primeiro argumento deve ser descartado inteiramente. Não sei por que isso é considerado útil; para mim, isso apenas causa problemas. Eu nunca quis combinar duas partes do caminho e terminar com a primeira parte sendo descartada. Leia a documentação cuidadosamente para casos especiais e, se necessário, escreva um invólucro que faça o que você deseja com eles, em vez de seu tratamento especial.
Isso também ajuda se você precisar de suporte para diferentes sistemas operacionais. Essas classes são quase onipresentes na escolha do separador correto. As bibliotecas geralmente também têm uma maneira de normalizar os caminhos para atender às convenções do sistema operacional.
No caso de sua linguagem de programação não ter uma biblioteca prontamente disponível, você deve escrever um método que lide com todos esses casos e use-o livremente e entre projetos.
Isso se enquadra na categoria de "não faça suposições" e "use ferramentas que o ajudem".