Some OOP best practices

I do my best to write decent code but sometimes all I seem to write is smelly code. I'm not sure whether it's me not analysing well enough, a product of the frameworks and language I'm using or just me not being good enough.

Either way, here's a few useful articles I've been reading which higlight a couple of OOP best practices.

I'm sure there are many more articles like this around but for one evening's reading, this should suffice.

There's a great book by the people at thoughtbot which covers a good number of code smells. it costs around £37 but it's good.
ruby science