考虑一个没有参数的函数(编辑:不一定),它执行一行代码,并且在程序中只调用一次(尽管将来需要它不是不可能的)。
它可以执行查询,检查一些值,做一些涉及regex的事情.任何模糊或“无趣”的东西。
这样做的原因是为了避免难以读懂的评价:
if (getCondition()) {
// do stuff
}其中getCondition()是单行函数。
我的问题很简单:这是一个好做法吗?对我来说很好,但我不知道长远的情况.
发布于 2011-09-12 14:36:41
取决于这一行。如果该行本身是可读的和简洁的,则可能不需要该函数。简单的例子:
void printNewLine() {
System.out.println();
}OTOH,如果函数给包含复杂、难读表达式的代码行起了一个好名字,这是完全合理的(对我来说)。人为的示例(为了便于阅读,将其分成多行):
boolean isTaxPayerEligibleForTaxRefund() {
return taxPayer.isFemale()
&& (taxPayer.getNumberOfChildren() > 2
|| (taxPayer.getAge() > 50 && taxPayer.getEmployer().isNonProfit()));
}发布于 2011-09-12 14:39:03
是的,这可以用来满足最佳做法。例如,让一个明确名称的函数做一些工作,即使它只有一行长,也比在一个更大的函数中有一行代码要好,并且需要一行注释来解释它所做的事情。此外,相邻的代码行应该在相同的抽象级别上执行任务。相反的例子应该是
startIgnition();
petrolFlag |= 0x006A;
engageChoke();在这种情况下,最好将中线移动到一个合理命名的函数中。
发布于 2011-09-12 15:15:34
我认为在许多情况下,这样的函数是很好的样式,但是在不需要在其他地方使用这个条件的情况下,您可以考虑使用局部布尔变量,例如:
bool someConditionSatisfied = [complex expression];这将为代码读取器提供提示,并避免引入新功能。
https://softwareengineering.stackexchange.com/questions/107669
复制相似问题