オープンソースグループウェア「Aipo」提供終了のお知らせ

ドキュメント

Java コーディング規約

このドキュメントは Java ソースコードの書式に関するガイドラインです。

Aipoに含まれるソースコードは必ずこのコーディング規約に従わなければなりません。

なお、Aipoのソースコードに本ガイドラインに準拠する JDT の設定ファイルが含まれております。適切なフォーマッターおよび保管アクションが定義されておりますので、こちらの設定は変更せずに利用してください。JDT の設定ファイルは以下のファイルになります。

  • /.settings/org.eclipse.jdt.core.prefs
  • /.settings/org.eclipse.jdt.ui.prefs

フォーマット

インデント

インデント・サイズは 2 とし、タブは用いずスペースのみとします。

class Example {
  int[] myArray = { 1, 2, 3, 4, 5, 6 };

  int theInt = 1;

  String someString = "Hello";

  double aDouble = 3.0;

  void foo(int a, int b, int c, int d, int e, int f) {
    switch (a) {
      case 0:
        Other.doFoo();
        break;
      default:
        Other.doBaz();
    }
  }

  void bar(List v) {
    for (int i = 0; i < 10; i++) {
      v.add(new Integer(i));
    }
  }
}

中括弧の位置

開始の中括弧は、すべて同じ行に記述します。

また、if 文や for 文において、中括弧の省略は行わないものとします。

class Example {
  SomeClass fField = new SomeClass() {
  };

  int[] myArray = { 1, 2, 3, 4, 5, 6 };

  int[] emptyArray = new int[] {};

  Example() {
  }

  void bar(int p) {
    for (int i = 0; i < 10; i++) {
    }
    switch (p) {
      case 0:
        fField.set(0);
        break;
      case 1: {
        break;
      }
      default:
        fField.reset();
    }
  }
}

行の折り返し

行の最大幅は 80 文字とし、折り返された行のインデント・サイズは 2 とします。 折り返しのルールは以下に従います。

※ サンプルコードについては行の最大幅を 40 文字としてプレビューしています。

折り返さない
  • アノテーション
@MyAnnotation(value1 = "this is an example", value2 = "of an annotation", value3 = "with several arguments", value4 = "which may need to be wrapped")
class Example {
}
必要に応じて折り返す
  • クラス宣言
  • コンストラクター宣言
  • メソッド宣言
  • 列挙型宣言
  • ステートメント
class Example {
  Example(int arg1, int arg2, int arg3,
      int arg4, int arg5, int arg6) {
    this();
  }

  Example() {
  }

  void foo(int arg1, int arg2,
      int arg3, int arg4, int arg5,
      int arg6) {
  }
}
すべての要素を折り返し、各要素で改行する
  • 関数呼び出し
class Example {
  int[] fArray = {
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12 };

  void foo() {
    Other.bar(100, nested(
      200,
      300,
      400,
      500,
      600,
      700,
      800,
      900));
  }
}

慣例

オブジェクトの参照にはインターフェースを利用する

実装クラスに適切なインターフェースが存在している場合は、インターフェースを用いて宣言してください。

インターフェースを利用することにより、コードの柔軟性が向上します。

悪い例
public class Sample {
  private ArrayList<String> list = new ArrayList<String>();

  public void setList(ArrayList<String> list) {
    this.list = list;
  }

  public ArrayList<String> getList(){
    reuturn list;
  }
}
良い例
public class Sample {
  private List<String> list = new ArrayList<String>();

  public void setList(List<String> list) {
    this.list = list;
  }

  public List<String> getList(){
    reuturn list;
  }
}

総称型を省略しない

総称型を省略してしまうと、型の整合性を確保できなくなってしまうため、 キャスト関連の不具合が発生する可能性が高まります。

型が推測できるものについては、総称型を省略してはいけません。

悪い例
User user1 = new User()
user1.setName("name1");
User user2 = new User()
user2.setName("name2");

List list = new ArrayList();
list.add(user1);
list.add(user2);

for(Object item : list) {
  System.out.println(((User)item).getName());
}
良い例
User user1 = new User()
user1.setName("name1");
User user2 = new User()
user2.setName("name2");

List<User> list = new ArrayList<User>();
list.add(user1);
list.add(user2);

for(User item : list) {
  System.out.println(item.getName());
}

推奨されない API を使用しない

「推奨されない」と指定されたクラス、メソッド等は使用しないでください。これらの機能が必要な際は、 Javadoc 内に示されている代替案等を参照してください。

悪い例
public Integer getYear() {
  Date sampleDate = new Date();
  return sampleDate.getYear();
}
良い例
public Integer getYear() {
  Calendar sampleCalendar = Calendar.getInstance();
  return sampleCalendar.get(Calendar.YEAR);
}

拡張 for 文を利用する

配列内のすべての要素の操作を行う場合、拡張 for 文を利用するようにしてください。
ソースコードの可読性が向上します。

悪い例
int size = list.size();
for(int i = 0; i < size;i++) {
  System.out.println(list.get(i).getName());
}
良い例
for(User item : list) {
  System.out.println(item.getName());
}

JavaDocを記載する

新規に関数を作成する際にはJavaDocを記載するようにしてください。

Eclipseの補間で表示される項目を埋める形で記載を行ってください。

Eclipse上で/** まで入力してからEnterを押すと補間がされます。

/**
   * Description
   * @param userId
   * @return
   * @throws PortalException
   * @throws SystemException
   */