Вы оставляете скобки внутри или снаружи в Ruby?

Когда это возможно... вы оставляете скобки в Ruby или нет?


person Community    schedule 04.12.2008    source источник


Ответы (9)


Из Элементы стиля Ruby

Ruby позволяет опускать скобки, в общем, не поддавайтесь этому искушению.

Скобки облегчают понимание кода. Общий стиль Ruby заключается в их использовании, за исключением следующих случаев:

  • Всегда оставляйте пустые скобки
  • Круглые скобки могут быть опущены в одной команде, окруженной разделителями ERb — маркеры ERb гарантируют, что код все еще читаем.
  • Строка, представляющая собой одну команду и один простой аргумент, может быть записана без круглых скобок. Лично я нахожу, что делаю это все реже и реже, но это все еще прекрасно читается. Мне не нравятся отдельные строки в обычном коде ruby, которые имеют несколько аргументов и не имеют круглых скобок.
  • Многие предметно-ориентированные языки на основе Ruby (такие как Rake) не используют круглые скобки, чтобы сохранить более естественное ощущение языка в своих утверждениях.
person Jason Navarrete    schedule 04.12.2008

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

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

Если паренс сэкономит будущему мне несколько минут (или часов) в будущем, я вставлю столько, сколько необходимо, чтобы сделать утверждение кристально ясным.

person John    schedule 08.12.2008
comment
+1 Я использую скобки в качестве комментариев, чтобы помочь себе в будущем... у которого, вероятно, будет меньше мозговых клеток, чем у меня нынешнего :-) Это НАСТОЛЬКО верно, и именно поэтому я это делаю. Также нужно быть милосердным ко всем, кто следует за мной и вынужден использовать мой код. Короче говоря, это ремонтная вещь. - person the Tin Man; 18.10.2012

Я опускаю их, когда работаю с DSL, например, t.column или has_many в rails. В остальное время, как правило, все сводится к ясности, и это, вероятно, равное разделение.

person Matt Burke    schedule 04.12.2008

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

person Eli    schedule 04.12.2008

Если вы имеете в виду вызовы функций, я всегда ставлю скобки, потому что их всегда легче читать. Если вы имеете в виду условия (if, while), я ставлю скобки только тогда, когда они необходимы.

person mat    schedule 04.12.2008
comment
Я согласен. Например, в php я могу быстро найти переменную по префиксу $. В javascript я могу переопределить функцию с помощью круглых скобок (). В Ruby разницу между var и func (без скобок) не всегда легко увидеть. - person ; 04.12.2008

Я стараюсь опускать их, если это вообще возможно. Я думаю, что это облегчает чтение кода (вообще говоря).

person mipadi    schedule 04.12.2008

Что обычно более читабельно.

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

person Gareth    schedule 04.12.2008

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

person Andrew Grimm    schedule 08.12.2008

Если вы занимаетесь программированием в течение длительного времени, у вас, вероятно, будет «чесаться» добавить скобки, и во многих случаях для этого есть веские причины.

Хотя, по моему мнению, код более удобен для глаз, и я еще не сталкивался с проблемой - если вам понадобятся скобки, вы узнаете об этом заранее, прежде чем вам придется запускать сценарий отладки.

person boulder_ruby    schedule 11.07.2012
comment
Мой учитель говорит мне, что это неизбежно. Это так, и его может быть трудно отладить. Я рекомендую использовать их, чтобы избежать неоднозначного назначения параметров. - person the Tin Man; 18.10.2012
comment
Проголосовано за то, что проще для глаз, - это IMO паршивая причина опускать круглые скобки вокруг аргументов функции. - person Marcello Romani; 03.09.2015
comment
говоря с толпой без скобок, я столкнулся с этой проблемой на днях if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine я изучаю рубин всего пару недель, и там, где я работаю, используется наименьшее возможное количество символов, и если вы пришли с любого другого языка, есть кривая обучения, чтобы знать, когда вы передаете неявный хэш, массив символов, переходите к символам в функцию ... я не фанат. - person Mega Man; 08.11.2016
comment
@МегаМэн if owner.is_a? thing and x > 1 - person anna328p; 06.02.2017
comment
@DmitryKudriavtsev and не имеет того же приоритета оператора, что и && - person Mega Man; 06.02.2017
comment
@MegaMan В том-то и дело. Более низкий приоритет позволяет ему работать. - person anna328p; 07.02.2017
comment
это может выглядеть хорошо для вас, но это будет сложно для сопровождающего - person Ankit Kumar; 19.03.2020