LINUX.ORG.RU

и всё-таки о закрывающих скобках

 


0

2

Ну никак не могу решить:

если а == 3 то
  ура();
кн
или
если а == 3 то
  ура();
кн_если
или
если а == 3 то
  ура();
кн//если а == 3
Ситуация троякоострая - у каждого варианта есть существенные достоинства и существенные недостатки. В третьем случае здесь не простой комментарий, а «говорящий», который является частью синтаксиса. При несоответствии между началом и концом компилятор обругается.

Если везде писать только кн, то код будет лёгким, но легко будет и запутаться при глубокой вложенности. Самое плохое - будет затруднена диагностика компилятором ошибок структуры. Будет легко испортить структуру, поместив else не туда и внеся логическую ошибку.

Третий вид наиболее хорош при глубокой степени вложенности, когда к концу чтения уже не помнишь начало. Вроде как глубокая вложенность вообще считается дурным тоном в наше время. Но в реальности от неё не всегда можно избавиться. И на самом деле в большинстве случаев третий вариант только мешает.

Если везде писать любой из полных вариантов, то это может выбесить. В лиспе закрываешь круглые скобки, пока не мигнёт defun. В большинстве случаев это удовлетворительно работает. Если заставить всегда писать и читать простыню из закрывающих конструкций, это может выбесить не хуже XML.

Среда разработки может, естественно, преобразовывать любой из этих вариантов в любой. Можно, допустим, в исходнике держать всегда полный, а в редакторе отключать. Или заставить среду дописывать. Или... или... или...

Возможность писать вариант по своему выбору сочетает и достоинства, и недостатки каждого способа. Возможность автоматически менять структуру порождает угрозу наличия кучи несущественных изменений в коде. Запутался человек в коротком варианте, решил заменить на полный. Через квартал решил поменять обратно. В итоге получили нечитаемую историю файла, реальные изменения потонули в море форматирования. Читать такую историю уже практически невозможно - нужен специальный фильтр, который сможет игнорировать различия в концах команд.

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

Полиглоты, ваши мнения?

Может быть, наложить ограничения на сложность? Типа при определённом расстоянии в строках между элементами конструкции и при определённой вложенности делать рекомендованным полный вариант и выдавать предупреждение?

★★★★★
Ответ на: комментарий от PolarFox

Мне XML не нравится, однако это не помешало его популярности. Значит, не так и страшно повторять.

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

Писать xml руками — сомнительное удовольствие для людей, вкусы которых очень специфичны.

А что они используют?

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

Я использую xmledit.vim ftplugin. Заголовок ложу в BufNewFile в спец. конфигу для работы с XML. Получается конечно не мега-быстро, но с учетом авто-дополнения и уже пары написанных структур, получается довольно шустро

<art [Tab] -> 
<article>
    //+ сразу перенос и autoindent, если настроили
</article>
...

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

Ты в XML копию атрибутов в закрывающем теге перечисляешь? Норкоман дофига?

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

xml для того, что бы его писали машины, а читали люди. Не наоборот.

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