Agreed -- the calculation for a salesperson's holidays may depend on
the amount of his sales, while a manager's holidays might depend on
his business unit's profitability. In that case, you'd need a Strategy
object to hold the calculation, which could be replaced based on the
type or role of the employee.

In general, though, the calculation of holidays only makes sense in
the context of an Employee, so I strongly disagree with McConell.

On Dec 12, 10:35 am, "Viktor Klang" <[email protected]> wrote:
> I think the Contract should determine the number of holidays allowed.
>
> On Fri, Dec 12, 2008 at 8:51 AM, Nick <[email protected]>wrote:
>
>
>
>
>
> > Hi folks,
>
> > I'm just reading Code Complete by Steve McConell and I'm thinking of
> > an Example he gives in a section about loose coupling. It's about the
> > interface of a method that calculates the number of holidays for an
> > employee, which is calculated from the entry date of the employee and
> > her sales. The author suggests a to have entry date and sales as the
> > parameters of the method instead of an instance of the employee:
>
> > int holidays(Date entryDate, Number sales)
>
> > instead of
>
> > int holidays(Employee emp)
>
> > The argument is that this decouples the client of the method because
> > it does not need to know anything about the Employee class.
>
> > Two things came to my mind:
>
> > 1. Providing all the parameters that are needed for the calculation
> > breaks encapsulation. It shows the internals of the method on how it
> > computes the result.
>
> > 2. It's harder to change, e.g. when someone decides that also the age
> > of the employee should be included in the calculation. One would have
> > to change the signature.
>
> > What's your opinion?
>
> --
> Viktor Klang
> Senior Systems Analyst
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to