I'm not saying it's always the way to go — I'm sure it's often not — but it is something to consider. You seem to be saying that it's never the way to go.

Certainly it is sometimes useful; which is why it has been around for ages and is used extensively. Think "has-a" relationships and delegation (original def'n, i.e. forwarding or consultation or wtf you want to call it.) It's the wholesale application of this design even where it makes no sense and costs a lot more than it buys that I disagree with. As in your example, for instance.

An "Area" class? What in heaven's name for? (I haven't seen one compelling reason for one in this whole thread.)

What I take issue with, really, is your motivation behind this which, from your OP, seems to be centered around these statements of yours:

In OO, things that you interact with are supposed to be objects, and you interact via their methods. Accessible properties are things that you interact with, but they often aren't implemented as objects, and their methods are owned by their parent objects.
In other words, it really seems you are saying something like, "In OO, things that you interact with are supposed to be objects and, since we interact with attributes let's make them all objects." As if that's reason enough in itself.

I'm saying as loudly and clearly as I can that it's not reason enough. In the example you've given you've created a lot of bloat for no real gain and , worse, you've paid costs in terms of both performance and maintainability. The natural conclusion: over-engineering gone awry... It's the... uh... Death of KISS.

But, if you want to retract most of your original node and instead say something like "sometimes it's useful to implement a has-a relationship" or "delegation (forwarding/consultation/whatever) is a nice technique to understand" then, by all means, I will agree with you.

-sauoq
"My two cents aren't worth a dime.";

In reply to Re^5: The Accessor Heresy by sauoq
in thread The Accessor Heresy by Roy Johnson

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.