LINUX.ORG.RU

[C] Программисты проголосуйте!

 


0

0

Пожалуйста, проголосуйте, какую систему ссылок вы
предпочитаете. В ини файле есть система ссылок. Можно ссылаться
на переменные из других секций или на "локальные" поля. Секции
выделяются [section] и могут содержать пробелы в названии. Это
обязательное условие. Аналогично пробелы могут быть и в именах
полей.

Выберете систему, которую считаете лучшей:

(1) А-ля E-mail, (2) Минимум новых знаков (3) Как в С

Ниже таблица что имеется в виду:

Ref type\system    

         (1)              (2)              (3)

local    $field           $field           $field

local    $(two words)     $(two words)     $(two words)

global   $field@          $[]field         $.field

global   $(two words)@    $[](two words)   $(.two_words)

link     $field@sec       $[sec]field      $sec.field

link     $(two words)@sec $[sec](two words) $(sec.two words)

link     $field@[sec tion] $[sec tion]field $(sec tion.field)

link     $(two words)@[sec tion]
                           $[sec tion](two words)
                                            $(sec tion.two words)
                

Недостатки и достоинства

(1) недостаток: наличие "лишнего" знака @. Достоинство: минимум
символов для односложных ссылок.

(2) недостаток: необычность. Но зато нет лишних символов и очень
понятно все. Самая бритвооккамовская модель, не вводящая новых
сущностей в алфавит.

(3) недостаток: невозможно или трудно использовать точку в именах
групп и полей (а иногда хочется для сокращения слов,
например). Достоинство в том, что очень наглядно для программистов.

Пожалуйста, напишите номер, который бы вы выбрали!
★★★

первый вариант -- жуть. второй вариант не такой уж и необычный -- чемто он мне LaTeX напоминает. ну а больше всего по душе мне третий вариант. но пробелы в именах переменных -- это всё таки жесть. dixi

beastie ★★★★★
()

3-й наиболее приемлемый. к тому-же разделитель вполне можно задавать программно. вовсе не обязательно только на точку закладываться

ananas ★★★★★
()
Ответ на: комментарий от beastie

> первый вариант -- жуть. второй вариант не такой уж и необычный -- чемто он мне LaTeX напоминает. ну а больше всего по душе мне третий вариант. но пробелы в именах переменных -- это всё таки жесть. dixi

В принципе я согласен (кроме пробелов-жести). Сам удивляюсь теперь неуклюжести первого варианта. Второй или третий - трудно выбрать. Точно третий, если бы не вывод точки из алфавита имен.

atoku ★★★
() автор топика

А как насчёт $sec->field?

Второй вариант, пожалуй, мне больше нравится, хотя по большому счёту всё равно...

Jini ★★
()

третий, очевидно. Но в любом случае оверхед от скобок и пробелов ужасный, лучше бы ты совсем от них избавился

temp
()

Если выбирать строго из этих трех вариантов, то 3. Но пробелы в именах маст дай форева, а точку при желании можно заменить слэшем.

tailgunner ★★★★★
()

3-й, но без $ и пробелов в названии:

my-param = section.another-param

Глобальную . заменить, например, специальной секцией global:

global.param

anonymous
()
Ответ на: комментарий от anonymous

Помоему, 2-й вариант $[]() более соответствует структуре ini-файла! А вариант с точкой визуально плохо различается

anonymous
()
Ответ на: комментарий от temp

> третий, очевидно. Но в любом случае оверхед от скобок и пробелов ужасный, лучше бы ты совсем от них избавился

Скобки нужны даже без пробелов: $(one)two - не одно и то же, что и $оnetwo.

Спасибо всем, кто откликнулся. На счет "пробелы - мастдай" - то ведь просто можно не использовать, если не надо. Но я сам видел файлы вида

This is nice f. feature = new f-feature That nice f. feature = old but good f-feature

:) Нужны и точки и пробелы, чтобы читать такие файлы.

atoku ★★★
() автор топика

третий, проеблы либо экранировать, либо каждое слово в кавычки\скобки.

wfrr ★★☆
()

Голосую за 2 или 3.

Кроме того:

1. В третьем варианте можно успешно экранировать и точки. Например так:

$(my superpuper etc\. section.max\. length of \.ini file)

И вообще, в принципе, можно экранировать всё:

$my\ superpuper\ etc\.\ section.max\.\ length\ of\ \.ini\ file

Конечно, этот пример выглядит ужасно, но обычные случаи, думаю, будут вполне понятны:

$section.file\ length = 4

2. Второй вариант действительно очень приятен, но он необычен. Если хочешь его вводить, то в .sample-файле обязательно должен быть соответствующий пример в удобном месте. Кроме того, синтаксис $[] мог бы в принципе значить что-то ещё.

3. Ещё можно использовать двоеточие:

$section:name

alexsaa
()
Ответ на: комментарий от alexsaa

Тут есть небольшая проблема с экранированием. Сейчас $ экранируется как \\$. Два слеша нужно, чтобы при первом парсинге, до переменных, два слеша переходили в один. В принципе консистент-вариант экранирования точки будет писать \\. что уже некоторый перегруз.

atoku ★★★
() автор топика
Ответ на: комментарий от alexsaa

Еще я стал думать, что (2) и (3) вполне могут ужиться вместе... Есть лишь одна небольшая логическая проблема в этом, но вполне решаемая.

atoku ★★★
() автор топика

файловой системой пользуетесь ? вот и не изобретайте лишних сущностей :)

/usr/share/doc/

/etc/profile

~/"очень странный документ"

Куда проще-то ?

MKuznetsov ★★★★★
()

> Достоинство в том, что очень наглядно для программистов.

Какие-то странные у тебя программисты.

1-й вариант самый читабельный и потенциально минимально бажный.

Только избыточность убери и определись, могут ли скобки могут присутствовать в названиях. И если могут, то не лучше ли приладить регэкспы?

anonymous
()
Ответ на: комментарий от anonymous

> 1-й вариант самый читабельный и потенциально минимально бажный.

Он сейчас реализован. На счет минимальной бажности не уверен. Мне кажется, что второй ничуть не хуже.

> Только избыточность убери

Что имеется в виду?

> определись, могут ли скобки могут присутствовать в названиях

Нет, не могут. Квадратные - из-за синтаксиса заголовков секций. Круглые - просто не могут. Нельзя объять необъятное :)

> не лучше ли приладить регэкспы

Я не очень понял этой фразы. Если это о сканировании строк - то конечно это делается при помощи регэкспов. На самом деле (re-entrant) сканер и парсер строк, для отбора переменных в библиотеке генерируется flex/bison (как и сканер и парсер всего файла).

atoku ★★★
() автор топика
Ответ на: комментарий от MKuznetsov

> файловой системой пользуетесь

Не очень здесь файловая система будет уместна ИМХО.

atoku ★★★
() автор топика
Ответ на: комментарий от atoku

> Не очень здесь файловая система будет уместна ИМХО.

имеется в виду адресация, правила адресования.. если скажу XPath - возражений станет меньше ?

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

> если скажу XPath - возражений станет меньше

Я понял что имеется в виду. Просто мне кажется не очень уместно для ини-файлов. Но может будут другие мнения? Вообще очень продуктивно получилось, спасибо всем кто высказался!

atoku ★★★
() автор топика

выбираю между 2 и 3... в 3 не нравится строка с пробелами. Гомно какое-то получается неочевидное. Вобщем, №2.

xawari
()

Use da xml, Luke!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.