将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");
}
}
}
但我遇到的问题是,由于我定义了一些方法应该接受空参数以实现一个单一方法的多个功能,就像上面提到的 getCompaniesList(Company companyFilter) 方法一样。所以我不能对所有方法统一应用 AOP,也不能在方法名匹配方面使用某些表达式。
如果需要更多信息或者问题描述不够清晰,请告诉我。
感谢阅读我的问题并思考。