Kevin Wong wrote:
> Although I'm all about loose coupling, placing concerns and knowledge
> where they belong is also important.  I this case, what does the
> HumanResources.holidays(..)
Humm, well, maybe human resoruces does this by interacting with the 
person (or their records) or maybe via a calender. So, it still sounds 
like a case where collaboration via double dispatch could be useful. In 
this case I think it provides for a nice separation between personal 
data and policy or other HR activites.


>   Dependencies are okay if they make sense and are
> not undue.
>   
agreed, it is through dependencies that we get work done.

-- Kirk

> On Dec 12, 2: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?
>>     
> >
>
>   


--~--~---------~--~----~------------~-------~--~----~
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