Apa cara terbaik (dan lokasi) untuk menyimpan pengaturan non-BLOB?
Pada Windows, tampaknya dapat diterima untuk menggunakan registri. Menurut pendapat saya, registri adalah sistem yang dirancang dengan buruk, dan sebagai gantinya file teks sederhana dalam Users\Username\AppData
direktori harus lebih disukai. Ini lebih mudah untuk dicadangkan, lebih sedikit berbahaya bagi pengguna untuk dimodifikasi, dan lebih mudah untuk dibersihkan.
Di Linux dan sebagian besar Unix, Lokasi yang dipilih adalah /home/user/.config/appname
untuk pengaturan spesifik pengguna dan /etc/
untuk pengaturan global (seluruh sistem). Lokasi yang kurang disukai (tetapi dapat diterima) untuk pengaturan pengguna adalah ~/.appname
, tetapi ini umumnya tidak disukai. File-file ini harus dapat diedit pengguna, jadi format yang dapat dibaca manusia selalu lebih disukai.
Saya tidak setuju dengan kebanyakan orang bahwa XML adalah format yang dapat diterima untuk menyimpan data non-gumpalan. Menurut saya, ini adalah format yang terlalu rumit dan terlalu rumit untuk apa yang biasanya hanya berupa data terstruktur yang sangat kecil. Saya lebih suka melihat file dalam YAML, JSON, ASN.1, name = pasangan nilai, atau format serupa. Memiliki terlalu banyak sintaks membuatnya terlalu mudah bagi pengguna untuk mengacaukan dan meninggalkan file dalam format yang tidak valid.
Haruskah kita mengikuti setiap sistem default atau memiliki solusi terpadu?
Itu sepenuhnya terserah Anda, tetapi ingatlah beberapa hal:
- Platform seperti * nix memiliki batasan ketat di mana lokasi dapat ditulis. Lebih ketat dari Windows. Begitu:
- Satu-satunya tempat Anda harus menulis apa pun adalah di direktori home pengguna.
- Kecuali jika aplikasi Anda adalah layanan sistem; dalam hal ini, semua file data yang dapat diubah harus ditulis
/var/
. File data yang tidak dapat diubah harus disimpan di direktori aplikasi Anda di /usr/share/
atau /usr/local/share/
atau/opt/
- File konfigurasi di
/etc/
harus tidak pernah ditulis oleh aplikasi ketika sedang berjalan, bahkan jika memiliki akses tulis kepada mereka. /etc/
harus menjadi repositori untuk perilaku default dan tidak ada yang lain.
- Rencana untuk aplikasi Anda akan dipasang di salah satu dari tiga tempat:
/usr/local/
, /opt/appname
, atau /home/username/appname
.
- Gumpalan harus disimpan di samping file konfigurasi lain jika ingin diubah. Hal ini umumnya lebih untuk menggunakan format yang dapat diedit-pengguna, jadi sesuatu seperti SQLite atau Berkeley DB lebih disukai (karena ada alat baris perintah untuk masing-masing), tetapi tidak diperlukan.
- Di Windows, aplikasi Anda seharusnya hanya menulis di direktori Pengguna. Lokasi standar untuk file data adalah
Users\User\AppData
. Tidak ada tempat lain yang bisa diterima.
- Pada Mac OS X, pengaturan aplikasi Anda harus disimpan
~/Library/Preferences
bersama dengan semua file plist aplikasi lain. plist
tampaknya merupakan format yang disukai, tetapi Anda ingin memeriksa ulang dengan pedoman Apple.
Dan apa cara portabel terbaik?
Tidak ada yang "terbaik", jujur saja. Hanya ada batasan dan harapan spesifik platform. Rekomendasi saya adalah tetap menggunakan sarana khusus platform, bahkan jika itu berarti menulis lebih banyak kode.