Refactored block helper
Sometimes when I post about something, I think more about what I’m doing, which in turn helps me to realize a potentially better solution. For instance, before I had i<2 ? true : false which is the same as i < 2—what was I thinking??? Anyway, the problem now is I don’t know if I’m taking this simple thing too far. The block helper I was using is:
1 2 3 4 5 6 | def handicaps_and_pars(&block) titles = ["Men's Handicap", "Men's Par", "Ladies' Handicap", "Ladies' Par"] 4.times do |i| yield titles[i], i % 2 == 0 ? 'handicap' : 'hole', i < 2 ? true : false end end |
I pulled out the parts that made my brain work a little harder into a separate method that returns the yielded data as an array:
1 2 3 4 | def data_for_index(index) titles = ["Men's Handicap", "Men's Par", "Ladies' Handicap", "Ladies' Par"] [titles[index], index % 2 == 0 ? 'handicap' : 'hole', index < 2] end |
And from that I was between two options…
1 2 3 4 5 6 7 8 9 10 11 12 | # option 1 - separate data into meaningful variables def handicaps_and_pars(&block) 4.times do |i| title, partial, is_mens = data_for_index(i) yield title, partial, is_mens end end # option 2 - yield the method itself def handicaps_and_pars(&block) 4.times { |i| yield data_for_index(i) } end |
I decided to go with option 2, as I think it’s the more concise of the two. But maybe I took this already short method too far? Sometimes I don’t know when to stop with this stuff, but it’s still fun to explore the options.
