-
-
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 |
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.
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.