
クラスのメンバー変数の書き方。
クラスのメンバー変数を書くとき、以下の3つはどちらでも同じ動作をします。
◆privateの場合、privateを明示的に書く or 書かない
◆null初期化の場合、= nullを明示的に書く or 書かない
◆メンバー変数名に接頭辞(mTextなど)をつける or つけない
チームなどで書き方をどちらかに統一するとすれば、どちらに統一するのがいいと思いますか。
理由も含めて教えて下さい。
明示的に書くとJavaに不慣れな人にも分かりやすくて良いと思います。
書かないとタイプ数が減ってコーディングが若干楽です。
接頭辞はthisを書かなくていいのが楽なのですが、なんだか気持ち悪いです。
気持ち悪いのですが、デメリットは明確に説明できません。
No.3ベストアンサー
- 回答日時:
◆private を明示的に書かないと、private になりません
◆null初期化の場合、
null初期化を明示的に書くことで、設計上の特別な意図を他の人に知らせる必要がある場合は書きます
特に設計上の特別な意図が無い場合は、書きません
(コードはいつもクリーンな状態を保つ、不要なものは書かない)
◆接頭辞はつけない
接頭辞なんかよりも、変数名は、変数の意味がほぼ完全に把握できるものにします
(SunのNaming Conventionに従う)
public class CourseSession {
private int numberOfStudents;
public int getNumberOfStudents(){return numberOfStudents;}
}
★インスタンス変数は必ず private にする
オブジェクトに対して、メッセージを送信する以外の事を許可してはいけません。
this.doSomeThing();
についても、thisオブジェクト(自分自身)に対して、doSomeThingというメッセージを送信すると捉えます。
回答ありがとうございます。
>private を明示的に書かないと、private になりません
勘違いしていたようです。ご指摘ありがとうございます。
>特に設計上の特別な意図が無い場合は、書きません
>コードはいつもクリーンな状態を保つ、不要なものは書かない
確かに納得いきます。同意です。
>接頭辞なんかよりも、変数名は、変数の意味がほぼ完全に把握できるものにします
意味がほぼ把握できるのがいいというのには同意ですが、
接頭辞をつけない理由はやっぱりいまいち分かりません。
例えば、mNumberOfStudents でも意味は分かるしいいんじゃないかとも思います。
>インスタンス変数は必ず private にする
「必ず」と言うとちょっと言い過ぎかと思いますが、概ね同意です。
No.2
- 回答日時:
privateは#1さんの言う通り、書かないこととprivateは同義ではありません。
nullはどちらでもいいけど、個人的には書く方を選ぶ。
接頭辞は、thisを書かなくてよいのは、他の変数に同じ接頭辞を使わない、というルールに従ったときだけです。
逆に、他で使われていなければ、接頭辞を使わなくても、thisを使わずに直接メンバ変数にアクセスできます。
「接頭辞を使えばthisをかかなくてよい」というのは間違いです。
個人的には、接頭辞は基本使わない+thisを必ず指定する。
あるいは、 privateなメンバ変数(接頭辞あり)とアクセサ(接頭辞無し)の組み合わせを使う
例)
private int mx ;
public int x() { return this.mx ;}
回答ありがとうございます。
>「接頭辞を使えばthisをかかなくてよい」というのは間違いです。
そうなのですが、メンバー変数の接頭辞は"m"で、
他の変数に同じ接頭辞を使わないというようなルールがある場合の話です。
thisを使わずアクセスできるのも知ってますが、
引数やローカル変数と混同するのが恐くて、接頭辞が無いと全部thisをつけたくなってしまいます。
No.1
- 回答日時:
こんにちは。
◆privateの場合、privateを明示的に書く or 書かない
書きます。
理由
何も書かない場合はprivateではありません。
◆null初期化の場合、= nullを明示的に書く or 書かない
書きます。
理由
なんとなく気持ち悪い・・・。
◆メンバー変数名に接頭辞(mTextなど)をつける or つけない
付けない。
理由
別にいらんと思う・・・好み。
>何も書かない場合はprivateではありません。
デフォルトはprotectedですね。privateなのはC#でした。
>なんとなく気持ち悪い・・・。
気持ちは分かるんですが、
書かないとnullって決まってるし、書かなくてもいいかなあとも思います。
>別にいらんと思う・・・好み。
Javaで接頭辞をつけてるのはあんまり見ないですが、慣れると便利ですよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 口頭での"the following..."の可否等について 6 2022/08/19 01:01
- 大学受験 【至急お願いします。】 下の画像の指示があることを気づかず、今そのことに気づきました。志望理由書で、 2 2022/11/06 10:43
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- 分譲マンション 総会前にきて、管理会社のフロントマンに振り回され役員一同が困っています。 5 2023/05/15 03:12
- 経済学 マクロ経済学で政府支出が変化した場合に図示する方法について教えてください。 6 2022/11/23 18:48
- 分譲マンション 管理組合役員の辞任と受領書について 1 2022/11/25 12:39
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- 転職 ワクチン接種証明書警察について 転職活動中です 先日内定いただいた会社から内定通知書が郵送で届き、且 6 2022/07/27 08:22
- 日本語 「サ変動詞」(熟語動詞)(仮称)に関する疑問 8 2023/08/03 18:29
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
BOOL値を逆にしたい
-
jsp/Servletの動的に増えるフォ...
-
C#でラジオボタンとコンボボッ...
-
C# ListBoxのインデックスの値...
-
getStringの値がNULLの時の処理
-
onbeforeunloadでnullを返すとI...
-
Tomcatを再起動するとエラーが...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
数値⇒漢数字変換 java
-
Log4jで機能毎に別ファイルへ出...
-
JSPにて、変数を利用してフォン...
-
VB.net 引数で配列変数を渡す際...
-
論理演算子”||”またはの入力方法
-
「例外 *** は対応する try 文...
-
オブジェクトの中のプロパティ...
-
java キーボード入力された値の...
-
[Ljava.lang.Stringってなんですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
BOOL値を逆にしたい
-
getStringの値がNULLの時の処理
-
Java配列でNullPointerExceptio...
-
javaの掲示板について
-
eclipseでoracle接続時のエラー...
-
C#でラジオボタンとコンボボッ...
-
例外でBeanUtils.populateが、...
-
C# ListBoxのインデックスの値...
-
逆コンパイルの見方について(...
-
Tomcatを再起動するとエラーが...
-
空欄のテキストフィールドの判...
-
jsp/Servletの動的に増えるフォ...
-
プログラミングの質問です
-
入力された文字列の制限
-
androidアプリが強制終了してし...
-
if文を通らない
-
サーブレット、JSP、Mysqlについて
-
Stringを返す getText()メソッ...
おすすめ情報