Loose Coupling vs. Information Hiding and Ease of Change

Posted by cretzel on Stack Overflow See other posts from Stack Overflow or by cretzel
Published on 2008-12-12T07:51:20Z Indexed on 2010/06/03 0:24 UTC
Read the original article Hit count: 464

Filed under:
|

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?

© Stack Overflow or respective owner

Related posts about design

Related posts about coupling