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