gpt4 book ai didi

java - NULL 参数是一种不好的做法吗?

转载 作者:太空狗 更新时间:2023-10-29 22:31:31 25 4
gpt4 key购买 nike

将 NULL 参数传递给方法是否是一种不好的做法,或者换句话说,我们是否应该有允许 NULL 参数作为有效参数的方法定义。

假设我想要两种方法1. 检索所有公司的列表2. 根据过滤器检索公司列表。

我们可以有如下两种方法

    List<Company> getAllCompaniesList();
List<Company> getCompaniesList(Company companyFilter);

或者我们可以有一个单一的方法

    List<Company> getCompaniesList(Company companyFilter);

在第二种情况下,如果参数为 NULL,则方法返回所有公司的列表。

除了实践中的良好实践问题外,我还看到了后面的方法的另一个问题,下面将对此进行解释。

我正在实现 Spring AOP,我想在其中对参数进行一些检查,例如1.参数是否为空?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,而且方法名称匹配的某些表达式在这里也没有用。

如果需要更多信息或问题描述不够,请告诉我。

感谢您阅读我的问题并给予思考。

最佳答案

我使用一个非常简单的规则:

决不允许 null 作为参数或公共(public)方法的返回值。

我使用 OptionalPreconditions或 AOP 来执行该规则。这个决定已经为我在 NPE 或奇怪行为后修复错误节省了大量时间。

关于java - NULL 参数是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com