do..end vs фигурные скобки для блоков в Ruby - PullRequest
135 голосов
/ 08 апреля 2011

У меня есть коллега, который активно пытается убедить меня, что я не должен использовать do..end и вместо этого использовать фигурные скобки для определения многострочных блоков в Ruby.

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

Так что же это и почему? (Пример некоторого кода musta)

context do
  setup { do_some_setup() }
  should "do somthing" do
    # some more code...
  end
end

или

context {
  setup { do_some_setup() }
  should("do somthing") {
    # some more code...
  }
}

Лично, просто взглянув на вышесказанное, я отвечу на этот вопрос, но я хотел открыть его для более широкого сообщества.

Ответы [ 13 ]

1 голос
/ 08 апреля 2011

Между ними есть небольшая разница, но {} связывается сильнее, чем do / end.

1 голос
/ 08 апреля 2011

В связи с личным уклоном, я предпочитаю фигурные скобки, а не блок do / end, поскольку это более понятно для большего числа разработчиков, так как большинство фоновых языков используют их вместо соглашения do / end.С учетом вышесказанного реальный ключ заключается в том, чтобы прийти к соглашению внутри вашего магазина, если разработчики do / end используют 6/10 разработчиков, то ВСЕ должны их использовать, если 6/10 используют фигурные скобки, то придерживайтесь этой парадигмы.

Все дело в создании шаблона, чтобы команда в целом могла быстрее идентифицировать структуры кода.

0 голосов
/ 30 октября 2017

Существует третий вариант: написать препроцессор, который выведет «end» в отдельной строке, начиная с отступа.Глубокие мыслители, которые предпочитают сжатый код, оказываются правы.

Еще лучше, взломайте рубин, так что это флаг.

Конечно, самое простое решение «выбери бой» - это принятьСоглашение о стиле, что все последовательности концов появляются на одной строке, и обучают синтаксической раскраске отключать их.Для простоты редактирования можно использовать сценарии редактора, чтобы развернуть / свернуть эти последовательности.

От 20% до 25% строк моего кода ruby ​​являются «концом» своей собственной строки, все тривиально выведено из моих соглашений об отступах.Ruby - подобный языку язык, который достиг наибольшего успеха.Когда люди оспаривают это, спрашивая, где все ужасные скобки, я показываю им функцию ruby, заканчивающуюся семью строками лишнего «конца».

Я годами писал код, используя препроцессор lisp для вывода большинства скобок: Aбар '|'открыл группу, которая автоматически закрывалась в конце строки, а знак доллара «$» служил пустым заполнителем, где в противном случае не было бы символов, помогающих вывести группы.Это конечно территория религиозной войны.Лисп / схема без скобок - самый поэтичный из всех языков.Тем не менее, проще просто уменьшить количество скобок, используя раскраску синтаксиса.

Я все еще кодирую с препроцессором для Haskell, чтобы добавить heredocs и по умолчанию все строки сброса в качестве комментариев, все отступы в виде кода.Мне не нравятся комментарии, независимо от языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...