【发布时间】:2015-01-22 14:54:16
【问题描述】:
仅仅为了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());
}
这可能是一个极端的例子,但我想你明白了。
我没有在代码中看到这个,我想知道这是否是一种有用的方法?
谢谢
背景:我正在尝试从大学过渡到入门级开发人员,目前我专注于简洁编码。
【问题讨论】:
-
这个问题真的很主观。
-
是的,这是个好主意。你甚至可以把它放在一个方法中。不过,找到一个较短的名称可能是有意义的,也许是
nodesHaveSameInitial(node1, node2)? -
您可以添加评论。注释您的代码与拥有良好的变量名同样重要。
-
不!尽量避免使用 cmets 并专注于更好地命名类、方法、参数和变量。文档总是在撒谎,因为您的代码包含而不是您的文档
-
如果您不在循环内重新分配
letterFromBothNodesAreEqual_andNameHasMoreThanOneLetter,示例 2 可能会导致无限循环。这是一个示例,说明如何引入变量以提高可读性会产生意想不到的错误。 NESPowerGlove 的回答显示了一种更好的方法。
标签: java readability