История изменений
Исправление wandrien, (текущая версия) :
elif match2:=re.match("pattern2", data):
Здесь всё хорошо как раз. Стоило бы даже в семейство Си-подобных внести запрет на использование =
в контексте условий и добавить туда отдельную операцию.
А насчёт control flow дополню вот чем.
У меня есть компилятор самописного игрушечного язычка, написанный на нём самом. И вот там я применил такую штуку как опциональное указание на разновидность оператора в конце.
То есть можно написать просто:
if a < b then
...
end
А можно:
if a < b then
...
end:if
И так для всех блочных операторов: end:while
, end:for
, end:switch
, end:function
.
Так вот. Буду эмоционален, но: ЭТО НЕВЕРОЯТНО УЛУЧШАЕТ ЧИТАЕМОСТЬ КОДА И СНИЖАЕТ ЦЕНУ ТРИВИАЛЬНЫХ ОШИБОК.
Вчера у меня в JS работа трижды вставала на 2-3 минуты из-за того, что я где-то оставлял несбалансированную скобку и тупо сидел и искал, где. А уж особенно если там больше 10 уровней вложенности, как в коде, который я рефакторил вчера. Это еще та задачка — всё растащить по методам, ничего не сломав.
Кстати идея добавить такой синтаксис меня посетила как раз в ходе рефакторинга кода компилятора.
Исходная версия wandrien, :
elif match2:=re.match("pattern2", data):
Здесь всё хорошо как раз. Стоило бы даже в семейство Си-подобных внести запрет на использование =
в контексте условий и добавить туда отдельный оператор.
А насчёт control flow дополню вот чем.
У меня есть компилятор самописного игрушечного язычка, написанный на нём самом. И вот там я применил такую штуку как опциональное указание на разновидность оператора в конце.
То есть можно написать просто:
if a < b then
...
end
А можно:
if a < b then
...
end:if
И так для всех блочных операторов: end:while
, end:for
, end:switch
, end:function
.
Так вот. Буду эмоционален, но: ЭТО НЕВЕРОЯТНО УЛУЧШАЕТ ЧИТАЕМОСТЬ КОДА И СНИЖАЕТ ЦЕНУ ТРИВИАЛЬНЫХ ОШИБОК.
Вчера у меня в JS работа трижды вставала на 2-3 минуты из-за того, что я где-то оставлял несбалансированную скобку и тупо сидел и искал, где. А уж особенно если там больше 10 уровней вложенности, как в коде, который я рефакторил вчера. Это еще та задачка — всё растащить по методам, ничего не сломав.
Кстати идея добавить такой синтаксис меня посетила как раз в ходе рефакторинга кода компилятора.