- PR -

.NET開発のコーディング規則について

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2003/11/24
投稿数: 121
投稿日時: 2004-07-22 09:08
引用:

確認ですが、上記の方法も『ハンガリアン記法』なのでしょうか?
ハンガリアン記法だとすると、
プログラム中の全ての変数に型を表すプリフィクスをつけるということですよね?



ハンガリー記法って「型を表す」プリフィクスを付けるとは限らないんじゃなかったかな?
さらに言えば、「すべての変数」に付ける必要もないと思っていましたけど。
また、用途に応じた概念的なプリフィクスを付けても良いのだと思っていました。

たとえば、http://www.arcpit.co.jp/winapi/api_01/ap010203.htm のページでは
short, int ともに n (number)というプリフィクスを付けると紹介しています。
これは言語使用の型ではなく、概念的な用途のプリフィクスと言えるでしょう。

マイクロソフトのコードでも良くみかける sz なども同様ですよね。本当に型を付けるので
あれば cp (char*) であるはずなのに、String terminated by Zero という性質に
基づいたプリフィクスを付けています。

発案者の定義したハンガリー記法でどのように定義されているのか私は知りませんが、
一般には上記のような例も含めてハンガリー記法と呼ばれているように思います。

引用:

変数を宣言するために、スーパークラスを意味のあるレベルまで遡って調べる必要があるということ?


調べるのが大変なんだとしたら、それは意味のあるスーパークラスとは
言えないってことじゃないですか? ぱっと分からないスーパークラスを
遡って調べてまでして付ける意味は薄いと思います。

引用:

どうもこのあたりがしっくりこないんですが、私のハンガリアン記法の認識が誤ってますか?


私は厳密なハンガリー記法を知らないので分かりません。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2004-07-22 12:23
objectです。

私はその方が分かり易いと思って
「ハンガリアン記法」
という言葉を使いました。

ここで注意して欲しいのは、「.NET」に於いては
「MS」も「ハンガリー(アン)記法」を採用してない
という事実です。

従って、「.NET」に於いては
「教条的」に「ハンガリー(アン)記法」を考える事
自体に、意味が無い訳です。

当然、「厳密なハンガリー記法」を考える事にも全く意味は無いと私は思います。
#まぁ、「ハンガリー(アン)記法」は最初から誰も強制はしてませんから、教条的に考える事には
#これまでも意味は無かったと思います。

その上で私は、
「インスタンス表記」に於いて「何が重要なのか?」
という「私の考え」を書いた積もりです。

最終的に大切なのは、最終的な責任主体である
自分(組織)が何を考えどうするか
だと思います。
えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-07-22 14:49
データフォームウィザードを使ったことがあり方でしたらわかると思いますが、
MSはいまだにハンガリアン的な「プリフィックス」いっぱい使ってます。
obj・btn・grd・lbl・edit などです。
普通にFormにDataSet・ボタン・DataGrid・ラベル・テキストボックスを配置したときと明らかに違います。

MicroSoftは Visual Studio .NET の一部のウィザードで ハンガリアン的な「プリフィックス」を吐き出すコードを自動生成している という事実があります。
_________________
えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12
えムナウのプログラミングのページ Blog1 Blog2
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-22 20:12
引用:

objectさんの書き込み (2004-07-21 12:26) より:


 すみません、未明から娘が嘔吐を繰り返したため、今日は寝てました。。。

