Неправильная практика передавать аргумент NULL методам или, другими словами, следует ли определять методы, которые допускают аргумент NULL как допустимый аргумент.
Предположим, что мне нужен два метода 1. получить список всех компаний 2. получить список компаний на основе фильтра.
Мы можем либо иметь два метода, как ниже
List<Company> getAllCompaniesList();
List<Company> getCompaniesList(Company companyFilter);
или у нас может быть один метод
List<Company> getCompaniesList(Company companyFilter);
здесь во втором случае, если аргумент равен NULL, тогда возвращаемый метод возвращает список всех компаний.
Помимо вопроса о хорошей практике, практически я вижу еще одну проблему с более поздним подходом, которая объясняется ниже.
Я реализую Spring AOP, в котором я хочу иметь некоторые проверки на аргументы вроде 1. Является ли аргумент NULL? 2. представляет собой размер коллекции 0?
Есть несколько сценариев, в которых мы не можем иметь нулевой аргумент вообще как метод
void addBranches(int companyId, List<Branch>);
Эта проверка может быть выполнена очень хорошо, используя Spring AOP, определяя метод, например следующий
@Before(argNames="args", value="execution(* *)")
void beforeCall(JoinPoint joinPoint ,Object[] args )
{
foreach(Object obj in args)
{
if(obj == NULL)
{
throw new Exception("Argument NULL");
}
}
}
Но проблема я сталкивается с тем, что я определил некоторые из методов, которые должны принимать аргумент NULL для множественной функциональности одного метода, как упомянуто выше для метода List getCompaniesList (Company companyFilter); Поэтому я не могу применять AOP равномерно для всех методов, и ни одно выражение для совпадения методов не будет полезно здесь.
Пожалуйста, дайте мне знать, требуется ли дополнительная информация или проблема не достаточно описательна.
Спасибо, что прочитал мою проблему и подумал над ней.