С точки зрения самого вызова метода любой потери производительности будет недостаточно.Более важным является влияние, которое это оказывает на удобство сопровождения вашей программы.
Если вы берете Employee
в качестве аргумента, кто-то должен всегда убедиться, что у него есть en Employee
, прежде чем он сможет вызвать ваш метод.С одной стороны, это помогает избежать ошибок, когда люди передают неверную переменную int
в ваш метод:
int plusOne = GetPlusOne(emp.DirectReportId); // oops, didn't you mean EmployeeId?
С другой стороны, это может раздражать, если все, что у меня есть, это идентификатор сотрудника,и теперь мне нужно сделать какой-то доступ к базе данных, чтобы получить из него реальный объект Employee.
foreach(var pinkSlip in pinkSlips)
{
var employee = GetEmployee(pinkSlip.EmployeeId); // ugh, is this really necessary?
int plusOne = GetPlusOne(employee);
...
}
Если GetEmployee
делает что-то дорогое, например, обход данных базы данных, приведенный выше код потенциально может быть очень медленным: не из-за вызова GetPlusOne, а потому, что вы должны создать Employee
, когда все, что вас интересует, это идентификатор.
В конечном итоге вам придется принимать это решение в зависимости от того, как выожидать, что данный метод будет использован.