Saya telah merenungkan file konfigurasi dan hubungannya dengan kode untuk sementara waktu sekarang dan tergantung pada hari dan arah angin, pendapat saya tampaknya berubah. Semakin banyak meskipun saya terus kembali ke realisasi yang saya miliki pertama kali saat belajar Lisp: ada sedikit perbedaan antara data dan kode. Ini tampaknya benar ganda untuk file konfigurasi. Ketika dilihat dengan cahaya yang tepat, skrip Perl tidak lebih dari file konfigurasi untuk perl. Ini cenderung memiliki konsekuensi yang cukup berat untuk tugas-tugas seperti QA dan divisi kerja seperti siapa yang harus bertanggung jawab untuk mengubah file konfigurasi.
Merayap dari file konfigurasi ke bahasa lengkap umumnya lambat dan tampaknya didorong oleh keinginan untuk memiliki sistem generik. Sebagian besar proyek tampaknya dimulai dari yang kecil dengan beberapa item konfigurasi seperti di mana menulis log, di mana mencari data, nama pengguna dan kata sandi, dll. Namun kemudian mereka mulai berkembang: fitur mulai dapat dihidupkan atau dimatikan, pengaturan waktu dan urutan operasi mulai dikontrol, dan, tak terelakkan, seseorang ingin mulai menambahkan logika ke dalamnya (misalnya gunakan 10 jika mesin adalah X dan 15 jika mesin adalah Y). Pada titik tertentu, file konfigurasi menjadi bahasa khusus domain, dan ditulis dengan buruk pada saat itu.
Sekarang saya telah mengoceh untuk mengatur panggung, inilah pertanyaan saya:
- Apa tujuan sebenarnya dari file konfigurasi?
- Haruskah dilakukan upaya untuk menjaga file konfigurasi tetap sederhana?
- Siapa yang harus bertanggung jawab untuk membuat perubahan pada mereka (pengembang, pengguna, admin, dll.)?
- Haruskah mereka dikendalikan sumbernya (lihat pertanyaan 3)?
Seperti yang saya katakan sebelumnya, jawaban saya atas pertanyaan-pertanyaan ini terus berubah, tetapi sekarang saya berpikir:
- untuk memungkinkan non-pemrogram mengubah sebagian besar perilaku dengan cepat
- ya, apapun yang tidak berbutir kasar harus ada dalam kode
- pengguna harus bertanggung jawab atas file konfigurasi dan pemrogram harus bertanggung jawab atas lapisan konfigurasi antara file konfigurasi dan kode yang memberikan kontrol aplikasi yang lebih baik
- tidak, tapi lapisan tengah yang lebih halus seharusnya