Каковы наилучшие методы, если у вас есть класс, который принимает некоторые параметры, но никому из них не разрешено быть null
?
Ниже очевидно, но исключение немного неспецифично:
public class SomeClass
{
public SomeClass(Object one, Object two)
{
if (one == null || two == null)
{
throw new IllegalArgumentException("Parameters can't be null");
}
//...
}
}
Здесь исключения позволяют узнать, какой параметр имеет значение null, но конструктор теперь довольно уродлив:
public class SomeClass
{
public SomeClass(Object one, Object two)
{
if (one == null)
{
throw new IllegalArgumentException("one can't be null");
}
if (two == null)
{
throw new IllegalArgumentException("two can't be null");
}
//...
}
Здесь конструктор более аккуратный, но теперь код конструктора на самом деле не находится в конструкторе:
public class SomeClass
{
public SomeClass(Object one, Object two)
{
setOne(one);
setTwo(two);
}
public void setOne(Object one)
{
if (one == null)
{
throw new IllegalArgumentException("one can't be null");
}
//...
}
public void setTwo(Object two)
{
if (two == null)
{
throw new IllegalArgumentException("two can't be null");
}
//...
}
}
Какой из этих стилей лучше?
Или есть альтернатива, которая более широко принята?