海外で人気の Java 言語のコーディング規約(慣習)は?
プログラムの書き方は人それぞれ少しづつ異なっていますが、統一されていれば読みやすくてメンテナンスしやすいプログラムになります。ただコーディング規約というものは会社毎に異なっていたりして非常に統一性にかけているのも事実です。そこで世界の開発者達がどのようなプログラムの書き方をしているのか、GitHub に登録されているJava ソースコードの統計情報から得られた結果を見ていきましょう。
Popular Coding Convention on Github
Java 言語で人気のコーディングスタイルは?
インデントはスペースかタブか?
Space
public String getName() {
return this.name;
}
Tab
public String getName() {
// use tab for indentation
return this.name;
}
if 文やループ等のブロックの書き方は?
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 = "";