【问题标题】:Open source Java projects that use `final` modifiers everywhere到处使用 `final` 修饰符的开源 Java 项目
【发布时间】:2012-03-13 08:59:29
【问题描述】:

使用或不使用Java final 关键字的问题在SO 上已经讨论过很多次了。我正在尝试收集一些正在使用它的知名开源 Java 项目。到目前为止我还没有找到。你能告诉我一些吗?

关于使用或不使用final的问题:

Why would one mark local variables and method parameters as "final" in Java?

Using "final" modifier whenever applicable in java

Why are local variables not declared final in most open source java projects?

【问题讨论】:

  • 要澄清我所说的“无处不在”的意思,请参见第一个问题链接。
  • 在这种情况下,包括 Google Web Search、Koders、Krugle 和 JExamples 在内的搜索引擎似乎是“悲观的”(即针对导致这种情况的不精确结果的其他情况进行了优化)。
  • 这个问题不适合我们的问答形式。我们希望答案通常涉及事实、参考资料或特定专业知识;这个问题可能会征求意见、辩论、争论、投票或扩展讨论。
  • 对不起,如果我误解了政策,但我想我没有征求意见。列举项目名称是客观的事情。
  • 这个问题将帮助我在新建项目中做出决定。我认为收集行业示例不仅可以帮助我,也可以帮助其他人。

标签: java performance coding-style final


【解决方案1】:

以下是一些使用最终参数和局部变量的项目。他们不是因为突出或活动而被选中的。我不确定我会怎么做。

我从谷歌收集它们:allintext: "final" import site:sourceforge.net

  • wnpojo.sf.net 将 WordNet 实体包装在 Java 类中
  • spnego.sf.net 在 Java 中集成 Windows 身份验证
  • waterken.sf.net 通过 HTTP 提供异步调用
  • jeuclid.sf.net 呈现 MathML
  • statcvs.sf.net 将 CVS 项目描述为表格和图表

这里有一些非常突出的项目,它们(至少在我检查的文件中没有)在其 Java 代码中使用最终参数和局部变量。

  • GNU:GNU 类路径
  • Samba:JCIFS
  • MySQL:连接器/J
  • ANTLR
  • 适用于 Eclipse 的 Amazon Web Services (AWS) 工具包
  • Apache Tomcat
  • 充气城堡
  • Eclipse:Java 开发者工具包 (JDT),核心 UI
  • Google 网络工具包 (GWT):移动网络工具包
  • Unicode for Java (ICU4J) 的国际组件
  • JUnit
  • OpenJDK
  • Spring:Spring 框架

【讨论】:

  • 我看到你终于完成了谷歌查询:-)
【解决方案2】:

我知道opengamma 有时会使用最终参数/变量,尽管这似乎不是一个严格的规则。我会说他们可能使用 final 不到 5% 的时间。例如,请参阅 sample, lines 192-193, 215

【讨论】:

  • 旧的 OpenGamma 编码指南要求在所有局部变量和参数上使用 final,但并不总是遵循。 Java 8 的新 OpenGamma 编码指南建议不要使用 final(由于 Java8 中的有效最终概念)。见地层 - github.com/OpenGamma/Strata
【解决方案3】:

检查 Guava 库 - sample

【讨论】:

  • 好吧,我检查了代码,但在我看来,他们并没有真正严格地使用它。 code.google.com/p/guava-libraries/source/browse/guava/src/com/…
  • 在您的链接中我没有看到任何可以标记为最终的状态,如果您指的是方法参数,那么我想没有必要:)
  • 例如,如果可能,将其放入每个方法签名中。您发送的示例链接显示了一些以这种方式使用它的方法,但并没有让我相信 Guava 是一个很好的例子。
  • 需要在每个方法变量上加上 final 吗?
  • @jabal 见this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 2016-05-12
  • 2015-04-29
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多