仅为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());
}
这可能是一个极端的例子,但我认为你明白了。
我在代码中没有看到这个,我想知道这是否有用?
谢谢
背景:我正在尝试从大学过渡到入门级开发人员,目前我专注于清洁编码。
答案 0 :(得分:7)
让代码可读更好总是更好,只要不要做太多维护噩梦,尽管大多数干净的代码都更容易维护。
我会在这里介绍两种新方法而不是变量,代码示例如下:
while(letterFromBothNodesAreEqual() && nameHasMoreThanOneLetter())
{
nameNode1 = nameNode1.substring(1, nameNode1.length());
nameNode2 = nameNode2.substring(1, nameNode2.length());
}
这是一个常见的可读性重构,可以通过名称将布尔条件提取到自己的函数中。如果一个人正在阅读你的代码并遇到一些条件,那么他们会想知道它的意义是什么,为什么分支需要或代表什么。单独的字段可能无法告诉他们答案,但如果条件具有名称(函数的名称),他们可能知道它代表什么。
答案 1 :(得分:3)
除了示例中的变量名称有点过于冗长之外,是的。
重要的一点是要记住保持局部变量的范围尽可能小。因此,如果它们仅在if
块中进一步使用,则不要在方法的开头声明局部变量。
修改:还有一件事我刚注意到:你的两个例子是 NOT 等效。在第一个场景中,表达式在每次迭代时重新计算,而在第二个场景中则不重新计算。在这种情况下,您需要一个辅助方法,如@NESPowerGlove所述,而不是变量。
答案 2 :(得分:1)
是的,在程序中根据程序中的工作或功能来命名变量是一个很好的做法。因为将来如果其他人在你的代码上工作,那么他会更容易理解,否则会给他一个在分布式程序上工作时也会出现同样的问题,你的同事必须理解变量的名称。
答案 3 :(得分:1)
这个问题非常主观,但以下内容适用于所有科目。 (我希望这个答案有点乐趣)
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");
}