じゃんぬねっと日誌

ネタと雑記と時々プログラミング

目次

Blog 利用状況

ニュース

不況すぎる件。

スポンサードリンク

運営サイト

  • C# と VB.NET の入門サイト

書庫

ハンガリアン記法 (ハンガリー記法)

プログラミングにおいての、コーディングの手法に、ハンガリアン記法 (ハンガリー記法) というものがあります。

ハンガリアン記法 (ハンガリー記法) は、変数の型を略号化してプリフィクスとして組み入れる方法です。
昔は、Microsoft 社などで好んで使われていた表記法ですが、現在は推奨されていません。

ハンガリアン記法 (ハンガリー記法) に関する Microsoft の見解

まったくダメというわけではないですが、効果がない、または逆効果であるならばやめるべきです。
少なくとも、.NET 言語では MSDN にある「名前付けのガイドライン」に違反した命名しかできません。

私は、VB6 ですら、ハンガリアン表記はお勧めできません。
VC++ であれば、致し方ないと言っておきます。

投稿日時 : 2005年5月23日 12:00

コメントを追加

# re: ハンガリアン記法 2005/05/23 14:42 om

私は、コントロールに限ってはハンガリアン表記を使っています。
変数名とかぶったりしそうなので。

# re: ハンガリアン記法 2005/05/23 14:50 じゃんぬねっと (C#, VB.NET)

# トラップ成功。(^^)

コントロールのハンガリアン表記とは、
txtTokuiCode とか、lblBushoName とかですかね?
コントロールの種類の略号をプリフィクスとして付けるんですよね?

しかし、コントロールは、Form に属するメンバですよね?
どうなんでしょう? (^^)

でも、GUI 絡みのコーディングはしやすいですね。

# re: ハンガリアン記法 2005/05/23 16:36 石坂@日本ベーレー

C#でコードを書くようになってから
コントロールもhogeTextBoxとか、fooListBoxと言う変数名にするように自然に変わりましたね。
ただこの辺もわかりやすければプリフィックス付けてもいい気がしますね。
ADO.NETの各オブジェクトなんかもプリフィックスを付けた方がわかりやすいですね。cnFooとかdaBarとか。

ただ単純なデータ型を示すプリフィックスはやっぱり止めた方が良いですね。見やすい見にくいの前に、本来変数のスコープが適切ならデータ型のプリフィックスなんて付けなくても変数のデータ型を覚えてられるはずですから。

もっともC + Win32 APIではハンガリアンでないと死んでしまうかもと言う感じで、あれはあれでそういう時代背景があったと。

# re: ハンガリアン記法 2005/05/23 17:08 om

> コントロールもhogeTextBoxとか、fooListBoxと言う変数名にするように自然に変わりましたね。

最初こんな感じで書いていたんですが、結局一緒じゃんって思ってPrefixに戻りました。
UIコンポーネントにメンバーという考えを持たせる必要がない場合も多いので。

# re: ハンガリアン記法 2005/05/23 17:16 じゃんぬねっと (C#, VB.NET)

うーん。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=29624#29661

難しいなぁ、結局プロジェクトのポリシに因るのかなぁ。(^-^;)

# re: ハンガリアン記法 2005/05/24 1:36 中博俊

dwにしろ、lpにしろ実質同じってな問題が根深いのでハンガリアンはするべきかもしれませんね。>石坂さん

わたしは、名前ラベル、名前テキストボックスです。!!

# re: ハンガリアン記法 2005/05/24 1:56 NAL-6295

2,3年前はハンガリアン表記当たり前な感じでしたが、最近は全く使ってません。

# re: ハンガリアン記法 2005/05/24 13:51 じゃんぬねっと (C#, VB.NET)

> わたしは、名前ラベル、名前テキストボックスです。!!

もちろん、日本語変数ですよね? (^^)

# re: ハンガリアン記法 2005/05/25 14:38 入海

同感!ハンガリアン記法はUIプログラミング以外は使えないですね。oCustomerとかって醜いし、絶対いらないと思う。

# re: ハンガリアン記法 2005/05/25 14:43 じゃんぬねっと (C#, VB.NET)

ローカル変数でのみ使う場合があります。
オリジナルなハンガリアン記法ではないですけど...

int iLength;
long lReturn;

とか。

int length;
long return;

だと、ちょっと困ることとかあるんで... (^^)

それ以外のスコープでは一切使いませんね。

# re: ハンガリアン記法 2005/05/26 22:47 88Kouji

 私も、UIに限ってはハンガリアン表記を使っています。 コントロールっていい名称が浮かばないのでこうしてます。
 その他のローカル変数などは、かなり長めにします。
(よく、長すぎといわれますが・・・・ )

# re: ハンガリアン記法 2005/05/27 14:46 じゃんぬねっと (C#, VB.NET)

> その他のローカル変数などは、かなり長めにします。

