[解決済み】変数の初期化はコンストラクタ内とコンストラクタ外、どちらで行うべきか【重複
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では、コンストラクタを見る必要があります。
- コンストラクターが複数ある場合、初期化を繰り返す必要がない(忘れることもない)。
もちろん、初期化値がコンストラクタによって異なる場合(あるいはコンストラクタで計算する場合)は、コンストラクタで行う必要があります。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] Java - JTextFieldが空かどうかを確認する
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] Maven: assembly-pluginが全く実行されない
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み】インスタンス変数のインスタンス化は宣言時に行うべきか、コンストラクタで行うべきか?