Hampir setiap bahasa pemrograman utama memiliki perpustakaan untuk menangani pemisah direktori untuk Anda. Anda harus memanfaatkannya. Ini akan menyederhanakan kode Anda dan mencegah bug .
Dalam pengalaman saya, alasan umum untuk menggabungkan string seperti ini adalah bahwa mereka berasal dari sumber yang berbeda. Terkadang potongan berbeda dari file konfigurasi. Terkadang ini adalah gabungan konstan dengan argumen fungsi. Dalam setiap dan semua kasus, ketika mereka berasal dari sumber yang berbeda, Anda harus mempertimbangkan beberapa kasus yang mungkin berbeda mengenai pemisah di ujung yang akan digabungkan:
- Kedua ujungnya bisa memiliki pemisah:
"images/"
dan"/sounds"
- Hanya satu yang memiliki pemisah:
"images"
dan "/sounds"
atau "images/"
dan"sounds"
- Tidak ada yang memiliki pemisah:
"images"
dan"sounds"
Fakta bahwa setiap bagian berasal dari sumber yang berbeda berarti masing-masing sumber mungkin memiliki ide sendiri tentang konvensi apa yang harus diikuti, jika seseorang memikirkannya sama sekali! Apa pun panggilan kode Anda tidak perlu khawatir tentang ini . Kode Anda harus menangani semua kasus karena seseorang akan melanggar konvensi Anda . Ini akan menghasilkan waktu yang terbuang untuk menyelidiki penyebab kesalahan dan membuat perbaikan. Saya memiliki beberapa kejadian tidak menyenangkan di mana seorang rekan kerja membuat asumsi tentang bagaimana path harus diformat dalam file konfigurasi, artinya saya harus mencari kode dan mencari tahu apa yang mereka harapkan (atau memperbaiki kode).
Sebagian besar bahasa utama menyediakan metode untuk melakukan ini untuk Anda yang sudah menangani banyak kasus:
Ada peringatan dengan ini. Sejumlah ini tampaknya mengasumsikan bahwa pemisah direktori terkemuka dalam argumen kedua merujuk ke path root dan bahwa ini berarti argumen pertama harus dibuang seluruhnya. Saya tidak tahu mengapa ini dianggap berguna; bagi saya, itu hanya menyebabkan masalah. Saya tidak pernah ingin menggabungkan dua bagian jalur dan berakhir dengan bagian pertama dijatuhkan. Baca dokumentasi dengan seksama untuk kasus-kasus khusus, dan jika perlu, tulis pembungkus yang melakukan apa yang Anda inginkan dengan ini daripada penanganan khusus mereka.
Ini juga membantu jika Anda memiliki kebutuhan untuk mendukung sistem operasi yang berbeda. Kelas-kelas ini hampir di mana-mana bertanggung jawab untuk memilih pemisah yang benar. Perpustakaan biasanya memiliki cara normalisasi jalur agar sesuai dengan konvensi OS, juga.
Jika bahasa pemrograman Anda tidak memiliki perpustakaan yang tersedia, Anda harus menulis metode yang menangani semua kasus ini dan menggunakannya secara bebas dan lintas proyek.
Ini termasuk dalam kategori "jangan membuat asumsi" dan "gunakan alat yang membantu Anda."