Thursday, October 11, 2007

Ruby: PORO

The term PORO (Plain Old Ruby Object) is being used a bit more often these days. In a comment on my last post someone expressed frustration that I didn't validate the acronym. After a quick Google search I noticed that no one has gone out of their way to point out it's meaning.

PORO isn't a term that was born in the Ruby community. In fact the original POXO was POJO.
The term was coined while Rebecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000. In the talk we were pointing out the many benefits of encoding business logic into regular java objects...
POROs, like POJOs, are often found in discussions about simplicity and testing.
POJO is an acronym for Plain Old Java Object, and is favoured by advocates of the idea that the simpler the design, the better. --Wikipedia
There's plenty of discussion around POJOs on the web, most of which applies to POROs as well.

5 comments:

  1. Anonymous10:59 AM

    I use PRO.

    1. Doesn't follow the Java pattern. Yay.
    2. We don't have anything like EJBs, so Plain Ruby Objects aren't really "old"
    3. I get to say stuff like, "...when I'm PRO coding..."

    Come on Jay, let's get this term going.h

    ReplyDelete
  2. "POJO" may have been coined in 2000, but in the C++ world POD and PODS (plain old data [structure]) had already been around for several years, and the term was used in the first C++ ANSI draft. It referred to a C struct or class with no methods or inheritance, only data.

    ReplyDelete
  3. Agreed.

    However, I disagree about your Google search result. Try to google "POROs Ruby" ;)

    POROs

    ReplyDelete
  4. Anonymous4:04 AM

    Andy,

    Nice work. I didn't search for "poros ruby", only "ruby poro" and "poro ruby". Thanks for the comment.

    Cheers, Jay

    ReplyDelete
  5. I very sincerely hope that PORO dies as a name. Just like POJO, what on earth is the point in using an acronym to describe the fundamental unit of abstraction in a language? What's wrong with 'object'?

    ReplyDelete

Note: Only a member of this blog may post a comment.