A way to nip
PrimitiveObsession in the bud, with
RubyLanguage:
Instead of doing things like:
obj = {}
obj[:prop] = 3
puts obj[:prop]
One can do something like:
require 'ostruct'
…
obj = OpenStruct.new
obj.prop = 3
puts obj.prop
This is a nice first-step on the way to a proper class, because this is
basically a direct transliteration, whereas the step where you start adding
richer methods is trickier (and we wouldn't want to conflate the two changes
into one refactoring step, if possible).
Note that you can actually implement the '[]' method on proper classes, meaning
you can still avoid conflating the two steps into one, even if you do them in
the other order.
RubyIsFun.