Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re^2: Seeking inside-out object implementations

by revdiablo (Prior)
on Dec 06, 2005 at 21:27 UTC ( #514644=note: print w/replies, xml ) Need Help??

in reply to Re: Seeking inside-out object implementations
in thread Seeking inside-out object implementations

In the quest for encapsulation enforcement, they may be throwing the baby out with the bathwater

I guess the bathwater is inside-out objects, but what is the baby here? Do you mean an object that can be externally serialized and plays well with threads? Well, to be honest, these seem like pretty specific needs. Granted, the Hard Core Encapsulation you get from inside-out objects may be pretty specialized too, but why is your set of special needs more important than another? I'm not trying to convince you to use IOO, but your argument against it seems kind of hollow in my mind.

  • Comment on Re^2: Seeking inside-out object implementations

Replies are listed 'Best First'.
Re^3: Seeking inside-out object implementations
by perrin (Chancellor) on Dec 06, 2005 at 21:44 UTC
    Most people expect to be able to serialize things with Storable, and many modules like MLDBM or CGI::Session/Apache::Session depend on it. It's not an esoteric concern. Neither is easy debugging with Data::Dumper or the 'x' command in the debugger. Thread use may not be widespread, but serialization is.
      Most people expect to be able to serialize things

      Just to be clear, we are talking about object serialization, right? I would certainly say serialization of data structures is common, but I was talking about objects in specific. That's something I haven't really ever had the need for in Perl. I don't see a whole lot of people asking how to do it, either (either here or in #perl). Because of this, I assumed it wasn't very common. I'm not saying this assumption is correct, of course, just explaining how I arrived at it. I'll just have to suspend judgement for now, I guess.

        I may see this more than most because it comes up frequently on the mod_perl and Class::DBI lists, but yes, people expect to be able to serialize objects. Every caching system for Perl uses Storable, and people expect to cache objects. Same for sessions.

      Perl programmers have come to expect to be able to get at the innards of objects easily -- that the internals are *not* encapsulated in any meaningful way. One can fairly argue that that creates a number of weaknesses and/or potentially fatal problems -- problems that would exist in some fashion any time an object is not opaque. Consider the risks one would take by making the attributes of a Jave class public.

      Inside-out objects do encapsulate quite fiercely, and are very opaque. If one needs to serialize an opaque object, that object needs to provide that capability itself. One might expect a standard mechanism for doing that. "to_string" might be a suitable method name. I think PBP advocates creating just such a routine for this purpose.

      It sort of comes down to "managing expectations", and, particularly, changing those expectations.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://514644]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (2)
As of 2017-08-21 02:01 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (317 votes). Check out past polls.