[英]Is it only for readability that the variables in immutable object defined as final?
[英]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());
}
这可能是一个极端的例子,但我认为你明白了。
我没有在代码中看到这个,我想知道这是否是一个有用的方法?
谢谢
背景:我正在尝试从大学过渡到入门级开发人员,目前我专注于清洁编码。
尽管大多数干净的代码更容易维护,但是在使用代码可读的情况下总是更好,只是不要过多地执行维护噩梦。
我将在这里介绍两种新方法而不是变量,您的代码示例将是:
while(letterFromBothNodesAreEqual() && nameHasMoreThanOneLetter())
{
nameNode1 = nameNode1.substring(1, nameNode1.length());
nameNode2 = nameNode2.substring(1, nameNode2.length());
}
这是一个常见的可读性重构,可以通过名称将布尔条件提取到自己的函数中。 如果一个人正在阅读你的代码并遇到一些条件,那么他们会想知道它的意义是什么,为什么分支需要或代表什么。 单独的字段可能无法告诉他们答案,但如果条件具有名称(函数的名称),他们可能知道它代表什么。
除了你的例子中的变量名有点过于冗长之外,是的。
但重要的是要记住保持局部变量的范围尽可能小。 因此,如果它们仅在if
块中进一步使用, if
不要在方法的开头声明局部变量。
编辑 :还有一件我刚才注意到的事情:你的两个例子并不等同。 在第一个场景中,表达式在每次迭代时重新计算,而在第二个场景中则不重新计算。 在这种情况下,您需要一个辅助方法,如@NESPowerGlove所述,而不是变量。
是的,在程序中根据程序中的工作或功能命名变量是一个很好的做法。因为将来如果其他人在你的代码上工作,那么他会更容易理解,否则会让他头疼同样的事情发生在分布式程序上工作时,您的同事必须了解变量的名称。
这个问题非常主观,但以下内容适用于所有科目。 (我希望这个答案有点乐趣)
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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.