为什么始终使用object = null?

时间:2016-12-06 07:45:43

标签: java

MessageDigest md = null;
md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
md.update(saltBytes);
md.update(passwordBytes);
byte[] digest = md.digest();

就像上面那样,“MessageDigest md = null”,代码是什么意思? 我认为“MessageDigest md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);”更好。

为什么呢?有那么多代码,只是因为历史?

3 个答案:

答案 0 :(得分:3)

  

为什么始终使用object = null?

它不是“永远使用”。事实上,像这样的东西很少/从未出现在编写良好/已审核的代码中。

因为......

MessageDigest md = null;
md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);

直接等同于

MessageDigest md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
  

为什么 [人们这样做]

没有充分的理由。

  

这样的代码很多,只是因为历史?

可能。

另外,可能是因为:

  • 作者不是一个优秀的Java程序员......或者
  • 作者匆忙或者不在乎......或者
  • 代码已使用(相当愚蠢的)自动工具重构而未整理......或
  • 代码源于反编译器生成的内容。

唯一可以确定的方法是询问作者。

答案 1 :(得分:0)

如果您使用某些条件语句,则无法进行空赋值,您只能编写

    MessageDigest md;
    if (/*something*/) {
        md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM); 
    }

您必须为md变量明确指定一些值。在这种情况下,经常使用null。

然而,在你的例子中,它绝对没用。只需写下

    MessageDigest md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);

答案 2 :(得分:0)

为什么会有这样的代码?因为很多人不了解他们编程语言的基本模式。

为什么人们不知道更好?因为没有人经常教他们。 (好吧,除了IntelliJ,但IDE会针对高级开发人员。)

为什么没有人告诉他们?也许是因为他们的同事也不太了解它。

还有人记录了他们的getter和setter方法("返回名称。@return the Name")。它的情况差不多。