Я просто читаю Code Complete от Steve McConell, и я думаю о примере, который он дает в разделе о свободной связи. Это о интерфейсе метода, который вычисляет количество праздников для сотрудника, который рассчитывается с даты ввода сотрудника и ее продаж. Автор предлагает указать дату и продажу даты в качестве параметров метода вместо экземпляра сотрудника:
int holidays(Date entryDate, Number sales)
вместо
int holidays(Employee emp)
Аргумент в том, что это отделяет клиента от метода, потому что ему не нужно ничего знать о классе Employee.
Мне пришло в голову две вещи:
-
Предоставление всех параметров, необходимых для вычисления, прерывает инкапсуляцию. Он показывает внутренности метода о том, как он вычисляет результат.
-
Сложнее изменить, например. когда кто-то решает, что и возраст сотрудника должен быть включен в расчет. Нужно изменить подпись.
Каково ваше мнение?