-
-
Save andremedeiros/bbf423220d63de017721 to your computer and use it in GitHub Desktop.
# Option 1 | |
info = if publication | |
"Title: #{ publication.title } (ID: #{ publication.id })" | |
else | |
'N/A' | |
end | |
# Option 2 | |
info = case publication | |
when Publication then puts "Title: #{ publication.title } (ID: #{ publication.id })" | |
when nil then puts 'N/A' | |
end |
Actually I prefer 2. Ideally I'd love Ruby to have something like this:
https://github.com/xavier/elixir-exercises/blob/master/fizzbuzz.exs
That is nice!
I prefer #2. Looks more pleasing to the eye. Though a "case" when there's only two outcomes is kinda weird, but I'm not familiar with the language, so there might be another outcome of this.
depends on how many "cases you have", for one either is fine but if you have too many maybe the second one is more readable for faster debuging.
how about a third option...
info = publication ? "Title: #{ publication.title } (ID: #{ publication.id })" : "N/A"
one funky style i've seen:
info = pubication
? "Title: #{ publication.title } (ID: #{ publication.id })"
: "N/A"
I kinda like how the operators align it but it takes a while to parse in your head if you are not used it. Also I think ruby syntax won't let you do it.
for option 2 I also find the indentation a bit weird. Maybe if the when
statements where indented or even aligned with the case
.
def publication_caption(publication)
return 'N/A' if publication.nil?
"Title: #{ publication.title } (ID: #{ publication.id })"
end
info = pubication_caption(publication)
Actually long term in such cases I would use the null object pattern (see https://github.com/avdi/naught) and define #to_s on both NullPublication and Publication.
From your options however, the first one seems a lot more readable, if the only case you need to address is NIlClass.
what do you prefer?