[解決済み] クラスフィールドの初期化はコンストラクタで行うか、宣言時に行うか?
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()
{
// .....
}
}
ベテランの皆さんが考えるベストプラクティスを知りたいんです。私は一貫して、ひとつのアプローチにこだわりたいのです。
どのように解決するのですか?
私のルール
-
宣言でデフォルト値で初期化しない(
null
,false
,0
,0.0
...). - フィールドの値を変更するコンストラクタ・パラメータがない場合は、宣言で初期化することをお勧めします。
- コンストラクタのパラメータによってフィールドの値が変化する場合は、初期化をコンストラクタで行います。
- 一貫して実践すること(最も重要なルール)。
関連
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] 抽象クラスはコンストラクタを持つことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
java の例外が発生しました java
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
JQuery DataTable 详解
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
テストが見つかりませんでした
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)