http://www.perlmonks.org?node_id=485984


in reply to Things I Don't Use in Perl

  • 'Singletons' to pretend I'm not using globals.
  • $collection->set_item( 22) = $collection->get_item( 22 ) + 1; when I need $collection[22]++
  • Setters/getters as a thin veneer over C-style structs to pretend they are 'OO'.
  • Group think.

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.
  • Replies are listed 'Best First'.
    Re^2: Things I Don't Use in Perl
    by skx (Parson) on Aug 24, 2005 at 11:14 UTC

      I can see the argument against using Singletons just as global variables.

      But in many circumstances they are useful. The most obvious two situations I use them are in:

      • Log objects.
      • Database handles.

      Passing a database handle to all methods, or to multiple objects gets sloppy fast - but having a single resource to fetch it from is neat.

      Similarly with debug files; although they are sometimes abused when you realise you need more than one logfile...

      Steve
      --
        I can easily think of two situations where those have driven me MAD.

        I need to connect to a different dateabase than I used to for party of an application. I have to change which variable names I'm using to use the right database.

        I wrote one app, where it had a kernel so to speak, w/ a logger attached. Creating a new kernel would create a second running copy of everything, 'cept the logger, 'cause it was a singleton. Grrr!

        Don't privatize your constructors! If I want a shared object, good, if not, it's just as good. The only thing I ever want globals are things like, numbers. 1 only has one value. 1!

        ----
        Give me strength for today.. I will not talk it away..
        Just for a moment.. It will burn through the clouds.. and shine down on me.