Tag: 编码风格

在内存中加载文本文件的最快/最干净的方法

我之前已经问过类似的问题,但我找不到能回答我确切问题的问题。 我需要一种方法来将文件读取为具有最少代码的String ,并尽可能简单和最佳。 我不是在寻找: final BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; while ((line = br.readLine()) != null) { // logic } 而且我知道我可以写自己的助手类来做到这一点。 我正在寻找更多的东西: final String wholeFileAsStr = Something.load(file); 其中Something.load()是超级优化的,并在读取文件时正确缓冲文件,例如考虑文件大小。 任何人都可以推荐一些我不知道的Guava或Apache的东西吗? 提前致谢。

Java:在equals检查中避免NullPointerException的干净方法

我有一个地址对象,我想为其创建一个equals方法。 我可以通过做类似下面的事情(缩短一点)使这变得非常简单: public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Address other = (Address) obj; return this.getStreet().equals(other.getStreet()) && this.getStreetNumber().equals(other.getStreetNumber()) && this.getStreetLetter().equals(other.getStreetLetter()) && this.getTown().equals(other.getTown()); } 问题是,其中一些可能是空的。 换句话说,如果此地址中没有街道字母,我将获得NullPointerException 。 如何在考虑空值的情况下以干净的方式编写此文件?

不必要的’其他’声明

如您所知,在Eclipse中,您可以启用“ 不必要的’else’语句 ”检查将在if-then-else上触发过早返回。 而且,根据我的经验,使用此类声明时有两种最可能的情况: 1)预检: if (!validate(arg1)) { return false; } doLotOfStuff(); 2)检查后: doLotOfStuff(); if (condition) { return foo; } else { return bar; } 在第二种情况下,如果触发器打开,Eclipse将建议您将代码更改为: doLotOfStuff(); if (condition) { return foo; } return bar; 但是,我认为使用else语句返回更具可读性,因为它类似于业务逻辑的直接映射。 如果这个“不必要的’其他’声明”代码约定很普遍,或者使用else语句的代码更优选,那么我很好奇吗?

是否有任何工具可以重构java代码库的编码风格?

通常,在对现有项目进行一些工作时,我会选择代码库中已经建立的任何样式。 但我们的团队必须维护多个中小型项目,这些项目在编码风格上略有不同。 如果我们能够清理这些差异,那将更有效,更少混乱。 所以我正在寻找一种允许我重构现有风格的工具。 标准代码格式化工具已经提供了许多function,例如更改缩进样式。 我缺少的是一个允许我去除字段和参数名称前缀的工具。 在某些项目中,所有成员都以“m”为前缀,所有参数都以“p”为前缀,静态成员以“s”为前缀。 该工具应该能够处理如下情况: void setValue(String pValue) { mValue = pValue; } 哪个应该成为: void setValue(String value) { this.value = value; } 该工具应在以下情况下生成警告: void setValue(String pValue) { int value = 42 } 我知道每个主要IDE都提供重构:重命名function。 我正在寻找的是一个处理整个代码库的工具,而不需要单独遍历每个参数/字段。 编辑 很多答案提到了重新格式化源代码或根据一组样式规则检查代码库的工具。 我知道这些工具存在。 我特别想要的是一个高级工具,它允许我删除范围特定的变量名前缀。

在整个申请过程中,您在哪里使用Constants?

界面是一个可以接受的地方来存储我的 public static final Foo bar 你是否推断它们是从程序外读取的? 你为它组成一个超级class吗? 当情况出现时,你是如何做到的?

是否有任何广泛的,现代的Java编码约定?

Sun的“ Java编程语言代码约定 ”最后更新于1999年4月。十年后,语言和一般使用模式发生了很大变化。 是否有更新,广泛采用的标准? 大多数指南都忽略了指定文件编码和行结尾。 Sun建议使用混合标签和空格。 Eclipse IDE默认使用Eclipse的标准,它只是标签。 Maven风格指南仅限空格。 许多样式指南,如JBoss ,遵循Sun的指导原则,但更喜欢K&R支架而不是OTBS 。 每个Apache项目都有自己的样式指南,每个项目之间略有不同。

包私有类中的公共成员

我想知道公共成员是否在包私人课程中是否可行(不被视为不良做法)。 我倾向于将public关键字添加到我的默认可见性类的成员中,以指示这些成员是类API的一部分。 我这样做只是为了提高可读性,因为在这种情况下,公共成员与没有任何访问修饰符(即包可见性)的成员具有基本相同的可见性。 那是对的吗? 例: class ModuleImplementationClass { private int fieldA; private String fieldB; private void someClassInternalMethod() { // impl } public int doSth() { // method that will be called by other classes in the package } }

存在“java标准”?

我已经用Java编程了大约4年了,但我所学到的是自学成才 – 我从未参加过正式的语言课程。 最近在我的工作中,我听到有两个人在争论编程的“java标准”,“99%的专业Java开发人员使用”。 在java编写代码时,我从来没有听说过也没有故意使用过这个“标准”,所以我想到目前为止我已经很容易找到老板了。 这个所谓的标准是否像我在java开发社区中提出的同事一样受欢迎?

Java性能与代码风格:从同一行代码进行多个方法调用

我很好奇是否在同一行代码中打包多个和/或嵌套方法调用对性能更好,这就是为什么有些开发人员这样做,代价是使代码的可读性降低。 例如 //like Set jobParamKeySet = jobParams.keySet(); Iterator jobParamItrtr = jobParamKeySet.iterator(); 也可以写成 //dislike Iterator jobParamItrtr = jobParams.keySet().iterator(); 就个人而言,我讨厌后者,因为它在同一行中进行了多次评估,并且我很难阅读代码。 这就是为什么我试图通过各种方式避免每行代码进行多次评估。 我也不知道jobParams.keySet()返回一个Set ,这让我感到jobParams.keySet() 。 另一个例子是: //dislike Bar.processParameter(Foo.getParameter()); VS //like Parameter param = Foo.getParameter(); Bar.processParameter(param); 前者让我感到有毒和晕眩,因为我喜欢在每行代码中使用简单而干净的评估,当我看到其他人编写的代码时,我就讨厌它。 但是在同一行中打包多个方法调用有什么(性能)好处吗? 编辑:由于@stemm提醒,单行也更难调试

我在哪里可以找到官方Java编码/样式标准?

我使用Eclipse的CheckStyle插件,它做得非常好。 我想知道Sun / Oracle是否有正式的Code / Style标准(并且应该有!)…我发现的那些已经过时,它们甚至不包含任何Java 1.6特定的语法等… 这是我到目前为止发现的: http://developers.sun.com/sunstudio/products/archive/whitepapers/java-style.pdf (最后修改2000) http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html (最后修改1999年 – CheckStyle网站引用此内容) 我知道,在某种程度上,大多数Java语法没有太大变化,但你认为它不会超过10年! 任何想法在哪里可以找到更新版本或有没有我没有找到? 谢谢