Как стать автором
Обновить

Сэнди Метц и объектно-ориентированное проектирование в Ruby

Время на прочтение4 мин
Количество просмотров9.7K
Всего голосов 7: ↑6 и ↓1+5
Комментарии7

Комментарии 7

Насчёт хэша в качестве аргумента конкретно в данном случае, чем хуже это?
class Person
  attr_accessor :name, :height, :hair_color

  def initialize(name: nil, height: 0, hair_color: nil)
    @name = name
    @height = height
    @hair_color = hair_color
  end
end

Person.new(name: "Travis", hair_color: "brown", height: 6.25)
Удалите из initialize один из параметров, поймете.
Ничем, я думаю книга писалась для раней версии руби, где не было именованных аргументов.
при варианте хеша даже мне кажется черевато плавающими багами если разработка в команде. Допустим, один разработчик вызывает хеш с 3 аргументами. Второй — с четырьмя, но забыл модифицировать сам класс. Этот код будет работать, пока не всплывут "уши" где-нибудь при юзании переданного аргумента какой не засчитался за локальную переменную.
Охотно куплю
Зарегистрируйтесь на Хабре, чтобы оставить комментарий