Хороший вопрос!
Как мне кажется, чем более интуитивно понятен и быстрее код, тем лучшее программное обеспечение мы создаем. Я покажу вам, как я выражаю свои мысли, используя Ruby в маленьких фрагментах кода. Подробнее здесь
Карта
Мы можем использовать метод карты по-разному:
user_ids = users.map { |user| user.id }
Или:
user_ids = users.map(&:id)
Sample
Мы можем использовать метод ранда:
[1, 2, 3][rand(3)]
Перемешать:
[1, 2, 3].shuffle.first
И идиоматичный, простой и легкий способ ... образец!
[1, 2, 3].sample
Двойная труба равно / Memoization
Как вы сказали в описании, мы можем использовать памятку:
some_variable ||= 10
puts some_variable # => 10
some_variable ||= 99
puts some_variable # => 10
Статический метод / метод класса
Мне нравится использовать методы классов, я чувствую, что это действительно идиоматический способ создания и использования классов:
GetSearchResult.call(params)
Simple. Красивая. Интуитивно. Что происходит в фоновом режиме?
class GetSearchResult
def self.call(params)
new(params).call
end
def initialize(params)
@params = params
end
def call
# ... your code here ...
end
end
Для получения дополнительной информации о написании идиоматического кода Ruby читайте здесь