ローカル変数って、メソッド内に関わる処理のみにしか使用できませんので、
そんなに長くはならないんじゃないでしょうか?
とりあえず、メソッドが「何が」を示していれば、
ローカル変数でそれを書く必要はないですよね?

# re: ハンガリアン記法 2005/05/27 18:03 88Kouji

>ローカル変数って、メソッド内に関わる処理のみにしか使>用できませんので、
>そんなに長くはならないんじゃないでしょうか?
>とりあえず、メソッドが「何が」を示していれば、
>ローカル変数でそれを書く必要はないですよね?

 そうですね。
長くなるのは、センスのある名前が思いつかないからです。恥ずかしいですが。

どっちかっていうとわたしはローカル変数は、あまり使わないで、メソッドを使います。
そういった意味では、短めでいいですね。今後はそうしてみます。
 名前にこだわれと先輩に叩き込まれたのでパブロフの犬のように癖付けされたみたいです。

# re: ハンガリアン記法 2005/05/27 18:30 じゃんぬねっと (C#, VB.NET)

ちょっと痛い例を晒してみます。

Option Strict Off

Public Class clsDatabase

  '/ この辺りにパブリックな変数が 200 行とか。
  '/ とりあえず、なんでもかんでもパブリック。
  '/ むしろ、Dim という曖昧な表記がされていたり。

  Public Function Fnc_KoshinSyori() As Boolean
    Dim lngKBN As Long
    Dim intCD As Integer
    Dim i As Integer

    For i = 1 To 10
      省略
    Next

    Fnc_KoshinSyori = True
  End Function
End Class

突込みどころ満載 (w
COBOL がどうのこうのって言われちゃうのも無理はないかもしれませんね。

# re: ハンガリアン記法 2005/06/03 14:58 グラスオニオン

はじめまして
VB6のことからプログラムをはじめて、現在VB.NETでプログラムをしています。

VB6の時はバリバリハンガリアン記法を使っていました。
関数名もfncKansuとかsubKansuみたいな名前の付け方をしていました。

.NETに変わってからは自然と使わなくなって行きました。
最近のJAVAやオブジェクト指向関連の本でハンガリアン記法が使われてることがほとんどなく、その影響だと思います。

ただコントロール名はいまだにハンガリアン記法を使っています。そのほうがわかりやすいです。
コントロールに関しては、わかりやすい他の表記方法が思いつかないです。

# re: ハンガリアン記法 2005/06/06 15:25 にしざき

UIでもつけてないなぁ。
カスタムコントロールとかの略語で悩むくらいなら、xxxTextBox みたいにしたほうがいいかと思っています。
もっというと、xxx だけにすることのほうが多いかなぁ。
TextBox に対する Labal なんかは xxxLabel とかつけてるけど。

# re: ハンガリアン記法 2005/06/18 0:03 はんがり案

わたしも日本語変数使ってます。がんばって辞書でしらべて意味がわかりずらくなるくらいなら、臨機応変に日本語な変数でもいいのではないでしょうか。

あと、すごい局所的に使用される変数で、気を使って名前をつける必要がないと判断した場合は、アルファベット一字だったりとか。

ハンガリアンで書いたほうがわかりやすいなあと判断したときはハンガリアンを利用するようにしてます。

要するにプログラムを組む上に重要なのは、自分(もちろん他人も)がわかりやすいと思うことだと思います。

# re: ハンガリアン記法 2005/10/16 21:38 素人

私自身は、メンテナンス時に有効などと考えてつけていますが?どうでしょう?

# re: ハンガリアンについてつれづれ 2008/02/12 21:49 へぼろっぱぁ

re: ハンガリアンについてつれづれ

# re: ハンガリアン記法 (ハンガリー記法) 2008/03/06 18:04 いまさらながら

本当の意味でのハンガリアン記法は、型を明示的にするだけのものではありません。
知らないようであれば、"アプリケーションハンガリアン"で調べてみてください。
きっと意味のあるものだと理解できるはずです。

# re: ハンガリアン記法 (ハンガリー記法) 2008/03/06 18:08 じゃんぬねっと

一応ここを読んでいながらして、敢えてこんなタイトルをつけています。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95

# re: ハンガリアン記法 (ハンガリー記法) 2008/03/30 5:01 SKNOWN

うんうん。
じゃんぬねっとさんは「効果がない、または逆効果であるならばやめるべきです。」と言ってますもんね。
全くその通りです。
プログラムを組む人間なら「○○に書いてあったから」とか「誰々に言われたから」じゃなく、実際に効果があるかどうかで採用するかどうか決めるべきですよね。

ワタシには効果がめっちゃ有るので.NETでもバリバリ使ってますがヽ(゚∀゚)ノ
#上手く使えるようになるとコメント無くても、処理を追わなくても、変数名や関数名を見るだけで理解できるソースになります。

# システムハンガリアン記法 2008/10/21 0:32 やじゅ@アプリケーション・ラボ わんくま支局

システムハンガリアン記法

タイトル  
名前  
URL
コメント