- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
是否有很好的资源来描述 PMD 规则集背后的“原因”? PMD's site有“什么”——每条规则的作用——但它没有描述为什么 PMD 有这条规则,以及为什么忽略这条规则会给你在现实世界中带来麻烦。特别是,我很想知道为什么 PMD 有 AvoidInstantiatingObjectsInLoops 和 OnlyOneReturn 规则(如果您需要创建一个与集合中的每个对象对应的新对象,第一个似乎是必要的,第二个似乎在许多情况下是必要的根据某些标准返回一个值),但我真正想要的是一个链接,它描述了大多数 PMD 规则背后的“原因”,因为这种情况经常出现。
为了清楚起见,我知道我可以禁用这些以及如何做到这一点,我只是想知道为什么它们首先存在。抱歉,如果我错过了一些明显的东西,但在发布之前我做了谷歌搜索和 SO 搜索。我也明白这些问题通常是“品味”问题——我正在寻找的是规则的论据是什么以及有什么替代方案。举个具体的例子,你应该如何实现一个对象对应一个循环中的每个对象(这是Java中的常见操作)而不实例化循环中的每个对象?
最佳答案
在每种情况下,规则可以是特定情况的问题,也可以只是“品味”。
如果存在大量迭代并且实例化代价高昂,则应避免在循环中实例化对象。如果您可以将代码移出循环,您将避免许多对象实例化,从而提高性能。话虽如此,这并不总是可能的,在某些情况下,它对代码的整体性能并不重要。在这些情况下,以更清楚者为准。
对于 OnlyOneReturn,有多种方式来看待这一点(每种方式背后都有强烈的支持者),但它们基本上都归结为品味。
对于您的示例,OnlyOneReturn 支持者需要如下代码:
public int performAction(String input) {
int result;
if (input.equals("bob")) {
result = 1;
} else {
result = 2;
}
return result;
}
而不是:
public int performAction(String input) {
if (input.equals("bob")) {
return 1;
} else {
return 2;
}
}
如您所见,ReturnOnlyOnce 的额外清晰度值得商榷。
另请参阅与 instantiation within loops 相关的 SO 问题.
关于pmd - PMD规则背后的 "Why",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509856/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!