Я был укушен пару раз, забыв, что x = y
в Ruby заставляет x ссылаться на тот же объект, что и y;Я слишком привык к языкам, где это означает, в терминах Ruby, x = y.dup
.Забыв об этом, я непреднамеренно меняю y
, когда считаю, что в правой части задания безопасно.
Я вижу, что имеет смысл избегать простых x = y
назначений без особой причины, но то же самое может скрываться в других местах, таких как
name = (person.last_name.blank? ? 'unknown' : person.last_name)
, где позжеname << title
на самом деле будет менять person.last_name, а не просто имя.
Если это случилось и с вами, как вы научились избегать этого?Есть ли определенные красные флаги или шаблоны для поиска?Вы с подозрением смотрите на каждое задание, которое вы делаете?Вы часто используете .dup
?Я не знаю, станет ли использование Ruby второй натурой для меня, поэтому любые полезные советы будут приветствоваться.