Является ли плохой практикой передавать аргумент 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); Поэтому я не могу применять АОП единообразно для всех методов, и ни одно выражение для соответствия имен методов здесь не будет полезно.
Пожалуйста, дайте мне знать, если требуется дополнительная информация или проблема недостаточно описательна.
Спасибо, что прочитали мою проблему и обдумали ее.