Вопрос: не лучше ли?
Ответ: это зависит от того, что такого рода вещи полностью субъективны. Если вы не являетесь или не думаете, что машина.
Да, для обеспечения согласованности принудительно вводить начало / конец для ВСЕХ составных выражений было бы достаточно, но если окружающие языковые элементы уже обеспечивают естественное вложение, требовать этого крайне избыточно.
Рассмотрим оператор CASE:
// "Sensible" syntax
case VALUE of
1: DoSomething;
2: begin
DoSomethingElse;
DoMore;
end;
else
DoForAllOtherValues;
DoMore;
end;
По сравнению с менее разумным, но более последовательным и "логичным":
case VALUE of
1: DoSomething;
2: begin
DoSomethingElse;
DoMore;
end;
else
begin
DoForAllOtherValues;
DoMore;
end;
end;
Обратите внимание, что последний "конец" является частью "дела". Без этого не обойтись.
Я вполне уверен, что в ранней версии Chrome (которая стала Oxygene, а затем Prism) это фактически требовал синтаксиса для оператора case. Если так, то это уже не так. Предположительно здравый смысл возобладал.
По моему личному мнению, удовлетворение OGoSC (Объективных Богов Синтаксической Последовательности) злит, возможно, меньшее, но на самом деле более актуальное для вас и меня, SGoHRaC (Субъективные Боги Человеческой Читаемости и Понимания).
Хотя во многих случаях это может показаться иначе, мы, люди, на самом деле не станки. Нам не нужно упрощать и сводить правила к минимальному согласованному набору, чтобы можно было разобрать текст и понять его. Нам нужны некоторые правила, но мы можем справиться с большим, поскольку наше большое преимущество перед машинами - это свобода мысли, которая освобождает нас от строгого режима синтаксиса и структуры, особенно когда такой синтаксис и структура не имеют значения до уровня избыточности.
Как и в этом случае.
Если вы допустили ошибку, которую компилятор не может интерпретировать, он сообщит вам каждый раз, когда вы компилируете. Но компилятор не поблагодарит вас за то, что вы сделали код «более легким» для «чтения» (компилятор просто следует заданным правилам - он не делает «проще» компилятору «читать» код, изменяя правила, которым он может следовать совершенно счастливо).
Если вы навязываете произвольные правила, которые затрудняют чтение (не потому, что правила более или менее инвариантны / непротиворечивы, а потому, что вы навязываете непротиворечивую структуру, которая сама содержит больше шума и избыточной информации, которая должна фильтроваться), тогда вы заплатит цену человеческой производительности.
Фактически, эти «более простые», более «согласованные» правила могут фактически усложнить все вокруг ... рассмотрим еще раз оператор CASE.
Для того чтобы это соединение начало / конец имело смысл, мы должны сделать "case" отдельным оператором, а не частью пары case / end, поэтому ВСЕ из них должны иметь правильный синтаксис:
case VALUE of
1: DoSomething;
2: DoSomethingElse;
case VALUE of
1: DoSomething;
2: DoSomethingElse;
else
DoOther;
case VALUE of
1: DoSomething;
2: begin
DoSomethingElse;
DoMore;
end;
else
DoOther;
case VALUE of
1: DoSomething;
2: begin
DoSomethingElse;
DoMore;
end;
else
begin
DoOther;
DoMoreOther;
end;
case VALUE of
1: DoSomething;
2: begin
DoSomethingElse;
DoMore;
end;
Вы можете не согласиться, но мне кажется, что внезапно этот более согласованный синтаксис фактически приводит к LESS-согласованности в реальном коде, даже при том, что в правилах, которым код написан для соответствия, существует большая согласованность.