在传递给方法之前将空值命名为引用的约定?

Convention to name null value to a reference before passing to a method?

我的问题更多是关于编码约定和实践 - 但对内存或性能有任何影响吗?

我有一个接受 SomeType 数据的方法:

public void someMethod(SomeType sm) {
  //does something
}

Practice #1:
public void callerMethod() {
    SomeType someName = null;
    someMethod(someName);
}

Practice #2:
public void callerMethod() {
    someMethod(null);
}

实践#1 是否对程序员应该考虑的内存引用创建有任何影响?是 "preferred practice"?

是否应该避免练习 #2,因为 "bad practice" 因为它没有提供任何关于哪些数据作为 null 传递的线索?在重载方法的情况下也会产生问题?

练习 #1 有点多余,因为它创建了一个不必要的局部变量。

您可以将其替换为

someMethod((SomeType) null);

这种做法相对于做法 #2 的唯一优势是消除了重载 someMethod 时的歧义(即,如果您有多个名为 someMethod 的方法采用单个引用类型参数,则调用 someMethod(null)在某些情况下不会通过编译,因为编译器不知道调用哪个方法。

这里真正的最佳实践:首先要小心提出可以使用 null 参数的方法。

为什么不使用两种public方法:一种需要非空对象;另一种需要非空对象。还有一个接受 no 个参数? 使你的意图比你的两个提议都清楚得多。

允许空值总是会带来忘记代码某处需要空值检查的风险;因此,如果您考虑最佳实践:建立干净、精确的界面,很难以错误的方式使用。

关于性能:只是 忘记 担心那个。如果您的方法被频繁调用以至于 JIT 决定对其进行优化;它将在运行时进行优化。如果 JIT 发现此方法每小时调用一次;因此不优化它 - 为什么你认为你需要担心呢?如果有的话,我们在这里谈论的是纳秒。您需要许多方法调用才能使纳秒变得重要 ...

意思是:当然,应该避免彻底愚蠢的性能杀手;但大多数时候你绝对关注可读性。还记得 premature optimization thing 吗?