
No.1ベストアンサー
- 回答日時:
スマート、という表現が主観的なので正解はなさそうに思います。
強いて言えば、一つのプログラム内で意味もなく複数のやり方を混ぜて使うのはスマートじゃないだろうな、というくらいです。参考までに、私は基本的にコンストラクタ内で初期化しています。staticな定数なら宣言時に初期化。インスタンス初期化子は使ったことがありませんし、人のプログラムでも見たことがありません。
>>スマート、という表現が主観的なので正解はなさそうに思います。
そうですね。みんなの意見を聞いてみたいです。
>>一つのプログラム内で意味もなく
>>複数のやり方を混ぜて使うのは
>>スマートじゃないだろうな
確かに。
>>私は基本的にコンストラクタ内で初期化しています
私はいつも宣言時に初期化していました。
宣言時に初期化かつコンストラクタでも同じ値で初期化するのは、意味のないことでしょうか。

No.3
- 回答日時:
私は、趣味プログラマなので、「こうやってる」というだけですが、
3番は、初期化子の前に、宣言は必須です。よって3番は冗長なだけであり、2番の方がわかりやすくバグの危険が減ると思います。
あと、初期化データのためによほど複雑な計算があるなら、初期化子内でやることもあるのかもしれないけど、初期値にそんな複雑なデータを持たせる必要はいままでなかったので、初期化子自体使ったことがありません。
1番は、コンストラクタでの初期化時に、引数などから初期化用データをとりたいときに使います。
定数代入なら、2番にすることが多いです。eclipseを使ってると、変数の宣言部分参照で、どんなデータが入ってるかもすぐわかるので。
>>3番は、初期化子の前に、宣言は必須です。
例ですので、当然先頭に宣言があります。すみませんでした。
>>2番の方がわかりやすくバグの危険が減ると思います。
この点は私も賛同です。
>>初期化データのためによほど複雑な計算があるなら、
>>初期化子内でやることもあるのかもしれない
そうですね。
乱数値を代入したり、日付を取得するなどの作業は初期化子内で記述した方がスッキリするかも。
つまり、全コンストラクタ共通の処理を初期化子として独立させるには使えるかも知れませんね。
>>初期化子自体使ったことがありません。
これが多数はなのでしょうか。
>>eclipseを使ってると、変数の宣言部分参照で、
>>どんなデータが入ってるかもすぐわかるので。
この機能は知りませんでした。
No.2
- 回答日時:
いろいろな方の意見を聞けるといいですね。
追加の質問の件のみ回答させて頂きます。
> 宣言時に初期化かつコンストラクタでも同じ値で初期化するのは、意味のないことでしょうか。
逆にお聞きするようですが、そうすることに意味またはメリットはありますか? 私には保守性の面でのデメリットしか見えてきません。
例えばあるとき、別の値で初期化したくなったらどうするのでしょう。宣言部とコンストラクタ内と、両方修正するのでしょうか。単純に考えて面倒です。動作上はコンストラクタの方のみ値を変えれば想定通りになるでしょうが、宣言部と違う値で初期化されているのを他人が見たら、理解に苦しむでしょう。1年も放置すれば、自分のプログラムも他人が書いたものみたいに感じるものなので、未来の自分を困惑させることになるかもしれません。
そういうデメリットを上回るぐらいのメリットがないなら、いずれか一つの方法で初期化した方がよいと思います。
>>私には保守性の面でのデメリットしか見えてきません。
そうですね。浅はかでした。
他の方がどの方法で初期化してるのか参考にしてみたいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
クラスのインスタンス名をクラ...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
エクセル(複数インスタンス)...
-
変数の参照でエラーが出てしま...
-
objective-cで分かりにくい所教...
-
インスタンスのハンドル
-
C#の構造体の開放のしかた
-
[VB.NET] インスタンス生成とイ...
-
JSPでの表示
-
オブジェクト参照がオブジェク...
-
SQLを連続発行する時の正しい(?...
-
Eclipse3でVisualEditorが起動...
-
VB.NET Newしたものを変数に代...
-
抽象クラスのインスタンス生成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
private static という変数の修飾
-
C#において、同じインスタンス...
-
複数の変数を宣言する時、同時...
-
オブジェクト参照がオブジェク...
-
VB.NET getとsetの概念がわかり...
-
フォームの存在をチェックする方法
-
変数の参照でエラーが出てしま...
-
C# インスタンスの破棄
-
生成したインスタンスを削除す...
-
文字列を日付に変換でParseExce...
-
次の日本語の意味を教えて下さい
-
C#「オブジェクト参照が必要で...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
newしないインスタンス?実体化...
-
C#の構造体の開放のしかた
-
javaのクラスの作り方、エラー...
おすすめ情報