Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??
There is also a school of thought (in which I'm enrolled {grin}) that an object should also be a "valid" object upon instantiation, and that a caller should never be given a partially constructed object that has to be prodded a bit before it would be valid for the rest of the program.

Since the point of an object is to hold varying internal state, creating an object with "new" that has no internal state almost certainly means that the object is not yet "initialized" and thus does not yet represent a valid object. (I can think of a few rare exceptions, but those are exactly that, rare.)

So, this "simple constructor" is nothing more than an interesting sequence of code, but in practical use, practically worthless.

In perlboot, I even argue that constructors shouldn't simply be called "new", since almost any real constructor will require some sort of state that cannot be determined without the use of parameters, and naming the method to match the intent of the parameters makes it somewhat clearer. As a practical famous example, note the constructor for DBI is called connect and not new. There's no way to create a "new DBI object". Only a connected one, one that has purpose and internal state and can be used with other calls. This is a very good model to follow.

-- Randal L. Schwartz, Perl hacker


In reply to Re: simple OO constructor by merlyn
in thread simple OO constructor by galacticdruid

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!
  • 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, 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, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • Outside of code tags, you may need to use entities for some characters:
            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.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others wandering the Monastery: (8)
    As of 2014-07-29 12:19 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      My favorite superfluous repetitious redundant duplicative phrase is:









      Results (217 votes), past polls