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