FakiNyan написав:Я-то можу і в xml, і в json, і в якийсь свій кривий формат записати, але хотілося б, аби сам файл гарно виглядав, от як конфіг-файли усіляких Apach'ів і т.д.
То які є стандарти отих конфіг-файлів, з котрих можна було б читати всілякі такі налаштування?
1) Якщо редагування файлу конфігурації має бути тільки програмним і це має робити тільки ваша програма, то краще робити бінарний файл (*.bin) і зберігати налаштування в своєму строгому форматі.
Переваги:
Максимально швидке зчитування і запис файлу, особливо для примітивних типів, бо відпадає потреба парсити стрічкові представлення;
Мінімальний розмір файлу.
Недоліки:
Користувач, який не знає вашого стандарту, не зможе вдало редагувати файл;
Користувач не зможе нормально відкрити файл текстовим редактором, який не підтримує бінарне відображення вмісту;
Програми від інших розробників не зможуть розпізнати збережені налаштування.
2) Якщо редагування файлу конфігурації користувачем є не бажаним (але допустимим) і програми від інших розробників мають якось взаємодіяти з файлом, або якщо налаштування сильно структуровані (наприклад дерева, трапляється досить часто), тоді XML.
Переваги:
Максимально зручне зчитування і запис файлу, особливо при збереженні складних структур даних, бо відпадає потреба створення алгоритму розпізнавання вкладених структур (дерев);
Легка модифікація функціоналу програми;
Просунутий користувач може редагувати налаштування текстовим редактором;
Інші програми теж можуть розпізнавати налаштування.
Недоліки:
Парсинг XML файлу не такий легкий в плані швидкості, особливо якщо там багато стрічково-представлених чисел (та ще й в десятковій системі числення).
Користувач, який не знайомий з XML, може пошкодити файл (і тут програма має вміти відновити налаштування);
Програми від інших розробників теж можуть пошкодити збережені налаштування.
3) Якщо редагування файлу конфігурації користувачем є цілком нормальним і структура налаштувань досить проста, тоді ini file.
Переваги:
Максимально просте текстове зчитування і запис файлу, особливо при збереженні символів і стрічкових даних;
Легка модифікація функціоналу програми за умови, що складність структури налаштувань не збільшилась;
Будь-який користувач може редагувати налаштування текстовим редактором;
Інші програми теж можуть розпізнавати налаштування.
Недоліки:
Парсинг ini файлу теж не легкий в плані швидкості, коли там багато стрічково-представлених чисел в десятковій системі числення.
Програми від інших розробників і тупі користувачі можуть пошкодити збережені налаштування (і програма має вміти їх відновити).
І недолік, який відноситься до всіх типів:
Користувач може видалити файл налаштувань, тому якщо програма не знайде файлу, то вона повинна його створити.
Ну і бажано, щоб у випадку пошкодження даних програма відновлювала дані на основі тих, які залишилися, а не тільки з нуля.
Тут перелічені не всі переваги і недоліки описаних способів, тому думайте самі, рішайте самі.
Також можете переглянути, як інші люди мучаться з конфігами на різних мовах.
Про Lua знайшов щось таке, але я з таким не працював.