Free functions versus member functions
janderson
askme at me.com
Wed Oct 10 20:32:28 PDT 2007
Walter Bright wrote:
> Continuing the discussion from the thread "questions on PhanTango
> 'merger'":
>
> Lars Ivar Igesund wrote:
> > It is not as if such functions are non-existant in Tango, so which exact
> > functionality do you think is better expressed through free standing
> > functions rather than objects? The answers of others shows that this
> > usually is wanted for objects where you often need only one operation on
> > the given object, even if others are available. This don't remove the
> fact
> > that an object (class) equally often is a useful abstraction, and
> when that
> > is established, free standing functions usually should be implemented as
> > wrappers around each method on the object, rather than the object being
> > implemented via free standing functions. This is why Tango looks as
> it does
> > today; we have avoided wrappers of our own code if possible, because
> they
> > degrade orthogonality of the API, and add more code to maintain.
> Whether we
> > have been to strict in enforcing that stance, is an open question.
>
> I've been stumped by this design issue before. Should functionality be
> done as a set of free functions, or as member functions? I remember
> going over this with Matthew Wilson, and he resolved it by implementing
> two parallel sets of interfaces: one free, the other member. I thought
> that doing both was a copout, but couldn't figure out which one was right.
>
> I eventually ran across this article by Scott Meyers
> http://www.ddj.com/cpp/184401197
> which made a lot of sense. It gives some good guidelines to use to make
> such decisions, and backs it up with reasoning that I find compelling.
>
> Isn't it funny how we've completed the circle? We went from all free
> functions in C, to all member functions in C++, and now back to free
> functions? <g>
I'm sure you Walter have read these but for anyone else:
I like this interview with Bjarne Stroustrup. I think it explains it
reasonably well. http://www.artima.com/intv/goldilocks3.html
Also Hurb Sutters book "C++ Coding Standards" as a good explanation:
http://www.gotw.ca/publications/c++cs.htm
Its actually the official "coding style guide" where I work.
-Joel
More information about the Digitalmars-d
mailing list