1. ホーム
  2. java

[解決済み] クラスフィールドの初期化はコンストラクタで行うか、宣言時に行うか?

2022-03-22 01:51:18

質問

最近、C#とJavaでプログラミングをしていますが、クラスのフィールドを初期化するのに最適な場所はどこなのか気になります。

宣言時に行うべきでしょうか。

public class Dice
{
    private int topFace = 1;
    private Random myRand = new Random();

    public void Roll()
    {
       // ......
    }
}

またはコンストラクタの中で?

public class Dice
{
    private int topFace;
    private Random myRand;

    public Dice()
    {
        topFace = 1;
        myRand = new Random();
    }

    public void Roll()
    {
        // .....
    }
}

ベテランの皆さんが考えるベストプラクティスを知りたいんです。私は一貫して、ひとつのアプローチにこだわりたいのです。

どのように解決するのですか?

私のルール

  1. 宣言でデフォルト値で初期化しない( null , false , 0 , 0.0 ...).
  2. フィールドの値を変更するコンストラクタ・パラメータがない場合は、宣言で初期化することをお勧めします。
  3. コンストラクタのパラメータによってフィールドの値が変化する場合は、初期化をコンストラクタで行います。
  4. 一貫して実践すること(最も重要なルール)。