File konfigurasi saat ini adalah sebagai berikut:
mainwindow.title = 'test'
mainwindow.position.x = 100
mainwindow.position.y = 200
mainwindow.button.label = 'apply'
mainwindow.button.size.x = 100
mainwindow.button.size.y = 30
logger.datarate = 100
logger.enable = True
logger.filename = './test.log'
Ini dibaca dengan python ke kamus bersarang:
{
'mainwindow':{
'button':{
'label': {'value':'apply'},
...
},
'logger':{
datarate: {'value': 100},
enable: {'value': True},
filename: {'value': './test.log'}
},
...
}
Apakah ada cara yang lebih baik untuk melakukan ini? Idenya adalah untuk mendapatkan tipe perilaku XML dan menghindari XML selama mungkin. Pengguna akhir diasumsikan hampir sepenuhnya komputer buta huruf dan pada dasarnya menggunakan notepad dan copy-paste. Jadi tipe standar python "header + variable" dianggap terlalu sulit.
Pengguna dummy mengedit file konfigurasi, pemrogram yang mampu menangani kamus. Kamus bersarang dipilih untuk memudahkan pemisahan (logger tidak perlu atau bahkan tidak dapat memiliki / mengedit parameter jendela utama).
Do what I want.
Ini yang paling sulit untuk komputer, meskipun: Pmainwindow.title =='test"
Jawaban:
Anda bisa menggunakan sesuatu seperti YAML . Berikut ini tautan ke sebuah contoh:
http://www.yaml.org/start.html
Anda dapat menemukan binding Python untuk itu di PyYAML . Ini sedikit lebih ramah pengguna daripada JSON (seperti apa contoh kedua Anda).
sumber
>
setelahcomments:
, dan&
dan*
di depanid001
Hal terbaik yang dapat Anda lakukan adalah memberikan mockup solusi Anda, dan mungkin mockup beberapa solusi lain, dan bertanya kepada dua atau tiga pengguna representatif dari sistem Anda. Mereka akan jauh lebih baik dalam memberi tahu Anda apa yang mereka sukai daripada orang yang dipilih sendiri yang menjawab pertanyaan di situs ini.
Yang sedang berkata, untuk pengguna "pada dasarnya komputer buta huruf" saya pikir format yang Anda tunjukkan dalam pertanyaan Anda mungkin adalah format teks biasa terbaik. Jika mereka benar-benar buta komputer, Anda mungkin ingin mempertimbangkan GUI sederhana sehingga mereka tidak perlu mengedit file konfigurasi secara manual.
sumber
Kalah segala yang Anda bisa kehilangan.
name.name.name=value
, masing-masing pada baris yang terpisah, adalah sesederhana mungkin. Anda tidak perlu kutipan untuk parsing, Anda tahu kapantrue
boolean dan kapantrue
string, jangan membuat "manusia bodoh" memberi tahu Anda. Untuk string, jika bidang tidak boleh memiliki lead / trailing blank, lepaskan sendiri.sumber
Bayangkan orang Cina yang tidak tahu bahasa Inggris yang mencoba membaca file konfigurasi Anda. Atau, bayangkan file konfigurasi dalam bahasa Arab (dan Anda tidak tahu bahasa Arab). Sekarang tanyakan pada diri Anda, apakah ini benar-benar dapat dibaca manusia?
Bahkan jika pembaca tahu bahasa Inggris, mereka masih tidak tahu apakah "logger.datarate = 100" berarti 100 karakter per detik, atau 100 GiB per jam, atau 100 ayam per metrik ton.
Format file yang paling dapat dibaca manusia, adalah file biner dengan kotak dialog / penyihir / konfigurator berbasis GUI yang layak (dengan internasionalisasi, sistem bantuan, dll).
sumber
Saya dengan Patrick Hughes. Buat aplikasi sederhana untuk mengedit konfigurasi. File config itu sendiri mungkin sedikit lebih kompleks dan mungkin berisi atribut untuk editor untuk digunakan (nama tampilan, teks bantuan, tipe nilai, nilai min / maks, dll).
sumber
Saya katakan apa yang Anda miliki (file properti) sudah merupakan format konfigurasi terbaik yang dapat dibaca manusia. :)
Inilah argumen saya:
Poin terakhir itu sebenarnya cukup penting. Mengingat bahwa proyek-proyek saat ini semuanya dibagi menjadi cabang-cabang, file konfigurasi dapat menyebabkan banyak rasa sakit ketika Anda menggabungkan cabang. Format file flat seperti file properti lebih mudah digabungkan daripada file struktur pohon.
sumber