У меня был аргумент с коллегой о том, как лучше назначить переменную в блоке if..else. Его оргинальный код:
@products = if params[:category]
Category.find(params[:category]).products
else
Product.all
end
Я переписал его так:
if params[:category]
@products = Category.find(params[:category]).products
else
@products = Product.all
end
Это также можно было бы переписать с помощью однострочного интерфейса с помощью оператора ternery (?:), но предположим, что назначение продукта длиннее 100 символов и не может помещаться в одну строку.
Какой из двух яснее вам? Первое решение занимает немного меньше места, но я думал, что объявление переменной и присвоение ей трех строк после этого может быть более подверженным ошибкам. Мне также нравится видеть, что мои if
и else
выровнены, облегчает мой мозг анализировать его!