Это, скорее, питоновские отступы виноваты. Явно ведь человек под влиянием питона про скобки забыл. Да и блоки не K&R придумали, они были и в Паскале, и в Алголе. Пожалуй, в перле это сделано наиболее разумно: фигурные скобки после if обязательны даже для одного оператора, но есть и сокращённая запись с другим синтаксисом.
> Закрывающая скобка должна быть под открывающей,poigeMay 5 2012, 08:57:36 UTC
Речь опять же, не об этом. Речь о том, что её не должно быть на строке с оператором if (), ибо её появление там заставляет проанализировать всю if-строку на предмет исправлений.
Я, лично, юзаю {} как у K&R, ща. Но после этого чё-то задумался.
Re: > Закрывающая скобка должна быть под открывающей,gul_kievMay 5 2012, 09:05:54 UTC
> Речь опять же, не об этом. Речь о том, что её не должно быть на строке с оператором if ()
Ну да, как же не об этом? Я не предлашаю закрывающую скобку уводить далеко вправо для того, чтобы она была под открывающей. :) Чтобы закрывающая была под открывающей, открывающая должна быть следующей строкой после if.
Впрочем, длинные строки в любом случае бывают, и для обнаружения мелкого изменения, например, в длинной строке формата нужно просматривать её всю - что ж делать. Есть ли диф, который показывает именно изменённые символы в строке (например, выделяя их цветом)?
Re: > Есть ли диф, которыйgul_kievMay 6 2012, 08:41:26 UTC
Спасибо. Хотелось бы вот почти совсем как diff, но с раскраской или хотя бы просто выделением изменений. Даже странно, что у gnu diff до сих пор не появилась опция --color. Нашёл colordiff, но он просто раскрашивает вывод diff-а, построчно.
У меня есть ощущение, что наиболее разумно это сделано в языках, где есть только "end" в формах, которые подразумевают группировку операторов (ruby?). Только - это, опять таки, неинтуитивно для тех, кто привык к парным "операторным скобкам".
В перле, кстати, это багофича, которая нужна синтаксическому анализатору, видимо, для возможности парсинга пользовательских операторов (вызовов функций без скобок). В Perl6 хотят отменить и {} и () в if/while, т.к. там синтаксический анализатор на другом принципе.
Я в перле пользуюсь страуструповскими скобками (на отдельных строках) для того, что бы подчеркнуть различие между многострочными блоками и многострочными конструкторами хэш-мапов. При необходимости однострочников или при сложном синтаксисе ещё и подчёркиваю назначение фигурной скобки унарным плюсом или ";" внутри {} (";" не может быть в конструкторе хэша). Тогда сразу понятно, где ниже блок операторов, а где - хэш: if ( 1 ) { # <- в начале - значит блок
( ... )
Явно ведь человек под влиянием питона про скобки забыл.
Да и блоки не K&R придумали, они были и в Паскале, и в Алголе.
Пожалуй, в перле это сделано наиболее разумно: фигурные скобки после if обязательны даже для одного оператора, но есть и сокращённая запись с другим синтаксисом.
Reply
Reply
Да, согласен. Закрывающая скобка должна быть под открывающей, это и логичнее, и нагляднее.
Reply
Я, лично, юзаю {} как у K&R, ща. Но после этого чё-то задумался.
Reply
Ну да, как же не об этом?
Я не предлашаю закрывающую скобку уводить далеко вправо для того, чтобы она была под открывающей. :)
Чтобы закрывающая была под открывающей, открывающая должна быть следующей строкой после if.
Впрочем, длинные строки в любом случае бывают, и для обнаружения мелкого изменения, например, в длинной строке формата нужно просматривать её всю - что ж делать.
Есть ли диф, который показывает именно изменённые символы в строке (например, выделяя их цветом)?
Reply
Reply
Хотелось бы вот почти совсем как diff, но с раскраской или хотя бы просто выделением изменений.
Даже странно, что у gnu diff до сих пор не появилась опция --color.
Нашёл colordiff, но он просто раскрашивает вывод diff-а, построчно.
Reply
Reply
Reply
В перле, кстати, это багофича, которая нужна синтаксическому анализатору, видимо, для возможности парсинга пользовательских операторов (вызовов функций без скобок). В Perl6 хотят отменить и {} и () в if/while, т.к. там синтаксический анализатор на другом принципе.
Я в перле пользуюсь страуструповскими скобками (на отдельных строках) для того, что бы подчеркнуть различие между многострочными блоками и многострочными конструкторами хэш-мапов. При необходимости однострочников или при сложном синтаксисе ещё и подчёркиваю назначение фигурной скобки унарным плюсом или ";" внутри {} (";" не может быть в конструкторе хэша). Тогда сразу понятно, где ниже блок операторов, а где - хэш:
if ( 1 )
{ # <- в начале - значит блок ( ... )
Reply
Reply
Reply
Leave a comment