1. ホーム

[解決済み】変数の初期化はコンストラクタ内とコンストラクタ外、どちらで行うべきか【重複

2022-04-06 04:35:32

質問

C++の知識に基づいてJavaを使う場合、私は以下の方法で変数を初期化するのが好きだ。

public class ME {
    private int i;

    public ME() {
         this.i = 100;
    }
}

しばらくして、その癖を変えて

public class ME {
    private int i = 100;

    public ME() {
    }
}

私は他の人のソースコードに出会いましたが、ある人は1stコンベンションを使い、他の人は2ndコンベンションを使用しています。

皆さんはどちらの方式を推奨していますか?また、その理由は?

解決方法は?

私は、2番目のスタイル(宣言+初期化を一度に行う)の方が優れていると思います。理由は

  • 変数がどのように初期化されるかが一目瞭然になる。通常、プログラムを読んでいて変数に出会うと、まずその宣言にたどり着きます(IDEでは自動で行われることが多い)。スタイル2なら、すぐに初期値がわかる。スタイル1では、コンストラクタを見る必要があります。
  • コンストラクターが複数ある場合、初期化を繰り返す必要がない(忘れることもない)。

もちろん、初期化値がコンストラクタによって異なる場合(あるいはコンストラクタで計算する場合)は、コンストラクタで行う必要があります。