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