- - PR -
【修正】クラス名とプロパティ名が同じにできなくて困っていませんか?
1
投票結果総投票数:11 | |||
---|---|---|---|
できなくて困っている | 1票 | 9.09% | |
できなくても困らない | 0票 | 0.00% | |
できないが困っていない | 1票 | 9.09% | |
できる | 9票 | 81.82% | |
その他 | 0票 | 0.00% | |
|
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-12 13:27
※投票箱が途切れていたので修正しました。
すでに投稿された方はお手数ですが再度お願いいたします。 ----------------------------------------------- 投票箱: 1. できなくて困っている 2. できなくても困らない(なぜ困らないのか教えてください) 3. できないが困っていない(解決策を教えてください) 4. できる(!?) 5. その他(命題がおかしいなど、ご指摘ください) ----------------------------------------------- プロパティの命名について、意見を頂戴したいと思います。 1.「.NETではプロパティは大文字で始めるのが定石」 (これは、間違いないですよね?) 2.「クラス名には「C」などプレフィックスは付けない」 (マイクロソフトが推奨していると聞きました) 1、2から、 クラスAのプロパティとしてクラスBのインスタンスを持つとき、 クラスBのクラス名とプロパティ名がぶつかることってないですか?
上記はレンタカー・システムの一部で、 車IDは当初uintでしたが、IDの中に意味を持たせるという要求のため、 クラスに変えました。 客IDのほうを変更するなら、クラス名はCustomerIDで、プロパティ名は IDでOKかと思いますが、 車IDのほうは、そうはいきません。 意味をもとに考えてもやっぱりCarIDかな? と。。。 現状は、CurrentCarIDとか、OwnCarIDとか考えまして、 最終的に、RentalCarIDとしていますが、 全体がレンタカーシステムですから、冗長な気もします。 Javaなら、
とするところですが、 .NETの定石はどうなんでしょうか? 上記は一例ですので、一般的にどうなのか? そんなことになること自体がおかしい(設計が悪い)のか? | ||||||||
|
投稿日時: 2008-02-12 13:38
同じに出来ますよね。。。
提示コードをそのまま書いて、ビルド通りますよ。 (Class → class の修正は必要ですが) | ||||||||
|
投稿日時: 2008-02-12 13:46
クラス名とプロパティ名は同じにできます。(少なくともVB、C#では)
そして、本質的に同名になるべきである場合は、同じ名前にしましょう、 というのがMSのガイドラインでも明記されています。 プロパティの名前付けのガイドライン http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconpropertynamingguidelines.asp 型のメンバの名前 http://msdn2.microsoft.com/ja-jp/library/ms229012(VS.80).aspx msdn2の場合では列挙型の例だけを挙げているので、他の型でも同様なのかが ちょっと曖昧ですが、.NET Framework1.0の頃のガイドラインに既に記載があるので、 列挙型以外でも同じだろうと思います。 | ||||||||
|
投稿日時: 2008-02-12 14:09
「できる」んですか!?
まさかと思いましたが、「できる」の項目作っておいて良かったぁ(笑) 実際に手近のプロジェクトでやってみたらできました! (まさか、と思っていたのですみません<m(__)m> しかし、 ネームスペース名とクラス名を同じにしたら、C++/CLIからアクセスする ときに区別が付かなくなって困る。。。 というような、落とし穴はないでしょうか? マイクロソフトが推奨していたとしても、上記のネームスペース名のような 例がありますからね。。。 | ||||||||
|
投稿日時: 2008-02-12 14:17
名前空間とクラスに同じ名前を使用しないでください。たとえば、Debug 名前空間と Debug クラスの両方を作成するのは避けてください。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconpropertynamingguidelines.asp と書いてありました<m(__)m> # じゃ、自動生成しないで(ToT)/~~~ # プラグインシステムで、 # プラグイン名=クラス名=プロジェクト名というプロジェクトを作っているので。。。自業自得か。。。 [ メッセージ編集済み 編集者: あぶぽん 編集日時 2008-02-12 14:23 ] | ||||||||
|
投稿日時: 2008-02-12 22:36
プロパティを作って、その型をプロパティと同名の内部クラスで設定しようとして、
ちょっと困ったことがあります。 まあほとんど迷わず、プロパティ名+"Class"にしましたが。 そういう使い方なので、そのプロパティとセットでしか使わないため、 わかりにくいということもないだろうと。 |
1