关于NPE和单线多表达式的最佳实践

JRL*_*JRL 2 java nullpointerexception

我想知道是否可以接受的做法是避免就可能的NPE在同一条线路上进行多次呼叫,如果是这样,在什么情况下也是如此.例如:

anObj.doThatWith(myObj.getThis());
Run Code Online (Sandbox Code Playgroud)

VS

Object o = myObj.getThis();
anObj.doThatWith(o);
Run Code Online (Sandbox Code Playgroud)

后者更冗长,但如果有NPE,你会立即知道它是什么null.但是,它还需要为变量和更多import语句创建名称.

所以我的问题是:

  • 这个问题值得设计吗?第一种或第二种可能性更好吗?
  • 变量名称的创建是否具有性能效果?
  • 是否有建议更改异常消息,以便能够确定nullJava的未来版本中的对象是什么?

Ste*_*n C 5

这个问题值得设计吗?第一种或第二种可能性更好吗?

国际海事组织,没有.去寻找最易读的代码版本.

如果你是无法诊断的NPE 然后根据需要修改的代码.或者,使用调试器运行它,并使用断点和单步执行来找出空指针的来源.

变量名称的创建是否具有性能效果?

添加额外变量可能会增加堆栈帧大小,或者可能会延长某些对象保持可访问的时间.但这两种影响都不大可能.

是否有建议更改异常消息,以便能够在将来的Java版本中确定哪个对象为null?

不是我知道的.实现这样的功能可能会有明显的性能缺点.