Okay I have a preexisting class Foo::Bar. I am adding some new thingy that does not inherit from Foo::Bar, but is related, so how do I name it?
Foo::Bar::Quux
But then the existing object should probably be Foo::Bar::Baz, and I do not wish to break legacy support...
Foo::Bar w/ newQuux as a constructor
But then shouldn't the constructor for be newBaz?
Foo::Bar new(-Quux)
In a manner of speaking the current constructor is new(-Baz). However is having a single constructor returning multiple objects (well, Quux is a closure, but whatever) a faux pas? And then there's the semantics of new(-Baz, -Quux); return a list either in the order specified or always Baz then Quux? scalar context?
Never return Quux
Keep a global lookup table, and -Quux needs to be defined defined in both the new and Wiffle methods. This doesn't means more work to allow the destruction of Quux. And it goes against the rest of the design a bit (lookup table vs. OO). It's also then, less obvious that you can mix and match or even chain (chaining becomes semantically difficult) your Quuxes. eg;
$Quux = ... $Quuux = ... $Baz = ... $baz->Wiffle($Quux->($Quuux->("Hello World"))); $baz->Wiffle($Quuux->($Quux->("Hello World")));

Thoughts? Alternatives? I'm kind of leaning towards the thirdform.

PS> For the "terminally curious": Foo=>'Text', Bar=>'FIGlet', Quux=>'Control', Baz=>'Font'

--
perl -pew "s/\b;([mnst])/'$1/g"


In reply to OO semantics quandary by belg4mit

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.