How do you assign a variable with the result of a if..else block?
Posted
by Pierre Olivier Martel
on Stack Overflow
See other posts from Stack Overflow
or by Pierre Olivier Martel
Published on 2010-05-27T21:20:39Z
Indexed on
2010/05/27
21:31 UTC
Read the original article
Hit count: 310
ruby
|coding-style
I had an argument with a colleague about the best way to assign a variable in an if..else block. His orignal code was :
@products = if params[:category]
Category.find(params[:category]).products
else
Product.all
end
I rewrote it this way :
if params[:category]
@products = Category.find(params[:category]).products
else
@products = Product.all
end
This could also be rewritten with a one-liner using a ternery operator (? :) but let's pretend that product assignment was longer than a 100 character and couldn't fit in one line.
Which of the two is clearer to you? The first solution takes a little less space but I thought that declaring a variable and assigning it three lines after can be more error prone. I also like to see my if
and else
aligned, makes it easier for my brain to parse it!
© Stack Overflow or respective owner