{scrollbar}

目次

コードベースは意識してキレイに保っていく必要があります。割れ窓理論Wikipedia, はてなキーワード)を意識しましょう。駅前に自転車を駐輪していた場合、前カゴに1つでもゴミが入っていると、たちまち道行く人のゴミ捨て場と化すという、アレです。

Javaコーディングスタイル

ある程度までは自動コードフォーマッタに任せるようになっていますが、一応。以下の2規約をベースに、特に重要な項目や相違点をまとめていく。

コードフォーマッタ

基本的にコードフォーマッタ及びEclipse・Checkstyle・FindBugsの警告に従う。

インデントと体裁

本項は、フォーマッタで自動整形されるので、あまり気にしなくてよい。

Tab幅は4で、インデントには全てTabを使用する。

Tabを使用せずにSpaceを使う、というのが一般的な方針かもしれません。しかし、Eclipseでの開発が前提であるため、環境に依存したタブ幅による表示崩れが想定されません。従って、Jiemamy ProjectではインデントにTabを使用することとします。

1行最大120文字とする。

80文字は時代遅れだと思っている。いまどき、プリントアウトは無いでしょうからw ただ、画面解像度の問題があるので、100程度にすることも検討の余地あり。意見求む。

Java言語

省略できるコードは、特別な意図がない限り書かない。例えば…

final修飾子は、特別な意図がない限り使わない。つまり、単純に二度代入されないローカル変数等にはつけない。使っても良いのは、例えば…

比較演算子(==, <, >, <=, >=)は、基本的に「左辺を actual、右辺を expected」とする。

否定演算子("!")は使わな い。("!=" はOK)

テストクラス

テストのアサーションは全て assertThat を使用する。

テストメソッドの命名規則は基本的に以下の例のように。

@Test
public void test00_日本語で「どうなるべきか」を説明() throws Exception {
  // ...
}

@Test
public void test01_日本語で「どうなるべきか」を説明() throws Exception {
  // ...
}

01, 02とか、あんま良いアイデアだとは感じていないけど、コードフォーマットでメソッド順が入れ替わるので…。ディレクトリやパッケージ毎にフォーマットの設定を変えられればいいのだが…。

Mockオブジェクトを利用する際は、Mockitoを利用すること。

  1. hikozaemonchan: Mockito
  2. Mockitoノススメ
  3. Mockitoノススメ テストスタイルの変化

XMLコーディングスタイル

インデントと体裁

Tab幅は2で、インデントには全て半角スペースを使用する。

1行最大120文字とする。

80文字は時代遅れだと思っている。いまどき、プリントアウトは無いでしょうからw ただ、画面解像度の問題があるので、100程度にすることも検討の余地あり。意見求む。

命名規則

識別子名

パッケージ名

ドキュメンテーションコメント(Javadoc)

accessorのJavadocについて

/** [ほげふが] */
private Hoge hogefuga;

/**
 * [ほげふが]を取得する。
 *
 * @return [ほげふが]
 */
public Hoge getHogefuga() {
  return hogefuga;
}

/**
 * [ほげふが]を設定する。
 *
 * @param hogefuga [ほげふが]
 */
public void setHogefuga(Hoge hogefuga) {
  this.hogefuga = hogefuga;
}

例は上の通り [ほげふが] が全部一致してるのがポイント。

メトリクス

外部化メッセージ

class Messages extends NLS {
  public static String FooBar_name;
  public static String FizzBuzz_confirmMessage;
  private static final String BUNDLE_NAME = Messages.class.getName().toLowerCase(Locale.US);
  static {
    reloadMessages();
  }
  private static void reloadMessages() {
    initializeMessages(BUNDLE_NAME, Messages.class);
  }
}

その他

Eclipse設定ファイルについて

コンパイラレベルの設定の例

これがPreferece(グローバルな設定で、開発者毎に異なる可能性があり、プロジェクト内に設定ファイルがないのでコミットもできない)。
Window > Preferences によりこのページを開く事ができる。

これがプロジェクトのProjectの設定(プロジェクト単位の設定の設定。dotファイルをコミットする事により、設定を共有できる)。
プロジェクトを右クリックして、コンテキストメニューの最下段 Properties により、このページを開くことができる。

上の網掛けで示した部分にチェックが入っていないと、Preferenceの値(ワークスペースデフォルト)が使用されてしまう。

使用するJREの設定の例

これがPreferece(ワークスペースデフォルト)

これがプロジェクトのProjectの設定(プロジェクト固有で、dotファイルとしてコミット可能)

網掛けした項目のどちらかを選択しない限り、ワークスペースデフォルトが使用される。
ちなみに、Alternative JREの方は「Java 1.5.0_14」と、ピンポイントで指定する設定。Execution Environmentは「まぁ、Java5で」という感じで、ザックリと指定する設定です。


{scrollbar}