# Proposed benefits: # * more verbose, but you can see more clearly all the "stuff" your method is using # * easier to re-use methods, since they're not coupled to instance var names # * less room for concurrency issues, since all state transforms would be in the top methods class User def gender infer_gender @gender end private def infer_gender @gender ||= if male_name? 'male' elsif female_name? 'female' else 'unknown' end end def male_name? @name == 'bob' end def female_name? @name == 'jane' end end vs class User def gender @gender ||= infer_gender(@name) end private def infer_gender(name) if male_name?(name) 'male' elsif female_name?(name) 'female' else 'unknown' end end def male_name?(name) name == 'bob' end def female_name?(name) name == 'jane' end end