- - PR -
.NET開発のコーディング規則について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-20 18:51
重複レスになってたので削除しました。[ メッセージ編集済み 編集者: object 編集日時 2004-07-20 20:30 ] | ||||||||||||
|
投稿日時: 2004-07-20 20:15
重複レスになってたので削除しました。
[ メッセージ編集済み 編集者: object 編集日時 2004-07-20 20:31 ] | ||||||||||||
|
投稿日時: 2004-07-20 21:13
ハンガリアン記法とプリフィクスの話がごっちゃになってますね。
いまいち定義がはっきりしないのですが、 ハンガリアン記法=『変数名の先頭に型を表すプリフィクスを付加する記法』でいいのでしょうか? だとすると、オブジェクト指向言語において、ハンガリアン記法は実現不可能と言えるでしょう。 既に多くの方が述べられているように、型(クラス)は無限に作り出すことができ、その全てに対応するプリフィクスを定義することは非現実的ですから。 # 「プリミティブ型だけ」とかに限定すればハンガリアン記法も可能かなぁ。 # でも、"Integer iPrice"と宣言した変数が、仕様変更で桁数が足りなくなった場合とかどうするんだろう? それに対して、(ハンガリアン記法以外の)プリフィクスですが、 これは上手く使えば、非常に有効な手段だと思います。 Jittaさんが仰っているような、「画面上に配置するコントロールについては、プリフィックスを決める」などは私も賛成です。 # ところで、.NET Framework SDKでは"ハンガリー表記法"となってますね。 # どうりで検索してもヒットしないと思った。 | ||||||||||||
|
投稿日時: 2004-07-21 08:11
すべてのクラスについて個別のプリフィクスを与える必要はないのでは? 適当なスーパークラスまで遡って、スーパークラスをあらわすプリフィクスを 付けるというのは有効だと思います。 型を意識するのは代入可能性やメソッド実装保証を確認したい場合が多いでしょうから、 クラス個別にプリフィクスを付けるよりも、意味のあるレベルでスーパークラスや インターフェイスに応じたプリフィクスを与えるというのが、賢いやりかただと思います。 この方法は特に GUI コンポーネントでは威力を発揮します。 数値しか入力できない入力欄、半角英数しか入力欄、などのコンポーネントを 作成した場合でも、TextBox のサブクラスであるということで、 tb や txt などのプリフィクスを付けると分かりやすくなると思います。 GUIで有効だと言っている人たちは、どのようにしているのでしょう。 無限に作ることのできるクラスに、それぞれプリフィクスをつけているのでしょうか。 数値しか入力できないテキストボックスに numtb と付けますか? それとも、スーパークラスの TextBox をあらわす tb を付けますか? | ||||||||||||
|
投稿日時: 2004-07-21 08:54
こんなコーディング?
そういう風に理解したのですが…? 追記 つまり、この部分ですけど、
上記例では(名称そのものを変えてしまいましたが)、「買い物IF」というインタフェイスに、「人」または「犬」クラスをキャストして受けています。このときに「『買い物IF』として使うけど、元ものは『人』(または『犬』)クラスのインスタンスなんだよ」というのを明示したいのかな?と。そこで「買い物犬」または「ぱしり」という名称を使い分けることで、型関連情報をソースに記入するのかな?と。 [ メッセージ編集済み 編集者: Jitta 編集日時 2004-07-21 10:57 ] | ||||||||||||
|
投稿日時: 2004-07-21 09:53
おはようございます。
>GUIで有効だと言っている人たちは、どのようにしているのでしょう。 >無限に作ることのできるクラスに、それぞれプリフィクスをつけているのでしょうか。 >数値しか入力できないテキストボックスに numtb と付けますか? >それとも、スーパークラスの TextBox をあらわす tb を付けますか? 私の場合、TexBoxを継承して拡張したものでもスーパークラスと同じtxtをつけるだ けにすると思います。ぱっと見てテキストボックスであるというのがわかればいい ので、その詳細な機能までわかるような識別子をつける必要もあまりないかなと思 いました。 | ||||||||||||
|
投稿日時: 2004-07-21 12:26
objectです。
>Jittaさん 私が意図したのは以下の様なイメージです。 #例がインターフェースではないですが…。
[ メッセージ編集済み 編集者: object 編集日時 2004-07-21 14:50 ] | ||||||||||||
|
投稿日時: 2004-07-21 20:45
確認ですが、上記の方法も『ハンガリアン記法』なのでしょうか? ハンガリアン記法だとすると、 プログラム中の全ての変数に型を表すプリフィクスをつけるということですよね? 変数を宣言するために、スーパークラスを意味のあるレベルまで遡って調べる必要があるということ? どうもこのあたりがしっくりこないんですが、私のハンガリアン記法の認識が誤ってますか? 前回の投稿でも述べたように、 変数名に意味のあるプリフィクスをつけるという意見には賛成なんです。 ただ、全ての変数に型の情報が必要だとは思いません。
この場合ですと、プリフィクスよりもサフィクスを好んで使います。 ↓こんな感じで。 userId = UserIdBox.Text regionCode = RegionList.SelectedValue この場合の"Box"や"List"は型の情報ではありません。 純粋にテキストボックスであること、リストであることを表しています。 つまり、UserIdBoxの型情報としてBoxというサフィクスをつけるのではなく、 TextBoxでもHtmlInputTextでもInputManでもテキストボックスとして表示されるものにはBoxというサフィクスをつけます。 # 最後の例が分かりづらかったので追記。 [ メッセージ編集済み 編集者: He 編集日時 2004-07-21 21:09 ] |