Java初始赋值

标签 java intellij-idea

在我前几年的 C++ 开发中,我知道总是用一些东西来初始化你的变量是一种惯例。

我把这个约定带到了 Java 以及我使用的任何其他编程语言中。

我使用 IntelliJ IDEA,我对它非常满意,并且通常遵循它的编程指南和警告,但是我收到了这个警告:

public String getText(By by) {
    String text = null; // Variable `text` initializer `null` is redundant

    WebElement ele = findElement(by);
    highlightIfDemoMode(ele);

    String tagName = ele.getTagName();
    if (tagName.equals("input")  ||
        tagName.equals("select"))
        // For field elements, the text is actually held in values, not the text.

        text = ele.getAttribute("value");
    else
        text = ele.getText();

    return text;
}

显然,在 Java 中,

String text;
// is the *exact* same thing as..
String text = null;

考虑到 IntelliJ 非常擅长遵循编程约定,我是否应该忽略我的约定,不要像在 Java 中这样初始化我的变量?我觉得它更干净,但如果 Java 约定告诉我不要这样做,我就不会。

有人能告诉我初始化更好还是仅仅推断它为空

最佳答案

编译器的一个区别是

String text;
text.toString();

是编译错误。

String text = null;
text.toString();

可以编译,但会出现运行时错误。

编译错误比运行时错误好。在您拥有一个值之前不声明您的变量比任何一个都好,但有时是不可能的。

int x;
try(SQLRunner runner = new SQLRunner(connectionPool) {
    x = runner.getX();
}

是必要的。但是,考虑在这种情况下将您的变量设为 final。无论如何,这都是一种很好的做法,但我个人认为将每个不会更改的 local 变量都声明为 final 过于冗长且无益。这是一个异常(exception),因为 int x; 告诉我它稍后会改变,但没有告诉我它会改变多少。

final int x;

关于Java初始赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25668117/

相关文章:

java - 在 Play 模板中将 boolean 值渲染为 0 或 1

intellij-idea - kotlin 未解析 KDoc 链接,但 IntelliJ 不喜欢修复它的导入

intellij-idea - 处于演示模式时的项目 View /文件导航

java - 单击按钮时调整框架大小

intellij-idea - 使用 IntelliJ 运行 Play2 应用程序时出错

scala - 当想法在Kotlin项目中调用Scala varargs函数时,类型不匹配

java - 使用 CSVBeanReader 忽略不需要的列

Java Enum 找不到符号错误

java - jdbc 验证查询

java - 将 Web 应用程序连接到离线编译器 (Java/Python)