Java格式化风格

时间:2010-08-17 14:34:35

标签: java formatting

格式是否在Java中的某种约定下面?我个人发现它比第二个例子更难阅读。我一个人在这里吗?在选择Source时,有没有办法在NetBeans中进行这样的自定义格式化?>格式?

public boolean handleEvent(Event e) {
    if (e.target == quit) System.exit(0);
    else if (e.target == parent) {
        // Code here
        // Bug workaround
        }
        catch (IOException ex) { infoarea.setText("I/O Error"); }
        return true;
    }

(第二个例子)

public boolean handleEvent(Event e) 

   {
      if (e.target == quit) System.exit(0);
      else if (e.target == parent) 

          {
            // Code here
            // Bug workaround
          }
      catch (IOException ex) { infoarea.setText("I/O Error"); }
      return true;
   }

6 个答案:

答案 0 :(得分:7)

维基百科有一个whole article about indentation style。 Oracle已设置Java coding conventionsstyle guide PDF。确实这是一个品味问题,但是特定于Java的指导原则使得所有Java代码都可以被其他Java开发人员快速,易懂地理解和维护。我讨厌在Java代码中看到C#样式,但反过来说,我也讨厌在C#代码中看到Java风格。对Java代码使用Java样式,对C#代码使用C#样式。它让每个人都清楚一切。

你的例子没有编译,但假设确实没有try,这就是人们如何用干净的Java方式做到这一点:

public boolean handleEvent(Event e) {
    if (e.target == quit) {
        System.exit(0);
    } else if (e.target == parent) {
        // Code here
        // Bug workaround
    } catch (IOException ex) { 
        infoarea.setText("I/O Error");
    }
    return true;
}

您展示的第一种风格与banner style非常相似,第二种风格与GNU style非常相似(有点类似于Allman / C# style

答案 1 :(得分:3)

虽然给定的代码没有编译,但我假设您正在讨论在类/方法/命令的同一行使用开括号,而不是在使用之前使用新行?

如果是这样,那真的是一个非常主观的事情 - 我个人讨厌把我的牙套放在一个新线上;对我来说,这对你来说是同样的错误。唯一重要的是要确保如果你在团队中工作,你们都坚持相同的惯例 - 这件事没有真正的对错。

答案 2 :(得分:2)

我认为两个示例中的格式都难以阅读,并且与大多数传统样式相比。

答案 3 :(得分:2)

使用Java代码约定来配置IDE样式 http://www.oracle.com/technetwork/java/codeconvtoc-136057.html

答案 4 :(得分:1)

我假设您正在讨论是否将{置于新行,并忽略了catch没有try的事实

是的,前者在Java中绝对是惯例,而后者在C#中是惯例(尽管在两个示例中你的缩进看起来都有点偏差)。

我同时使用它们(在各自的语言中),一旦你习惯了它,我真的不认为可读性有很大差异。这是主观的,但你的问题的答案只是“是的。”

答案 5 :(得分:1)

由Sun开始的Java编码约定现在由Oracle继续说:

  

如果应该是always use braces而开放式大括号应该是in the same line as the declaration

同样,这些只是约定,而不是编译规则。如果你的团队选择不同,最重要的是每个人都遵循它(即使它是你不喜欢的风格)。但是如果使用Java的首选,那么新的人总是会更容易选择编码风格。

我使用的一个例外,if是if / try惯用法。

修改代码将是这样的:

public boolean handleEvent(Event e) {
    if (e.target == quit) { 
        System.exit(0); 
    } else if (e.target == parent) try { // if/try idiom
        // Code here
        // Bug workaround
    } catch (IOException ex) { 
        infoarea.setText("I/O Error"); 
    }
    return true;
}

关于netbeans配置,我认为选项在:

“工具/选项,点击编辑器图标,然后选择格式化标签,更改大括号展示位置。”

但是,我现在手头没有netbeans。