Actually, I don't see anything wrong with creating accessor or mutator methods with Autoload. Class::MethodMaker does that, and it's very useful for simple classes. I've used Autoload to come up with accessor methods. The trick is to document the methods as though they were normal. After all, implementation shouldn't be part of the interface anyway.

Worrying needlessly about syntax, and which is better, seems counterproductive to me. Any vaguely workable syntax becomes transparent after about a month of use. :)

If you like Perl, but enjoy your object orientation more pure than Perl offers, you might want to look at Ruby. It's not a Perl-killer yet-- it lacks DBI classes AFAICT, among other things-- but it has some of the purest object-orientation I've ever seen. (Example: what do you do when you want something looped five times? You tell the number five, "Do this!")

It's true that doing object-oriented Perl requires more self-discipline than some other languages. I actually see this as a good thing. Writing OO Perl forces you to think about your design and stick with it. In more enforced object-oriented contexts, it's easier to forget that OO is a design quality, not a language quality.

Oh, and to metoo merlyn, you should definitely, definitely read Object-Oriented Perl.

Update: In the interest of accuracy I'll correct myself-- Class::MethodMaker doesn't generate accessors on autoload; it autogenerates them on class load. In terms of the argument, though, I personally don't see a difference, as such matters would be hidden from other classes.

stephen


In reply to Re: Perl and Objects, how do you resolve the two? by stephen
in thread Perl and Objects, how do you resolve the two? by frankus

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.