仅为了可读性而引入变量?

Skl*_*ogW 3 java 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());
}
Run Code Online (Sandbox Code Playgroud)

例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());
}
Run Code Online (Sandbox Code Playgroud)

这可能是一个极端的例子,但我认为你明白了.

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

谢谢

背景:我正在尝试从大学过渡到入门级开发人员,目前我专注于清洁编码.

NES*_*ove 7

尽管大多数干净的代码更容易维护,但是在使用代码可读的情况下总是更好,只是不要过多地执行维护噩梦.

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

while(letterFromBothNodesAreEqual() && nameHasMoreThanOneLetter())
{
    nameNode1 = nameNode1.substring(1, nameNode1.length());
    nameNode2 = nameNode2.substring(1, nameNode2.length());
}
Run Code Online (Sandbox Code Playgroud)

这是一个常见的可读性重构,可以通过名称将布尔条件提取到自己的函数中.如果一个人正在阅读你的代码并遇到一些条件,那么他们会想知道它的意义是什么,为什么分支需要或代表什么.单独的字段可能无法告诉他们答案,但如果条件具有名称(函数的名称),他们可能知道它代表什么.