Java 为什么总是使用object=null?
正如上面所说,“MessageDigest md=null”,代码的含义是什么? 我认为MessageDigest md=MessageDigest.getInstanceMESSAGE\u DIGEST\u算法;这样更好 为什么??有很多这样的代码,仅仅是因为历史 为什么总是使用object=null 它并不总是被使用。事实上,像这样的东西很少/从未出现在编写良好/经过审查的代码中 因为Java 为什么总是使用object=null?,java,Java,正如上面所说,“MessageDigest md=null”,代码的含义是什么? 我认为MessageDigest md=MessageDigest.getInstanceMESSAGE\u DIGEST\u算法;这样更好 为什么??有很多这样的代码,仅仅是因为历史 为什么总是使用object=null 它并不总是被使用。事实上,像这样的东西很少/从未出现在编写良好/经过审查的代码中 因为 MessageDigest md = null; md = MessageDigest.getInstan
MessageDigest md = null;
md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
md.update(saltBytes);
md.update(passwordBytes);
byte[] digest = md.digest();
直接等同于
MessageDigest md = null;
md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
为什么人们会这样做
没有充分的理由
有很多这样的代码,仅仅是因为历史
可能吧
还有,可能是因为:
作者不是一个好的Java程序员。。。或
作者很匆忙或者根本不在乎。。。或
代码已经用一个相当愚蠢的自动工具进行了重构,没有整理。。。或
代码源于反编译器生成的某些内容。
唯一确定答案的方法是询问作者。如果你使用了一些条件语句,空赋值是必要的,你不能只写
MessageDigest md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
您必须显式地为md变量赋值。在这种情况下经常使用null
然而,在你的例子中,它是完全无用的。只要写
MessageDigest md;
if (/*something*/) {
md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
}
为什么会有这样的代码?因为许多人不知道他们编程语言的基本模式 为什么人们不更清楚呢?因为没有人经常教他们。好吧,除了IntelliJ,但IDE面向高级开发人员 为什么没有人告诉他们?也许是因为他们的同事也不太清楚
也有人记录他们的getter和setter方法返回的名称@返回名称。大致相同。是的,执行MessageDigest md=MessageDigest.getInstanceMESSAGE\u DIGEST\u算法;。正在执行MessageDigest md=null;第一个是不必要的。是的,在这种情况下,这一行是无用的。可能是一个草率的或新手程序员,或者是一个快速的重构,开发人员忘记了合并这两行代码。只有在写得很差的代码中。不要模仿。我投票结束这个问题作为离题,因为它问为什么总是这样做?在这种情况下,第二行和后续行可能在try块中,并且在try块之后使用md的值。这通常发生在代码重构时。像这样的小东西可能会漏掉。@marstran我做过我那份代码重构,但没有看到类似的东西。@EJP我也做过相当多的重构,我已经看过好几次了。例如,有人可能会发现一个不必要的if测试包含一些初始化代码,将其删除,然后忘记整理初始化。
MessageDigest md = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);