首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只调用一次的一行函数。

只调用一次的一行函数。
EN

Software Engineering用户
提问于 2011-09-12 14:34:08
回答 11查看 28.9K关注 0票数 129

考虑一个没有参数的函数(编辑:不一定),它执行一行代码,并且在程序中只调用一次(尽管将来需要它不是不可能的)。

它可以执行查询,检查一些值,做一些涉及regex的事情.任何模糊或“无趣”的东西。

这样做的原因是为了避免难以读懂的评价:

代码语言:javascript
复制
if (getCondition()) {
    // do stuff
}

其中getCondition()是单行函数。

我的问题很简单:这是一个好做法吗?对我来说很好,但我不知道长远的情况.

EN

回答 11

Software Engineering用户

回答已采纳

发布于 2011-09-12 14:36:41

取决于这一行。如果该行本身是可读的和简洁的,则可能不需要该函数。简单的例子:

代码语言:javascript
复制
void printNewLine() {
  System.out.println();
}

OTOH,如果函数给包含复杂、难读表达式的代码行起了一个好名字,这是完全合理的(对我来说)。人为的示例(为了便于阅读,将其分成多行):

代码语言:javascript
复制
boolean isTaxPayerEligibleForTaxRefund() {
  return taxPayer.isFemale() 
        && (taxPayer.getNumberOfChildren() > 2 
        || (taxPayer.getAge() > 50 && taxPayer.getEmployer().isNonProfit()));
}
票数 248
EN

Software Engineering用户

发布于 2011-09-12 14:39:03

是的,这可以用来满足最佳做法。例如,让一个明确名称的函数做一些工作,即使它只有一行长,也比在一个更大的函数中有一行代码要好,并且需要一行注释来解释它所做的事情。此外,相邻的代码行应该在相同的抽象级别上执行任务。相反的例子应该是

代码语言:javascript
复制
startIgnition();
petrolFlag |= 0x006A;
engageChoke();

在这种情况下,最好将中线移动到一个合理命名的函数中。

票数 67
EN

Software Engineering用户

发布于 2011-09-12 15:15:34

我认为在许多情况下,这样的函数是很好的样式,但是在不需要在其他地方使用这个条件的情况下,您可以考虑使用局部布尔变量,例如:

代码语言:javascript
复制
bool someConditionSatisfied = [complex expression];

这将为代码读取器提供提示,并避免引入新功能。

票数 37
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/107669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档