Sandi Metz's presentation on RailsConf 2014 is one of the best talks on OOP and refactoring that I've ever seen:
Main takeways:
- Refactor under green
- Inheritance is not evil
- Prefer duplication over the wrong abstraction
- "make the change easy (warning: this may be hard) then make the easy change" - Kent Beck
- Make small things (functions, methods, classes, etc.)
- Refactor through complexity