Я поспорил с коллегой о том, как лучше назначить переменную в блоке 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
выровнены, так что моему мозгу легче их анализировать!