|
Boost : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-10-31 14:19:16
From: <williamkempf_at_[hidden]>
> --- In boost_at_y..., "Kevin S. Van Horn" <kevin.vanhorn_at_n...> wrote:
[many interesting things that I agree with]
> > [I discussed Three possibilities: (1) public member function; (2)
> friend
> > function; (3) non-member, non-friend function. I stated that I
> prefered (3)
> > when possible, and lean toward (2) over (1). The reason is to
> limit access
> > to the internals of a class to only those functions really needing
> it.]
>
> There's a reason to prefer (3) in a general sense. I forget the OO
> principles name, but in essence the public interface should
> be "minimal but complete". This principle can be taken too far,
> however.
>
> (2) on the other hand should never be prefered. Friend functions are
> fragile and can open the code up to abuse.
Why?
> They also clearly
> illustrate that the above principle wasn't adhered to.
Why?
> 1) Why should you prevent them from writing x.some_operation()?
Because you can't make a member function non-friend.
-- Peter Dimov Multi Media Ltd.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk