Когда возможно .. вы оставляете скобки в Ruby или нет?
Когда возможно .. вы оставляете скобки в Ruby или нет?
Ответы:
Ruby позволяет вам опустить скобки, в общем, сопротивляйтесь этому искушению.
Скобки облегчают восприятие кода. Общий стиль Ruby заключается в их использовании, за исключением следующих случаев:
- Всегда оставляйте пустые скобки
- Скобки можно не включать в одну команду, окруженную разделителями ERb - маркеры ERb гарантируют, что код по-прежнему читается.
- Строка, представляющая собой одну команду и один простой аргумент, может быть написана без скобок. Лично я считаю, что делаю это все реже и реже, но все равно отлично читается. Мне не нравятся отдельные строки в обычном коде Ruby, у которых есть несколько аргументов и нет скобок.
- Многие доменно-специфические языки на основе Ruby (например, Rake) не используют круглые скобки для сохранения более естественного языка в своих утверждениях.
Я использую скобки в качестве комментариев, чтобы помочь себе в будущем ... у которого, вероятно, будет меньше мозговых клеток, чем у меня сейчас :-)
Нет ничего хуже, чем посмотреть на какой-то код, который вы написали 2 года назад, и неправильно его понять, так что вы что-то сломаете, изменяя его.
Если parens спасет меня в будущем на несколько минут (или часов) в будущем, я добавлю столько, сколько нужно, чтобы утверждение было кристально ясным.
Если вы имеете в виду вызовы функций, я всегда ставлю скобки, потому что их всегда легче читать. Если вы имеете в виду в условиях (если, пока), я ставлю скобки только тогда, когда они необходимы.
Я стараюсь не учитывать их при выполнении таких утверждений, как assert_equal. Может быть, чтобы сделать это предметно-ориентированным языком.
Если вы занимаетесь программированием в течение длительного времени, у вас, вероятно, возникнет «зуд» добавить скобки, и во многих случаях для этого есть веские причины.
Хотя, на мой взгляд, код проще для глаз, и я еще не столкнулся с проблемой - если вам понадобятся круглые скобки, вы узнаете это заранее, прежде чем столкнетесь со сценарием отладки.
if owner.is_a? thing //worked fine
if owner.is_a? thing && x > 1 //not fine
Я изучаю Ruby всего пару недель, и там, где я работаю, используется наименьшее возможное количество символов, и если вы пришли с любого другого языка, есть обучение Кривая, чтобы знать, когда вы передаете неявный хеш, массив символов, переходя к символам функции ... я не фанат.
if owner.is_a? thing and x > 1
and
не имеет такого же приоритета оператора, который &&
имеет