Object-oriented relativism

When a Method Can Do Nothing, Michael Feathers:

If polymorphism means anything at all, it means that the object is in charge. We send it a message and it is up to it to decide what to do. That’s core to OO and part of Alan Kay’s original view of objects – that they are all about messaging. That said, it is not the dominant view today.

The majority of this article is on working with/around conditionals using intention-revealing method names or null objects. Yet, this paragraph smacked me in the face with “oh, yeah, obviously!”. Lots of people view the moving parts in object-oriented languages as ways to group and share functionality. But to people who talk about OO a lot, read the history books, read the pattern books, know what SOLID is, etc. it’s an entirely different thing.

Here’s a sports metaphor: the Dallas Cowboys are a widely disliked sports team, for various reasons. If I was from anywhere but Dallas, it would be “not cool” to count myself one a fan. But being from Dallas, I have an entirely different view on the Cowboys and can safely watch their mostly mediocre performances with occasional memories of greatness, safe from scorn.

I find that holding that tension in my head is important when talking to sports fans. It’s the same with OO: you haven’t read the books, watched the presentations, or worked the exercises I have. We’re on different pages, but we need to talk about the same code and how to structure it. There’s a tension between my understanding of OO and the next person, but it’s not a barrier. We have to get our language straight before we can talk about language!

In short, we have to establish what city in OO-land we’re from before we can effectively talk about OO.