Совершенный код

ruby on rails best practicies

Разделение получения и использования

В ruby очень распостранены цепочки кода, а еще любовь к “однострочникам”. Только не все йогурты одинаково полезны.

somewhere_in_test.rb
1
sign_in(create :user) # factory_girl, test

Тот случай когда красота обманчива. Что может понадобится:

  • распечатать user для дебага;
  • использовать его дальше по коду.

В конечном счете, этот код заставляет переписать его тех, кто дальше с ним работает.

somewhere_in_test.rb
1
assert_equal attrs[:name], User.find_by_email(attrs[:email]).name

Иногда так делают, когда тест пишется первый раз и все обходится одной проверкой. Дальше, как обычно, придется переписывать.

Еще пример:

somewhere_in_test.rb
1
2
3
def destroy
  Company.find(params[:id]).destroy
end

Иногда, действительно, подход сработает и казалось бы зачем писать на одну строчку больше. Но на самом деле вы заранее об этом, скорее всего, не знаете и не можете гарантировать что получаемые данные не будут использованы дальше по коду, я уже не говорю об отладке.

Резюме

В философии питона есть очень хороший принцип подходящий под ситуацию: “особые случаи не настолько особы, чтобы нарушать правила”. А правило может звучать так: “получаем отдельно, используем отдельно”.

Comments