引入变量只是为了可读性?

Introducing variables only for readability?

为了readability引入变量是个好主意吗?

示例 1:

while(nameNode1.charAt(0) == nameNode2.charAt(0) && nameNode1.length() > 1 && nameNode2.length() > 1)
{
    nameNode1 = nameNode1.substring(1, nameNode1.length());
    nameNode2 = nameNode2.substring(1, nameNode2.length());
}

示例 2:

boolean letterFromBothNodesAreEqual_andNameHasMoreThanOneLetter = nameNode1.charAt(0) == nameNode2.charAt(0) && nameNode1.length() > 1 && nameNode2.length() > 1;

while(letterFromBothNodesAreEqual_andNameHasMoreThanOneLetter)
{
    nameNode1 = nameNode1.substring(1, nameNode1.length());
    nameNode2 = nameNode2.substring(1, nameNode2.length());
}

这可能是一个极端的例子,但我想你明白了。

我没有在代码中看到这个,我想知道这是否是一种有用的方法?

谢谢

背景:我正在努力从大学过渡到入门级开发人员,目前我专注于简洁的编码。

除了您示例中的变量名有点过于冗长之外,是的。

但有一点很重要,就是要记住使局部变量的范围尽可能小。因此,如果局部变量仅在更下方的 if 块中使用,则不要在方法的开头声明局部变量。

编辑:还有一件事我刚刚注意到:您的两个示例 NOT 等价。在第一种情况下,表达式会在每次迭代时重新计算,而在第二种情况下则不会。在这种情况下,您需要一个由 解释的辅助方法,而不是变量。

是的,根据 program.Because 中的工作或功能命名变量是一种很好的做法,以防将来其他人使用您的代码,那么他会更容易理解,否则会让他头疼同样的事情发生在处理分布式程序时,你的同事必须理解变量的工作原理。

让代码具有可读性总是更好,只是不要在维护噩梦的地方做太多,尽管大多数干净的代码更容易维护。

我将在这里介绍两个新方法而不是变量,您的代码示例将是:

while(letterFromBothNodesAreEqual() && nameHasMoreThanOneLetter())
{
    nameNode1 = nameNode1.substring(1, nameNode1.length());
    nameNode2 = nameNode2.substring(1, nameNode2.length());
}

使用名称将布尔条件提取到自己的函数中是一种常见的可读性重构。如果一个人在阅读你的代码时遇到一些 if 有一堆条件,他们会想知道它的意义是什么,为什么需要分支或者它代表什么。这些字段本身可能不会告诉他们答案,但如果条件有名称(函数名称),他们可能知道它代表什么。

这个问题相当主观,但以下内容适用于所有主题。 (我想从这个答案中找点乐子)

private boolean isMoreReadable = true;
private boolean isEasyToMaintain = true;
private boolean isProperlyCommented = true;
private boolean isBugFree = true;

// This method checks if my co-workers are happy with my code
private boolean myCoWorkersHappyWithMyCode() {
    return isMoreReadable && isEasyToMaintain && isProperlyCommented && isBugFree;
}

if (myCoWorkersHappyWithMyCode()) {
    System.out.println("YES, you wrote good code so I don't see why not");
} else {
    System.out.println("NO, keep learning to better yourself");
}