при внедрении/использовании методов, возвращающих или работающих с экземплярами объектов, что является самым элегантным подходом для проверки параметров функции?Лучший способ проверить параметры функции: проверить на null или try/catch
Способ назвать:
someType GetSomething(object x)
{
if (x == null) {
return;
}
//
// Code...
//
}
или лучше:
someType GetSomething(object x)
{
if (x == null) {
throw new ArgumentNullException("x");
}
//
// Code...
//
}
Вызов метода:
void SomeOtherMethod()
{
someType myType = GetSomething(someObject);
if (someType == null) {
return;
}
}
или лучше:
void SomeOtherMethod()
{
try {
someType myType = GetSomething(someObject);
} catch (ArgumentNullException) {
}
}
При просмотре похожих вопросов причина не использовать try/catch - это производительность. Но ИМХО попытка try-catch просто выглядит лучше :).
Итак, какой путь более «изящный»?
Имея функции, которые будут оценивать ненулевые входы и возвращать нуль для нулевых входов, часто является полезным шаблоном. В некоторых случаях шаблон Null Object может быть более приятным, но его сложно реализовать с помощью дженериков. – supercat