From: Matthew Smillie Date: 2005-12-09T00:31:53+09:00 Subject: Re: Best Practice Advise for a Total Ruby Beginner On Dec 8, 2005, at 15:17, cros wrote: > > I found I had to make a method to access the "created" instance var in > the Message class in the sort block. I tried using a.@created and > b.@created but it threw a syntax error. So, my question: Is making a > method simply to access a var as in this case "good programming"? > > Paul Basically, yes. It's generally referred to as 'encapsulation' in object-oriented circles. One big advantage that's often cited is that if you change the internal representation of 'created' in Message (say, to seconds since 1970 or something), you only change the accessor method to maintain compatibility. If you directly accessed the variable, you'd have to change every piece of code that used Message to keep it compatible. As I'm sure will be pointed out before I manage to send this off, Ruby provides some shortcuts for making these methods: class Message attr :created def initialize(created) @created = created end end 'attr' is a method which adds accessor methods to the class for its arguments. The arguments are symbols which correspond to variable names you want the accessors for. matt.