I prefer to access stuff via methods rather than instance variables generally. One reason is to enhance encapsulation, even within an object. If you change a static value to a computed one, then you have to track down every `@foo` and change it, whereas you don't have to do that if you use method calls. Secondly, typos and such with methods fail a lot faster and nicer than with instance variables. You can turn on ruby warnings to see uninitialized instance variables, but I'm afraid what I would see if I turned on warnings for chef.