クラスのメンバー変数の書き方。
クラスのメンバー変数を書くとき、以下の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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java配列でNullPointerExceptio...
-
ORA-01858: 数値を指定する箇所...
-
BOOL値を逆にしたい
-
データコンボのNullについて
-
getStringの値がNULLの時の処理
-
C# ListBoxのインデックスの値...
-
JSPによる画面間のパラメータの...
-
配列にnullを代入すると、null...
-
Path型をString型へ変換する(Java)
-
JSPやサーブレットでSystem.out...
-
オブジェクトの中のプロパティ...
-
csvファイルを2次元配列に格納
-
ダブルクォーテーションのrepla...
-
System.err. printlnとSystem.o...
-
[JAVA]try 内の変数を外で!?
-
VBAで配列の計算
-
Visual Basic でのコードをASCI...
-
JAVA 文字色変更
-
C++からC#のdllを参照する際、...
-
ArrayListによる計算表作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
BOOL値を逆にしたい
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
getStringの値がNULLの時の処理
-
eclipseでoracle接続時のエラー...
-
例外でBeanUtils.populateが、...
-
C#でラジオボタンとコンボボッ...
-
逆コンパイルの見方について(...
-
gas カレンダー祭日設定でエラー
-
C# ListBoxのインデックスの値...
-
jsp/Servletの動的に増えるフォ...
-
入力された文字列の制限
-
Tomcatを再起動するとエラーが...
-
if文を通らない
-
日付をyyyyMMddで取得したい。
-
java DAO 日付指定フォーマット...
-
Javaでboolean型を使ってのうる...
-
JSPで複数のSQL実行につ...
-
Stringを返す getText()メソッ...
おすすめ情報