>>abstract class SeibutuHonyu : Seibutu {
 う〜ん、私なら、「ほ乳類」は「生物」であることは自明なので、自明であるならわざわざ明示しない、かな。または、名前空間で表すかもしれません。たとえば、インタフェイスなら、それが実装されているかどうかは見えにくいので、つけるかもしれません。


>>SeibutuHonyu shTaro;
 あ、そっちですか。shで表記されるクラスが複数あったらどうなるのとか、shがSeibutsuHonyuであることはどこで管理するのとか、そういうことを聞き始めるときりがないのでやめます。が、ソースと対応表という複数のものを同一性を保つように管理することが、品質を下げる要因となる、という指摘だったんだなと、別のものが理解できました。

 ソースからクラスの継承関係を俯瞰する・・・ちょっとレスできるかどうかわかりませんが、考えてみます。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2004-07-22 21:13
objectです。

>Jittaさん
>すみません、未明から娘が嘔吐を繰り返したため、今日は寝てました。。。
そうなんですか…。
私も経験ありますが、大切にしてあげて下さい。

>>abstract class SeibutuHonyu : Seibutu {
>う〜ん、私なら、「ほ乳類」は「生物」であることは自明なので、自明であるならわざわざ明示しない、かな。
>または、名前空間で表すかもしれません。たとえば、インタフェイスなら、それが実装されているかどうかは
>見えにくいので、つけるかもしれません。
あっ、今回の「クラス名」に関しては、意味がありませんので、目を瞑ってください!(^^ゞ

>あ、そっちですか。shで表記されるクラスが複数あったらどうなるのとか、shがSeibutsuHonyuであることはど
>こで管理するのとか、そういうことを聞き始めるときりがないのでやめます。が、ソースと対応表という複数
>のものを同一性を保つように管理することが、品質を下げる要因となる、という指摘だったんだなと、別のも
>のが理解できました。
えぇ、「shで表記されるクラスが複数あったらどうなる」、つまり「プリフィックス」の衝突は起き易い問題で
すね。
だから実は、「クラス命名法」は私にとっても重要な問題なんです。
#それで、「CLSの影響」という形で、先のレスで愚痴ってしまった訳でもあります。
#補足ですが、「ローカル」変数にはもちろん「プリフィックス」は付けません。

私は、最低限「クラス」情報をだけを、今の所は「プリフィックス」で対応しています。
#それから「コード」の視認性が落ちる事だけは、最終的に避けたいと思っています。

>ソースからクラスの継承関係を俯瞰する・・・ちょっとレスできるかどうかわかりませんが、考えてみます。
「ソースからクラスの継承関係を俯瞰する」というのは、少し大袈裟な表現かも知れません。
「プリフィックス」で対応しているという事で、Jittaさんにはお分かりだと思いますが、ちょっとした「メモ」
という感覚ですね。
でも、私の場合はこの「メモ」が無いと「頭」が何か動かないって感じです。
私の気持ちとしては、「インスタンス」の動きを「クラス間の関連」の中で意識したいという感じです。


Jittaさん、最近は気温が高くなり身体の抵抗力も落ちてますので、ご自愛下さい。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-07-23 01:15
引用:

未記入さんの書き込み (2004-07-22 09:08) より:
ハンガリー記法って「型を表す」プリフィクスを付けるとは限らないんじゃなかったかな?
さらに言えば、「すべての変数」に付ける必要もないと思っていましたけど。
また、用途に応じた概念的なプリフィクスを付けても良いのだと思っていました。



了解しました。
私の2つ前の書き込みの、
「ハンガリアン記法とは変数名の先頭に型を表すプリフィクスを付加する記法だとすると…」
という旨の部分に反応されていたので、確認させていただきました。

結局は、変数の性質が一目で分かるようにプリフィクスを用いるということですね。

# 以下は余談です。
実際にあったんですよ。全ての変数に型を表すプリフィクスをつけることを義務づけたプロジェクトが。
VB6の案件だったんですが、ありとあらゆる型とそのプリフィクスの対応表を配られました。

maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2004-07-23 11:28
こんにちは。

.NET環境でGUIコンポーネントにプリフィックスをつける派の方に質問です。

たとえば、LabelとLinkLabel、OpenDialogとSaveDialogとFontDialogとColorDialogなど
のプリフィックスはどのようにしてますか?

A.それぞれ識別できるようにたとえば、lbl、lklbl、opdlg、svdlg、ftdlg、cldlg
と細かくつける。

B.大雑把にラベルやダイアログ程度にわかればいいのでlbl、dlgと同じ物をつける。

私はB派です。


よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-07-24 00:13
私は基本的にはB派(大雑把にラベルやダイアログ程度にわかればいい)になりますね。

引用:

maruさんの書き込み (2004-07-23 11:28) より:
たとえば、LabelとLinkLabel、OpenDialogとSaveDialogとFontDialogとColorDialogなど
のプリフィックスはどのようにしてますか?



でも、ここに上がっている例だと私の場合、
LinkLabel、FontDialog、ColorDialogなんかは業務で使うこと自体がないでしょう。

それとDialogなら一回使い捨てなのでまったく名前には拘りません。
まずデザイナから貼り付るのであれば、デフォルトのまんまでしょう。
ラベルの類も、動的に表示するものを変更するラベルにはlblを付けますが、
それ以外のどうでもいいラベルには意味のある名称自体つけません。

スキルアップ/キャリアアップ(JOB@IT)