【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

クラスのメンバー変数の書き方。

クラスのメンバー変数を書くとき、以下の3つはどちらでも同じ動作をします。

◆privateの場合、privateを明示的に書く or 書かない
◆null初期化の場合、= nullを明示的に書く or 書かない
◆メンバー変数名に接頭辞(mTextなど)をつける or つけない

チームなどで書き方をどちらかに統一するとすれば、どちらに統一するのがいいと思いますか。
理由も含めて教えて下さい。

明示的に書くとJavaに不慣れな人にも分かりやすくて良いと思います。
書かないとタイプ数が減ってコーディングが若干楽です。

接頭辞はthisを書かなくていいのが楽なのですが、なんだか気持ち悪いです。
気持ち悪いのですが、デメリットは明確に説明できません。

A 回答 (3件)

◆private を明示的に書かないと、private になりません



◆null初期化の場合、
null初期化を明示的に書くことで、設計上の特別な意図を他の人に知らせる必要がある場合は書きます
特に設計上の特別な意図が無い場合は、書きません
(コードはいつもクリーンな状態を保つ、不要なものは書かない)

◆接頭辞はつけない
接頭辞なんかよりも、変数名は、変数の意味がほぼ完全に把握できるものにします
(SunのNaming Conventionに従う)
public class CourseSession {
private int numberOfStudents;
public int getNumberOfStudents(){return numberOfStudents;}
}

★インスタンス変数は必ず private にする
オブジェクトに対して、メッセージを送信する以外の事を許可してはいけません。
this.doSomeThing();
についても、thisオブジェクト(自分自身)に対して、doSomeThingというメッセージを送信すると捉えます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>private を明示的に書かないと、private になりません
勘違いしていたようです。ご指摘ありがとうございます。

>特に設計上の特別な意図が無い場合は、書きません
>コードはいつもクリーンな状態を保つ、不要なものは書かない
確かに納得いきます。同意です。

>接頭辞なんかよりも、変数名は、変数の意味がほぼ完全に把握できるものにします
意味がほぼ把握できるのがいいというのには同意ですが、
接頭辞をつけない理由はやっぱりいまいち分かりません。

例えば、mNumberOfStudents でも意味は分かるしいいんじゃないかとも思います。

>インスタンス変数は必ず private にする
「必ず」と言うとちょっと言い過ぎかと思いますが、概ね同意です。

お礼日時:2010/08/17 22:21

privateは#1さんの言う通り、書かないこととprivateは同義ではありません。



nullはどちらでもいいけど、個人的には書く方を選ぶ。

接頭辞は、thisを書かなくてよいのは、他の変数に同じ接頭辞を使わない、というルールに従ったときだけです。
逆に、他で使われていなければ、接頭辞を使わなくても、thisを使わずに直接メンバ変数にアクセスできます。
「接頭辞を使えばthisをかかなくてよい」というのは間違いです。
個人的には、接頭辞は基本使わない+thisを必ず指定する。
あるいは、 privateなメンバ変数(接頭辞あり)とアクセサ(接頭辞無し)の組み合わせを使う
例)
private int mx ;
public int x() { return this.mx ;}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>「接頭辞を使えばthisをかかなくてよい」というのは間違いです。
そうなのですが、メンバー変数の接頭辞は"m"で、
他の変数に同じ接頭辞を使わないというようなルールがある場合の話です。

thisを使わずアクセスできるのも知ってますが、
引数やローカル変数と混同するのが恐くて、接頭辞が無いと全部thisをつけたくなってしまいます。

お礼日時:2010/08/17 22:28

こんにちは。



◆privateの場合、privateを明示的に書く or 書かない
書きます。
理由
何も書かない場合はprivateではありません。

◆null初期化の場合、= nullを明示的に書く or 書かない
書きます。
理由
なんとなく気持ち悪い・・・。

◆メンバー変数名に接頭辞(mTextなど)をつける or つけない
付けない。
理由
別にいらんと思う・・・好み。
    • good
    • 0
この回答へのお礼

>何も書かない場合はprivateではありません。
デフォルトはprotectedですね。privateなのはC#でした。

>なんとなく気持ち悪い・・・。
気持ちは分かるんですが、
書かないとnullって決まってるし、書かなくてもいいかなあとも思います。

>別にいらんと思う・・・好み。
Javaで接頭辞をつけてるのはあんまり見ないですが、慣れると便利ですよ。

お礼日時:2010/08/17 22:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報