Синтаксический сахар
В Ruby для одного и того же действия можно найти десяток вариантов решения проблемы, причем не изменяя принцип работы программы. Знание и применение синтаксического сахара позволяет сократить кол-во написанного кода, а также получить от других разработчиков уважение и почет.
Сокращаем блок кода до минимума
мы знаем, что записать блок кода мы можем c помощью { |x| ... }
и do |x| ... end
, но часто бывает так, что код внутри блока может состоять из вызова 1 метода у параметра. В таких случаях мы можем превратить запись arr.map {|x| x.some_method }
в эквивалентную ей arr.map(&:some_method)
.
Proc => Блок => Proc
Кроме того знак &
может служить способом перевода Proc
в блок кода добавляя &
перед самим proc
Также мы можем превратить наш proc
в блок кода, добавив &
перед названием аргумента
Скобки не нужны
По ходу курса мв привыкли писать наши методы с помощью скобок def method(arg)
, но на самом деле скобки в ruby не являются обязательным атрибутам,с соответсвенно мы можем записать метод в формате def method arg
.
Важно не комбинируйте между собой разные стили написания скобок. Если вы пишете вашу программу без них, то пишите и дальше, если с ними, то пишите всю программу с их использованием. В таком случае вам не придется каждый раз привыкать глазами к новому стилю.
Записать, только если ранее не было записано
Возможно вы уже сталкивались с необходимостью проверять каждый раз на nil
переменную перед тем как записать в нее значение и выглядело это следующим образом:
на самом деле такую запись можно заметно сократить до:
метод []
При работе с массивами или хэш таблицей мы сталкивались с обращением к значению по индексу или ключу с помощью arr[index]
, но на самом деле такая запись доступна для собственных классов тоже
Если можно обойтись без цикла, значит лучше без него
Циклы являются самыми старыми конструкцйиями любого языка, но с прошествием времени появились такие методы как .each
, .map
, .select
, которые на данный момент являются более предпочтительным вариантом записи. Конечно в 100% случаев нельзя обойтись только ими, поэтому если в вашей программе проще и чище обойтись циклом, значит не стоит пытаться придумать как обойтись без них.
Задание refactoring
Сделайте этот код более чище с помощью синтаксического сахара
Last updated