switch statement - How do I DRY up this Ruby code? -
here code:
when 'jty' if j.type != "0" @color = allcolors.find { |c| c['type'] == j.type.to_s } clr << @color.color if @color else clr << @@default_map_marker_color end when 'jcat' if j.priority != "0" @color = allcolors.find { |c| c['type'] == j.priority.to_s } clr << @color.color if @color else clr << @@default_map_marker_color end
i have 6 more when
statements in case, , repeat part:
clr << @color.color if @color
over , over. hate it.
here things need know:
clr
empty array initialize outside case
statement, , case
statement inside for
loop that's going through lot of objects. it's looking color associated particular thing, , nosql-hack-ish way relational data.
if like:
def push_color clr << @color.color if @color end
clr
, @color
aren't being passed around without params method. there's dislike passing params methods - it's dependent. i'm stretching understand better , write code doesn't have these implicit dependencies. have pass info 1 method another, creates dependency breaks if param i'm passing changes or disappears, , that's i'm trying avoid.
i don't understand how can clr
filled whatever returns case
statement. ideally like:
clr = pref.map |p| p(&:do_the_switch_statement_here) end
and p
entire case , return something.
that's head is, can't quite imagine how.
your current code has duplications, instance:
j.type
versus j.priority
both times check value not string '0'.
later on again use same method. seems superfluous.
on top of use class variable when there no need it. recommend not use class variables.
it not code start wanting optimize @ all.
your data structures needlessly complicated.
when simplify data structures, code automagically become much simpler.
Comments
Post a Comment