海外で人気の Java 言語のコーディング規約(慣習)は?

海外で人気の Java 言語のコーディング規約(慣習)は?

プログラムの書き方は人それぞれ少しづつ異なっていますが、統一されていれば読みやすくてメンテナンスしやすいプログラムになります。ただコーディング規約というものは会社毎に異なっていたりして非常に統一性にかけているのも事実です。

そこで世界の開発者達がどのようなプログラムの書き方をしているのか、GitHub に登録されているJava ソースコードの統計情報から得られた結果を見ていきましょう。

Popular Coding Convention on Github


Java 言語で人気のコーディングスタイルは?

インデントはスペースかタブか?

66.466% のソースコードがスペースでインデントされています。

Space

public String getName() {
  return this.name;
}

Tab

public String getName() {
    // use tab for indentation
    return this.name;
}

if 文やループ等のブロックの書き方は?

58.003% が中括弧に1つのスペースを入れています (Curlybrace with one space)。

Curlybrace with one space

if (height < MIN_HEIGHT) {
  //..
}

while (isTrue) {
  //..
}

switch (foo) {
  //..
}

Curlybrace at new line

if (height < MIN_HEIGHT)
{
  //..
}

while (isTrue)
{
  //..
}

switch (foo)
{
  //..
}

Curlybrace with no space

if (height < MIN_HEIGHT){
  //..
}

while (isTrue){
  //..
}

switch (foo){
  //..
}

定数名は全部大文字で書く?

52.828% が大文字で定数を書いています。ほぼ半々ですね。

Constant name is all caps with underscore(_)

final static String FOO_BAR = "baz";

static final String FOO_BAR = "baz";

Constant name is not all caps

final static String foobar = "baz";

static final String foobar = "baz";

if 文や while ループ等の条件文の書き方は?

89.229% が if や while、switch の直後に1個のスペースを入れています。

Condition with one space

if (true) {
  //...
}

while (true) {
  //...
}

switch (v) {
  //...
}

Condition with no space

if(true) {
  //...
}

while(true) {
  //...
}

switch(v) {
  //...
}

パラメータ(引数)の定義にスペースを使う?

97.973% がパラメータ(引数)にはスペースを入れていません。

No space

public void setName(String name) {
  // ...
}

if(isTrue) {}

while(isTrue) {}

One space

public void setName( String name ) {
  // ...
}

if( isTrue ) {}

while( isTrue ) {}

1行の長さは80文字を超える?

91.374% が1行に80文字以内でコードを書いています。

Line length is within 80 characters.

/* width is within 80 characters */

Line length is within 120 characters

/* width is within 120 characters */

Line length is within 150 characters

/* width is within 150 characters */

static 変数名に特別な接頭詞(プレフィックス)を付けている?

99.633% が static 変数名に特別な接頭詞(プレフィックス)は付けていません。

No special prefix

static String name

Special prefix

static String _name;

final と static の順番は?

94.511% が static final の順番で書いています。

access modifier - static - final|volatile

public static final String t1 = "";

public static transient final String t2 = "";

transient public static final String t3 = "";

access modifier - final|volatile - static

public final static String t1 = "";

public final static transient String t2 = "";

transient public final static String t3 = "";

static - access modifier - final|volatile

static public final String t1 = "";

static public transient final String t2 = "";

static transient public final String t3 = "";

final|volatile - access modifier - static

final public static String t1 = "";

final public static transient String t2 = "";

final transient public static String t3 = "";

まとめ

GitHub には Google や Microsoft 等のエンジニアのソースコードや、プロイグラミング上級者のソースコードが多量に登録されています。彼らの書き方を真似ると良いでしょう。