Обычно достаточно использования только идентификатора, и это намного проще, потому что вы можете просто передавать идентификатор из одного места в другое.Это особенно важно для веб-сервисов, где вы хотите минимизировать объем передаваемых данных.
Однако, если у вас часто есть большие сигнатуры метода, когда входные данные не очень хорошо указаны именем метода:
List<Cars> GetCars(int makeId, int modelId, int year, int dealershipId);
... это может стать очень простым для передачинеправильный идентификатор в неправильном месте.С этого момента я бы начал пытаться найти другую стратегию.Строго вводить входные данные как доменные объекты - это одно из решений, но, как правило, это доставит вам гораздо больше хлопот, чем простое использование специальных опций POCO:
public class GetCarsOptions
{
public int MakeId {get;set;}
public int ModelId {get;set;}
public int Year {get;set;}
public int DealershipId {get;set;}
}
List<Cars> GetCars(GetCarsOptions options)
{
ValidateOptions(options); // make sure the values all make sense.
}
На самом деле вы не сможете пойматьКаждая возможная ошибка во время выполнения, поэтому рекомендуется объединить автоматизированные тесты с методами «fast-fast», чтобы попытаться выявить как можно больше ошибок после компиляции и перед развертыванием.