LINUX.ORG.RU

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

 


0

2

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

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

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

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

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

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

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

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

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

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

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

патч, позволяющий игнорить анонимусов

В голосину! Читать не умеешь, пользоваться софтом не умеешь. Шнурки еще не разучился завязывать?

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

Спасибо мил человек, где ж ты раньше был :)

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