ちょっと待て!ハンガリアン

このエントリーをはてなブックマークに追加
巷ではハンガリアン記法がズタボロに叩かれている。

よく「C#ではハンガリアン使わないようにとMSが言ってるんだよ。ボケ」
と言われているが、その理由までは追求していない。

C#では型付けが弱い為に、ハンガリアンの意味があまりないという事だ。
C/C++みたく型付けが強い言語ではハンガリアンって有用じゃないだろうか。

みんなだってポインタの先頭には「p」とか書くだろ?
もうすぐW杯ですね。
char *str ;
4デフォルトの名無しさん:02/01/15 01:56
>char *str ;
そりゃイカン、そりゃイカンぞぉ>>3
ハンガリー記法を解説してるHPない?
6日下部圭子 ◆ib749tYo :02/01/15 02:00
In article >>1, デフォルト名無しさん/sage/1 wrote:
> C#では型付けが弱い為に、ハンガリアンの意味があまりないという事だ。

「C#では型付けが弱い」と言ってる時点でこの人はダメでしょう。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
71:02/01/15 02:06
>>6
>「C#では型付けが弱い」と言ってる時点でこの人はダメでしょう。

すまん、これはすべてがオブジェクト型の間違い。
型付けと言った方がわかりやすいかと思って・・・
8デフォルトの名無しさん:02/01/15 02:13
ハンガレ?
9デフォルトの名無しさん:02/01/15 02:16
っていうかな、これからの言語では「これはポインタ?」とか気にしなくて
いい言語が主流になってくるのよ、Javaとかね。

だから、型を気にしなきゃいけないC/C++は、どんどん廃れていく方向にある
わけ、絶滅はしないけど使われる分野は狭くなっていくのは確実。

だから、廃れていくC/C++と一緒にハンガリアンもやめましょうってこった。
10ななしい:02/01/15 02:18
LONG lABC
LPLONG plABC
DWORD dwABC
LPDWORD pdwABC
WORD wABC
LPWORD pwABC
BYTE bABC
LPBYTE pbABC
RECT rcABC
SIZE siABC
POINT ptABC
HANDLE hABC
LPVOID pABC
BOOL fABC
char szABC[]
CString strABC
CBrush brshABC
CPen penABC
なんちゃって
11  :02/01/15 02:25
>>9
参照か実体か判らず、途中で化けるようなアフォ言語なぞを何故
優れているかのように言う?
どうしてもやるなら、'_'で区切って欲しい。>ハンガリアン派
読みにくい。
13デフォルトの名無しさん:02/01/15 02:28
>>1
ドキュメントちゃんと読んだ方がいいぞ。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpapndx/html/_cor_naming_guidelines.asp
Naming Guidlines

ドキュメントを読んだ上でハンガリアンを使うべきではない理由として考えられること。

・すべてオブジェクト指向であり型なんぞ無限に増産される中で、
一貫したハンガリアン表記はできない。
 少なくとも、クラス、インターフェース、構造体、列挙型用の変数に
それぞれを表すプリフィックスを付けても意味ないわな。

・多数の言語で作成されたクラスライブラリを互いに利用し合うので、
各言語内の型に応じて勝手にプリフィックスを作られたら混乱のもとだな。
かといって、Universal Type Nameの名称から略称を取るのでは、
各言語で型の呼び方とずれるから直感的でもないわな。

・変数名が的確に何を行うオブジェクトなのかを表していれば、
そのオブジェクトが何をできるか(=何の機能を持っているか=型が何か)
わかるだろ。
14デフォルトの名無しさん:02/01/15 02:29
>>12
"_"も使うなと言っているので・・・
159:02/01/15 02:29
>>11
少なくともGCがなくて、変数の先頭に型情報を名づけるアフォ言語
よりは優れてるだろ。
16ハンギョレ記法:02/01/15 02:31
ハンガリー人がどう思ってるか誰か聞いてきてください。
17デフォルトの名無しさん:02/01/15 02:36
>>13
つーか、1が言いたいのはC#の仕様じゃなくて、C/C++でハンガリアン
が有効じゃないかって言いたいんじゃないか?
>>9

Java,C/C++の比較でそんなこと言うなよ。
おおざっぱすぎ。
こいつ、動的な片付けの言語とかつかったことあんの。

だいたいCもC++も、はんがりあんなんていらないだろ。
19 :02/01/15 02:37
んでハンガリアン記法って何?
ポーランド記法と関係有る?
予想外のタイミングで処理が一時停止する
危険のあるGCはない方がいいのだが。
意識的に制御するんなら最初からない方が。
むしろランタイムライブラリの仕様の中で
ヒープの管理を工夫すればと。
>>15
>変数の先頭に型情報を名づけるアフォ言語

これって、どの言語のこと?
221:02/01/15 03:01
>>13
ども勉強になります。
ハンガリアンを徹底的に排除するんでなくて、良い部分は残していけばいいんじゃないかと
思いまして。
俺が使っているハンガリアン(?)は

m_ ・・・クラスのメンバ変数につける、これは俺も必要か疑わしい。
s_ ・・・staticなメンバにつける。
g_ ・・・グローバル変数につける、グローバル変数使わないからこれも疑わしい。
p ・・・ポインタにつける、意図的にNULLが代入されている場合がある事がわかる。
C ・・・クラス名の先頭につける。

くらいですね、スコープを明確にしたいという狙いもあります。
class T{ int m_length;
public: T(int length) : m_length(length) {}
};
とかを考えると、m_は案外つけといた方がいいかも。

>>変数の先頭に型情報を名づけるアフォ言語
>これって、どの言語のこと?
Perlっしょ(w
24デフォルトの名無しさん:02/01/15 03:31
>>21
>変数の先頭に型情報を名づけるアフォ言語
話の流れからして、C/C++のハンガリアン記法のことだと思われ
25日下部圭子 ◆ib749tYo :02/01/15 03:35
In article >>22, 1/22 wrote:

> 俺が使っているハンガリアン(?)は

それはハンガリアン記法ではないですね。

ハンガリアン記法の是非の議論になると、かならずプレフィックスの類は
すべてハンガリアン記法であるようなことをおっしゃる方がいますが、
スコープに基づいた命名規則は、ハンガリアン記法とは言いません。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
26デフォルトの名無しさん:02/01/15 03:37
メンバ変数になんか付ける人は割と多いね。
@を付ける事を強制してるRubyなんかも有るし。
2713:02/01/15 03:37
>>17
>つーか、1が言いたいのはC#の仕様じゃなくて、C/C++でハンガリアン
>が有効じゃないかって言いたいんじゃないか?

たぶん、そういうことだろうとは思ったんだけど・・・
ネイティブexeを作るなら、従来どおりでも構わんと思うけど、
そうでないなら、やっぱり.NETの命名ガイドラインには沿った方が
いいのではないかと思う。
(クラスライブラリを共有する気があるなら)

>>22
>s_ ・・・staticなメンバにつける。
メンバ変数自体をprivateで宣言すると思うので、
その場合には、実質的にどういう命名規則を付けても
仕事のプロジェクトメンバーとかで合意が取れていればいいと思う。
publicだとその名前が公開されるので、MSの方針に準拠で。
ってのはどうだろう?中途半端か・・・。

>C ・・・クラス名の先頭につける。
頭のCになじみがあるのはわかるけど、
大半はクラスだから付けなくても。
この場合、構造体はどうします?

>くらいですね、スコープを明確にしたいという狙いもあります。

メンバ変数なんかだと、明示的にthisとかMeとか自分自身を
表すキーワードを付けるとよいかなとも思うけど、全部に付けたらうっとしいか・・・。

>スコープを明確にしたいという狙いもあります。

スコープを明確に。これは確かにある。
privateメンバがprivateメンバだと結構わかりにくいんだよな。
ローカル変数がローカル変数がg(Graphicsクラス)とかのしょぼさだと
privateメンバが目立つからいいが・・・。
ローカルといえど、そんな変数名はあんまりだし。
28デフォルトの名無しさん:02/01/15 03:38
スコープをきちんと使っていればある時点で見える変数なんて
そうそう増えない。てか、そうすべきなの。
むしろクソ長くなった変数名でやたら
行の折り返しだらけになるとみずらいぞ。
変なソフト会社だと名前付けのルールうだうだやって、
やたら長い名前付けさせるのが好きで困る。
プログラム全体の形の見易さが重要なのに。

m_dwHogeraHogeHoge =
XXX_YYY_hogehote_z(UBX_hogerahogehote_xxxx(
CONVERT_HOGERAHOGEHOGE(dwMYZZZp_xxxzzz, &YX_Zzzzabcdef, .................
繰り返すが、
どうしてもやるなら、'_'で区切って欲しい。>ハンガリアン派
読みにくい。
>>22
それハンガリアンちゃうし
変数名は、
i_money_all_of_the_world
iMoneyAllOfTheWorld
で前者がいい、ってこと?
それとも、
i_MoneyAllOfTheWorld
ってこと?
321:02/01/15 03:58
>>27
>仕事のプロジェクトメンバーとかで合意が取れてい
その合意がs_ということで・・・
っていうか、staticメンバはあまり使わないですね・・・

>この場合、構造体はどうします?
構造体はなにもつけません。
C++では構造体もクラスも同じなんですが、メソッドがあるのが
クラスという事で一応Cをつけて区別してます、好みの問題かな。

>>28
たしかに命名規則に拘って、ソースが見難いのでは本末転倒なので
ハンガリアンは大体1文字、最大でも4文字くらいにとどめています。
>>32
だからそれはハンガリアンちゃうって
341:02/01/15 04:03
>>25
>>30
一応、プレフィックスという事で・・・
みんな、ハンガリアンは駄目で、プレフィックスはOKなんですか?

>>29
int *m_p_n_Hoge;
って事ですか?それとも
int *p_Hoge;
くらいにしとけって事ですか?
>>34
メンバ変数は見分けつかないと困るんで、私は m_ つける。

ハンガリアンも

 h   ハンドル h
 n   整数
 u   符号なし整数
 sz  Cの文字列
 wsz wchar_t の文字列
 str  std::string
 bstr BSTR 文字列 (CComBSTR, _bstr_t だったりすることも)
 p  ポインタ

ぐらいは使うな。特に文字列は種類が多すぎて、一目見て分からないと死ぬ。
36日下部圭子 ◆ib749tYo :02/01/15 04:10
In article >>34, 1/sage/34 wrote:

> みんな、ハンガリアンは駄目で、プレフィックスはOKなんですか?

ハンガリアン記法のキモは、名前に型情報を載せるというところでしょう。
プレフィックスだとかポストフィックスだとか、そういうレベルの
話ではなくて。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
MSDNからコピペしたとき、uMsgとか、lParamが紛れ込むという罠。
381:02/01/15 04:27
>>36
>ハンガリアン記法のキモは、名前に型情報を載せるというところでしょう。

なるほど、ではハンガリアンという事で・・・
日下部さんはハンガリアン記法は使わない方ですか?
よろしければ使わない理由を教えてください。
>>37
そもそも構造体のフィールド名がハンガリアンという罠。
40デフォルトの名無しさん:02/01/15 07:12
確かに圭子タンの言う通りハンガリアンよりもプレ(ポスト)フィックスの話になってるな。
ハンガリアン マンセー!!
モンゴリアン マンセー!
43プレフィックスマンセー:02/01/15 09:23
でも、周囲の誰も賛同してくれないので使わない今日この頃。
でも、メンバ変数は後ろに _

変数名のバリエーションを考えるのにハンガリアンは便利だし、
なにげにプログラミングで時間がかかるのが変数名を考え出すことなので、
そういうところでハンガリアンは重宝したり。
int nCar とchar *szCar みたいなー。(例えが悪いか)
>>40
純粋なハンガリアン記法は、さすがにルールが複雑で使ってるヤツはいないと思われ。
>>44
変数名はマジャル(ハンガリー語)でつけていますが、なにか?
どういう文字使うの > マジャル
>>46
ほれ。
http://www.freedict.com/onldict/hun.html
エンコードは中央ヨーロッパ言語な。関係ないのでsage。
SDKだと、構造体のメンバ全部に同じプレフィックスが付いてるのがあるよな。
特にGDI関係のに多い。

typedef struct tagBITMAPINFOHEADER {
 DWORD biSize;
 LONG biWidth;
 LONG biHeight;
 WORD biPlanes;
 ……

すっげー無意味。
それはハンガリアンというより、構造体ごとにメンバの名前空間が分かれてな
かった大昔のコンパイラ用っぽい。
>>48
UNIX 由来の構造体でも多いな。struct stat とか。

これも

 p->st_mtime

とか書いてあった場合に p の型がすぐ分かるというメリットが、ないでもない。積極的に推す
気はないが。
51デフォルトの名無しさん:02/02/23 06:59
ではプレフィックスは是か非か
52デフォルトの名無しさん:02/02/23 09:28
プレフィックスは是
プレフィックスは星
>>1 よ。
漏れはずっと待ってるんだが一体いつまで待たせる氣だ。 ご・る・あ!
55デフォルトの名無しさん:02/04/27 06:42
片足ダチョウのエルフ
56_:02/04/27 07:09
僕は
struct → s
class → c
グローバル変数 → g
メンバー変数 → m
定数 → k
ってやってるなぁ。

ハンガリアン自体はMS内でも賛否両論って何かで読んだよ。
カトラーはハンガリアンが嫌いじゃなかったっけ?
57_:02/04/27 07:18
>>19
MSのハンガリー人プログラマのチャールズ=シモニーが考えたから
ハンガリアン記法らしい。
58追記:02/04/27 07:39
>>56
enum→e
スコープでprefix分けますね。

enum eKind = { kA, kB }
class cA { eKind mKind }
とか
cString* gString = mString;
とか単に名前のバッティングを避けるため付けてる気がする。
型で分けるのは助長だと思うな。

>>57
ここに載ってた。この人賛成なんだよね。
http://www.tokyo-nazo.net/~tenten/free/20020401.html
http://www.tokyo-nazo.net/~tenten/free/20020402.html
http://www.tokyo-nazo.net/~tenten/free/20020403.html
勘弁してくれ。
なんだかわからんが、struct tmのメンバーのtm_のようなものか?
つーかなぜいまさらこんな議論を...
62デフォルトの名無しさん:02/04/27 10:46
char *str;っていかんのか?
char *char_ptr_str;
が正解
psz〜もしくはps〜ってことだろ。
現在はMSもハンガリアンを否定してるんで、
今更わざわざ会わせる必要はない
なあ、このスレの日下部さんはホンモノなのか?だとしたら。。。
















好きです。
char *signed_8bit_char_ptr_str;
が正解
勝手にsignedとか決めつけてるし
勝手に8bitとか決めつけてるし
本物のハンガリアンの解説サイトってない?
つーかハンガリアンって環境(=MS)きめ打ちのような気もするが
>>58
くだんのページの管理者です。
ハンガリアンは全面的に賛成というわけではないです(w
プレフィクスをつけるような命名規約があるなら、ハンガリアンである必要は無いと思っています。
結局は
・プレフィックス付きの命名規約賛成
・プレフィックス付きの命名規約がハンガリアンしかない!
・自分で作るのは面倒くさい
・ハンガリアン使うか・・・
という感じ。
 ポインタ変数 → p
 ハンドル → h
 グローバル変数 → g_
 private以外のメンバ変数 → m_
漏れが使うプレフィクスはコレ位。
ちなみに p,h は後始末を忘れない為のマーク。
g_,m_ はGrep一発で定義位置を洗い出す為のマーク。
(Privateに付けないのは、Grepの必要が無いから)
あと↓の規約も併用。
 struct/class → 頭文字大文字
 定数 → 全部大文字
auto_ptrもp〜ってつけるの?
>後始末を忘れないため
後始末を忘れたくないんなら、「リソースの獲得は初期化」イディオムを使えばいいんじゃないの?
俺はポインタにpってプレフィクスつけるけど、その目的は最初にコーディングする時点で
「->」と「.」のどっちを使うかを悩まなくてすませるためかな。ちなみにaut_ptrの変数にもpを付けてる。

>private以外のメンバ変数
privateじゃないメンバ変数なんて使わないんじゃ? 使ってるの?

>グローバル変数
グローバル変数もC++では使わないなぁ。せいぜいクラスのstatic変数だから、
定義位置は自明だしなぁ。

>struct/class → 頭文字大文字
>定数 → 全部大文字
これは俺もやってる。
 ハンガリアン記法って、飽くまで「命名方法に仲間内の共通認識を持って
作業効率を上げる」のが目的じゃないの?
それが俺系であれMS系であれUNIX系であれ、手段は変わらないと思う。

 アスキー出版の「実録!天才プログラマー」って本の一番最初で、
チャールズ・シモニィのインタビューに詳しくあるよん。
76デフォルトの名無しさん:02/06/08 07:45
>>73
気になりますよね。
auto_ptr の類は皆さんはどうしていますか?

>>74
間違って delete したりしませんか?

私は必死に考えて q をつけてるのですが、やはり美しくない気がします。
q を選んだ理由は p と字形が似ているのと p の次なのと
他の文字よりちょっと下がっていて見やすいからです。
>グローバル変数もC++では使わないなぁ。
変数、といっても、クラスのインスタンスとしての変数だったら
グローバル変数はいくつか使わない?
アプリケーションクラスあたりはグローバルにしておくとらくちんなんだけど…
78デフォルトの名無しさん:02/06/08 08:58
グローバル変数のかわりに static メンバを使うから使わないなあ。

たまにウィンドウ関係のインスタンスをデバッグ用にグローバルにしておくと
キャプションにリアルタイムにデバッグ情報を表示できて便利だと思う事があるくらい。
ハンガリアンなんて最初から使っていませんが、なにか?
8074:02/06/08 11:28
>>76
いや、そもそもdeleteを自分で行うことがないから。ほとんどの場合は、
auto_ptrとboost::shared_ptrを使う。ごくまれに生ポインタを使うのは、
明らかにそのポインタを削除する必要がない場合だけ。
具体的に言うと、
CApp{
  CGraphic graphic_;
  CMouse mouse_;
pubic:
  void Draw(void){
    // マウス位置によって表示すべき絵が変わる。
    // マウスには、アプリクラスを通してアクセス。
    graphic_.Draw(this);
  }
};
こんな風に、上位クラスのthisが渡されてくるような場合は、管理が
わけわかんなくなるのが怖いから生ポインタ。
結局、「deleteしなくていい」ように選択しているから、間違って消す
ことはないよ。
もう一度書くと、俺が「p」をつけるのは、メンバアクセス演算子の
「.」と「->」を間違えないようにするため。まあでも、最近はコンテナに
入れたポインタを一体どう表現したらいいものやらと悩むことしきり。
プレフィクス「p」も、いいかげん破綻気味だよ。

>>77
そういう状況の場合は、Singletonパターンをやってる。シンプルな
Meyers's Singletonを。もし知らないんなら、Effective C++を読もう。
というか、もし知らなくてグローバルにおいてるんなら、君のアプリは
謎のバグに悩まされてたりしないか?

>>79
別にいいんじゃ? 俺も今は使わなくなったよ。プレフィクスが
いくつか残ってるだけ。
ハンガリーって何?食えるの?美味いの?
ハンガリアン?
グローバル以外はうざったいだけ。

普通は関数を短く書くから、ちょっとスクロールさせれば宣言が見えるでそ?
構造体をtypedefするときはライブラリ関数をうまくつくって
上流のPG組む人にはメンバを意識させないようにするし。
これもハンガリアンと言っていいのかどうか知らんが、
物理量を区別するのにも便利。
freqHoge 周波数
voltHoge 電圧
currHoge 電流
pwrHoge 電力
dbHoge デシベル値
一度使ったら手離せません(w
8483:02/06/11 18:53
あと、intの場合、「i」と「n」を異常に使い分けてます。
>>81
食えるよ。ちょっと臭みがあって万人向けではないが、慣れるとそれがたまらないらしい。
>>81
下痢するからやめろ。
本来抽象化するための識別子に型名を入れるのはある意味逆行かもしれない。
仕様が変わりまくる仕事を3連発でやらされたときにそう思ったことがある。
実体が long なのに名前にshortが付いてたり、、、とか
88デフォルトの名無しさん:02/07/06 21:57
>>83
nFrequencyHogeとかでいいんじゃないの?
hoge_freq
hoge_volt
hoge_curr
hoge_pwr
hoge_db

つーかこうせんか?
struct Hoge {
  int freq, volt, curr, pwr, db;
};


Hogeは何の構造体ぢゃ?
周波数と電圧と電流と電力とデシベル値の構造体。
92デフォルトの名無しさん:02/07/07 00:29
てか、名前で型が変わるような言語にすればいいのに。
それは
a$ 文字列
a% 整数
a! 単精度浮動小数点数
a# 単精度浮動小数点数
というやつのことでしょうか。
>>93
DEFINT I-K

っていうか、版画利庵否定はいいんだけど、
あらゆる pref, suf を否定するのは勘弁してほしい。

メンバ変数かどうか、クラス変数(static)かどうかくらいつけてもいいだろう?


>>94
> あらゆる pref, suf を否定するのは勘弁してほしい。
してないよ?

> メンバ変数かどうか、クラス変数(static)かどうかくらいつけてもいいだろう?
型を明示しても無意味だと思うが、スコープを明示するのは意味あると思う。
> > メンバ変数かどうか、クラス変数(static)かどうかくらいつけてもいいだろう?
> 型を明示しても無意味だと思うが、スコープを明示するのは意味あると思う。

意味ねーよ
97デフォルトの名無しさん:02/08/17 02:26
こういう話題、夏房は好きそうだな。
98デフォルトの名無しさん:02/08/17 02:30
>>96
内側の変数が外側の変数を隠すのを防ぐためにも有用。
>>98
おまえ、死ね!
有用とか言ってるやつと仕事したくない。
101デフォルトの名無しさん:02/08/17 02:35
>>98
痛いヤシ
102デフォルトの名無しさん:02/08/17 02:42
>>98
面倒臭がらずに、
this->
付けろ。
>>102
禿同。thisとかself使えば名前にスコープの情報を持たせなくても
可読性はあがる。っていうか、用意されてるんだから使えよ・・・。

ハンガリアーンが有用なんていってる香具師で仕事の出来る奴見たことないぜ。
いるのかもしれんが、少なくともおれの周りにはいない。
104デフォルトの名無しさん:02/08/17 04:27
>>103
ローカル変数定義し忘れ or スペル間違いしててもコンパイルとおりそうだな。
プリフィクス(ハンガリアン含む)使う奴は馬鹿
変数の型が分からなくなるようなソースは糞
106デフォルトの名無しさん:02/08/17 04:42
>>105
そもそも、変数の型なんてわからなくても問題ないと思うが。
>106
たまに問題になるよ。
>>107
たまにねぇ。
俺はオブジェクトにしろ変数にしろ、常に型を意識してるが。
109デフォルトの名無しさん:02/08/17 05:23
>>108
間違ってたらコンパイラが指摘してくれる。
コンパイラが指摘できない問題は人間が意識してないといけないけど。
型名を含む変数名って、使うのはHWND -> hとかRECT -> rc
とか、それぐらいだな。名前考えるのがあんまり意味無い場合とか。
Windowsのイベントハンドラの引数HWND MSG WPARAM LPARAM -> h m w l
なんてそのまんま。これは型名とはちょっと違うか。
一時的な変数が多いときにrc_new, rc_old みたいなことはするかも。
それでもm_hogeとかは、まるっきり無意味なんでやらない。
>>105
その通り。だって保守性悪いもん、変数の型を意識しないといけない糞コードなんて。
>>110
プリフィクス使う奴は馬鹿
rc_new, rc_old
よっておまえも馬鹿
prefixなんて使う? >>110ならtmpとかにしとけばいいじゃん。
一時的に小さいブロックで使う変数ならtmpでいいし、他の変数と名前が
バッティングするなら変数に意味を持たせればイイ。
>>113まじでtmpで良いと思うか?
ウインドウズプログラムしてると、
rcFrame,rcClient,rcToolbarとかその他いろいろ同時に必要になるじゃん
FrameRect,ClientRect,ToolbarRectにするとか?
MFC使うとき->ハンガリアン
それ以外->not ハンガリアン
これで決まり。
>>114
変数名大文字は嫌いだ…(笑)。
それで良くない?変数の「意味」が分かってれば型なんて自ずと想像できるよ。

>MFC使うとき->ハンガリアン
>それ以外->not ハンガリアン
>これで決まり。
MFCの時もnot ハンガリアンです…自社のコーディング規約に
  ・ハンガリアン記法は使用しない事。変数名の付け方は以下に述べる方法で…
とか書いてあったYO!!
117115:02/08/17 11:17
おりもハンガリアン使いたくないけれどMFCのクラスにnot ハンガリアンを混ぜるの気持ち悪いよね。
当然規約優先で良いとおもうけれど。
>>117
確かに(笑)。読みやすくはなるけど、気持ち悪い。逆に他の言語でも
ハンガリアン使われると気持ち悪いしさ。MFCだけにしてくれって感じ。
定数 -> 全部大文字
参照 -> r
ポインタ -> p
性的変数 -> s

このくらいか…
漏れも>>110氏と同じで h、rc くらいしか付けないな。
たとえば一時オブジェクトで名前付けが面倒なとき
HPEN hpen = 〜;
とするか、
HPEN pen = 〜
とするか、どっち?
hpenはprefixにも見えるけど、一応構造待命そのままのつもり。
struct AAA_struct;だったら
aaaとするか、aaa_structとするかみたいな。
HPEN TmpPen = 〜;
>>122
それはちょっとイヤ過ぎるage
>>121 hpen_tmp
>121
HPEN pen;
もしくは
HPEN temp;
126デフォルトの名無しさん:02/08/17 23:34
http://hadakaa.up.to
ロリはここに逝ってよい!ゴラァ!
  iii■∧  /
━ (,, ゜Д゜) / ━━━━━ ∧∧━━    ∧∧
   |   つ ∇   (゜Д゜;)   (゜Д゜;)
   |  |┌─┐   /⊂   ヽ    /⊂  ヽ
 〜|  ||□|  √ ̄ (___ノ〜 √ ̄ (___ノ〜
   ∪∪ |   |  ||   ━┳┛  ||   ━┳┛
 ̄ ̄ ̄ ̄|   | ====∧==========
    / ̄ ̄ ̄ ̄ ̄ ̄ ̄   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |  すげー!!サンプルだけで抜けるよ!!!
127ななし@VB使い:02/08/18 00:18
今まで、他言語の経験もなく、VB(A)ばかりを使ってきたので、ハンガリアンスタイルを
肯定する立場でしたが、VB6のコードをVB.NETに移植したとき、プレフィクスと実際の型
が乖離するので、激しく鬱になりました。

(例)
VB6.0 Dim lngHoge As Long
 ↓
VB.NET Dim lngHoge As Integer

プリミティブな型だけなら、ハンガリアン記法のメリットが大きいという見方
もわからないではないけど、そもそも、C言語での数値オブジェクトのサイズは
処理系依存でしかない訳で、「型」を名前の一部にするのはリスクが大きいと
思います。(日本語下手糞でスマソ)
>>127
VBのもハンガリアンなのか?
ハンガリアン否定派に混じって命名規約全般徹底否定派が暗躍しているので
曖昧な所で「ハンガリアン」というのはやめれ
>>127
なんでC基準になってるんだ?
VB.NETはC#基準だから、型のサイズは規定されてるんじゃないの
130デフォルトの名無しさん:02/08/18 01:31
>>127
周りの言語がみんな標準の整数型が32ビットで
MS がコロコロ仕様変えるの好きなのがわかっているのに
ビットまで含んだ命名規約使ってたほうが悪い。
含んでいいのはせめて signed か unsigned かって事くらいか。

まあ lng は VB 標準の命名規約だったからしょうがないけど。
131デフォルトの名無しさん:02/08/18 04:15
VBって社会的な迷惑ですね
132ななし@VB使い:02/08/18 08:45
>>130
イヤ、それはわかりますけど、何しろMSがその命名を推奨してたんですから(苦笑)
VB6.0までは数値型の仕様変更がなかったので、破綻もなく、それなりに便利だった
のですが。
σ 的には、VB.NETへの移行のタイミングでハンガリアンスタイルを廃止するのがよい
機会かと。
133デフォルトの名無しさん:02/08/18 09:17
型を意識してプログラムを組むのは、当たり前だ。
型を意識しないでプログラミングなんて言うのは、
所詮、初心者プログラマだと思うが。

これと、ハンガリアン記法が趣味に合うかというのは別の話だし、
(実際、俺の趣味には合わない。)
ネーミングで型を明確にするのかというのも別の話だ。
ネーミングで型を明確にすると言うのは悪くもないと思うが、
MSの用にバシバシ仕様変更されると、移行作業で問題が出るだろう。

MSが.NETへの以降のためにつくった後付の理論を、
鵜呑みにしてる厨房がなんと多いことか。(夏休みの学生か?)
半狩り案は見た目が嫌だな。変数名に大文字と小文字が入るから
ソースが凸凹して読みにくい。
135デフォルトの名無しさん:02/08/18 12:52
>>134
じゃぁ、ptr_intとか、str_nameとかにしなさい。
136デフォルトの名無しさん:02/08/18 12:56
>>133
じゃぁ、仕様変更がほとんどない状況においての、ネーミングで型を明確にするメリットは?
137デフォルトの名無しさん:02/08/18 13:00
>>136
× ネーミングで型を明確にするメリットは?
○ ネーミングで型が明確になるのがメリット
138デフォルトの名無しさん:02/08/18 13:02
>>137
ネーミングで型が明確になっても嬉しいとは思わないけどなぁ。
139デフォルトの名無しさん:02/08/18 13:02
>>136-137
VB6.0まではその恩恵があったんですが。
140デフォルトの名無しさん:02/08/18 13:03
>>138
あんたは厨
141デフォルトの名無しさん:02/08/18 13:15
>>140
モジュールで定義されてる巨大な構造体の各メンバをユーザ側から
いちいち書き換えてた時にはまぁ、役に立ったけど。
それだってそもそも、想定される構造体操作関数くらい作っておけよ
という感じだし。
142デフォルトの名無しさん:02/08/18 13:34
>>141
暗黙のキャストとか気にならん?
143デフォルトの名無しさん:02/08/18 13:56
理由がない限り、特に気にしなくていいような型にしてるし。
小数→整数 変換なんて滅多に起こさないから、逆に目立つし。

ハンガリアン使わないと型がわからなくなる程大量の変数を
一つの関数にぶち込むことはまずないし。
144デフォルトの名無しさん:02/08/18 13:59
>>143
気になる状況など
俺にような優秀な人間には
存在しないってことね
145デフォルトの名無しさん:02/08/18 14:02
>>144
ハンガリアンに頼ってるような環境が普通以下だと思われ。
最高ですか?
147デフォルトの名無しさん:02/08/18 14:19
>>144
誤解してるかもしれないので念のため言っとくが
俺はハンガリアンなんて使ってないぞ
型を意識するのはプログラマの基本だと言っている
べつにネーミングでやらなくてもいい
148デフォルトの名無しさん:02/08/18 14:20
>>147>>144>>145 の間違い
>>147
なるべく意識しなくてすむようにするのが設計の基本だ。
150デフォルトの名無しさん:02/08/18 14:21
イチニ ハンガリアン
ニイニ ハンガリアン
ハンガリアン ハンガリアン
151デフォルトの名無しさん:02/08/18 14:26
>>149
お前は意識しなくてすむように設計しての実際意識しない
俺は意識しなくてすむように設計はするが意識はする
それだけの違いだ
まあ気にするな
ゲーム屋です
無駄な型変換をしないように意識したいので
int n
unsigned int u
float f
double d
を使ってます。無いと心労。
>>152
整数と小数の使い分けはまだわかる。
それ以上はそれらが混在するような状態が間違いなのでは?
(構造体やクラスのメンバ変数にシビアな型を持たせすぎとか…
ゲーム屋じゃ場合によってはしょうがないけど)
>>153
同意。数値計算とかだと全部小数とかでむしろ分かりやすい場合が多いんだけど、
ゲーム屋さんとかだと整数/小数が混在するから仕方無いと思う。

…けどint/unsignedとfloat/doubleはどうだろう…。個人的には使い分けるような
局面になったことがないから何とも言えないな。
>152
おまえの言う「無駄な型変換」の意味がわからん。

そもそもハードはどれ?
普通はdoubleなんか使わない。
大体unsignedなんか型変換したって実行効率には影響しないぞ?
>無駄な型変換
変数名に型情報がついてない-->変数の型が分からない-->とりあえずキャスト
マズー。
宣言を見ないでキャストするあなたが素敵
ジャンガリアン・ハムスター
159age:02/09/01 20:08
アイ━(゚∀゚)━( ゚∀)━(亜 ゚)━( 遺 )━(゚ 慕)━(∀゚ )━(゚∀゚)━ボ!!!!
ハンガリアン記法とモンゴリアンチョップってなにが違うんですか?
161 :02/10/18 23:48
お国が違う。
162デフォルトの名無しさん:02/10/19 02:57
要するに変数名に型情報なんて入れちゃったら動的束縛の際に
マズー、てことじゃないの? 仕様変更てのもレンジの差こそあれ、根は同じ。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
                       氏ねよ、クズが。
void Hoge::Bar(baz foo){
  this->foo = foo;
}
>>156
> 変数名に型情報がついてない-->変数の型が分からない

(・∀・) アフォ!
(・∀・) タイーホ!
(・∀・) fusianasan!

一体どういう局面で、変数名に型情報がないだけで型が分からないなんて状況になるんだ?
以前、グローバル変数てんこ盛りのソースを、
補完機能の無いエディタもgrepも使わず改造すれ、
という仕事した事があるが、この時ばかりは
「アフォどもはハンガリアン使っとけ」と激しく思った。
167デフォルトの名無しさん:02/10/19 20:52
>> 166
ナルホド、版画利安てアフォども救済のためにあったのか!!
ロッキー「ハ〜ンガ〜リア〜〜ン! ハ〜ンガ〜リア〜〜ン!」

ワーワー
>>166-167
あのなあ、その場合、変数名にジャンガリアン適用する前にする事が一杯あるだろ?
そして、それが済めばモンゴリアンは不要になるはずだが。
170167:02/10/20 19:44
もちろん漏れもそう思ったサ。
しかしその頃の漏れはまだ入社したばかりのペーペーで、
しかもその仕事ってのが銀行の基幹システムのモノだったから、
上からの指示無くしてソースに触れることが許されてなかったんだYO!

しかも指示っつーのが「日本語に変換されたソース」による変更例、もしくは
「このロジックを用いている場所は間違ってる」とか書いてあるだけで、
肝心の修正個所は「各自ソース見て洗い出せ」。

>>167のように思った漏れの気持ち、分かってくれよな?
171170:02/10/20 19:45
やな事思い出して感情が昂ぶってたせいかミステイク。
167ではなく166だった。スマソ。
172デフォルトの名無しさん:02/10/20 20:46
識別子の名付け方は暴乱堂のVCL、CLXやサンプルプログラムなどに準拠して付けてます。
>>170
気持ちはわかる、漏れもそんなソース/環境はイヤだ。
が、そういう気持ちになったのは、ソースがハンガリアン適用していないせいでは
ないだろう?
漏れが 169 で 「ジャンガリアン適用する前にする事が一杯あるだろ」 と書いた
のは 166 にそうしろというのではなく、166 の言うところの「アフォども」 に改善
してくれと要求するにしてもハンガリアンは関係無いだろ、という意味だ。
ハーンガーリア〜〜〜ン♪
かーのかっちゃん♪
175デフォルトの名無しさん:02/10/24 03:11
唐揚げ
ハンガリアンと唐揚げは、どっちがうまうま?
177デフォルトの名無しさん:02/10/25 04:12
腹減った、早く唐揚げをくれ
>>176
カニバリストには前者。
そうか、漏れは唐揚げだ
結論: 179の唐揚げが一番うまうま
ハンガリアンに喰われてこい >179
いやだ。漏れが食うのだ。
モンゴリアン マンセー!
サンガリアンは大阪人
ジャンガリアンはハムスター
モンゴリアンはマッチョマン
ハンガリアンは原始人
プレフィックスの話しに戻ってスマソ。

class CHoge{
private:
int m_instanceState;// インスタンス変数
static int sm_classState; //クラス変数
};

複数のスレッドから呼び出されるインスタンスの場合、
クラス変数なのか、インスタンス変数なのか気にならないか?

俺は気になる。
185 ◆i.HARPeeuc :02/10/30 03:56
>>184
いつでもクラスの宣言に戻って確認できますが何か?
つーかメンバ変数を外部から(直接)呼ぶ気ですか >>184 は。
しかも private だし…
>>186
「呼び出す」って言葉の使い方が変だけど(「参照する」では?)、
マルチスレッドの話をしてると思われ。
有用とか言ってるやつと仕事したくない。
cx ..幅, cy ..高さ というのは意義が理解できる
cxHogehoge .. Hogehogeの幅
cyHogehoge .. Hogehogeの高さ

p..ポインタ, r .. 参照も許せるな。
pHogehoge .. Hogehogeへのポインタ。
rHogehoge .. Hogehogeへの参照。

wHogehoge .. WORDのHogehoge
lHogehoge ... LONGのHogehoge
なんの意味があるんだろう。

k .. 日下部というのもいいかもしれない。
kIme .. 日下部が使っているIME。

つっこみどころ満載だから、やめておこう。。。
> k ..
(;´Д`)
knk
nxt
assert(kIme != ATOK);
とか?
193デフォルトの名無しさん:02/11/10 13:21
assertion failed!
そうか、漏れは唐揚げだ
相変わらずクソスレだなあ
ハンガリアンからしてクソなんだからしょうがない。
197デフォルトの名無しさん:02/11/14 17:10
えいごリアン
えいリアン
199デフォルトの名無しさん:02/11/15 16:36
すずきアン
こしアン
┌─────────────────────────┐
│☆☆☆☆☆☆☆―おいらの胸の心の愛 ―☆☆☆☆☆☆☆│
│☆    ┏━┓┏┳┓      ┏┳━━━┳━┓┏┓    ☆│
│☆    ┣━┫┃┃┣┳━━┛┣━┳┓┣━┛┃┃    ☆│
│☆    ┗━┛┣╋┛┗┳┓┏┛  ┃┣┛    ┃┃    ☆│
│☆    ┏━━┛┣┓┣┛┃┃┏━┛┃┏━━┛┃    ☆│
│☆    ┗━━━┛┗┛  ┗┛┗━━┛┗━━━┛    ☆│
│☆       ┏┳┓┏┳┓    ┏┳━━┳┳┓         ☆│
│☆       ┃┃┣┛  ┗┳━┛┃ ━ ┃┃┃         ☆│
│☆       ┃┃┣┓┃┏┻┓┏┫┏┓┃┃┃         ☆│
│☆       ┗┫┃┗┫┃  ┃┃┗┛┃┃┃┗┓       ☆│
│☆         ┗┛  ┗┛  ┗┛    ┗┻┻━┛       ☆│
│☆                             ▼▼▼▼   ☆│
│☆    本日 PM 3:00 開演   場所 空地      ・__・    ☆│
│☆             来ないやつは殺す    〇      ☆│
│☆                            3     .☆│
│☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆│
└─────────────────────────┘
どういう文字使うの > マジャル
ポーランド人が考え出したからポーランド記法。
M$も真似してハンガリー人が考えたから....。

>9
> っていうかな、これからの言語では「これはポインタ?」とか気にしなくて
> いい言語が主流になってくるのよ、Javaとかね。
Java/C#にもポインタがある。Java/C#ではポインタのことを参照と呼ぶ。
Java/C#で無いものはポインタではなくポインタ操作、メモリ操作、アドレス操作である。

> だから、型を気にしなきゃいけないC/C++は、どんどん廃れていく方向にあるわけ、絶滅はしないけど使われる分野は狭くなっていくのは確実。
> だから、廃れていくC/C++と一緒にハンガリアンもやめましょうってこった。
Java/C#はC/C++よりも強く型付け(very strongly typed)された言語だ。
Java/C#でハンガリアン記法をやめた理由は、グローバル関数、グローバル変数を宣言することができない(する必要が無い)からだ。
> >>13
> ハンガリアンを徹底的に排除するんでなくて、良い部分は残していけばいいんじゃないかと思いまして。
Javaの仕様では徹底的に排除しても支障はないと思います。
むしろ残しておくことは混乱を招く可能性が高まります。

> 俺が使っているハンガリアン(?)は
> m_ ・・・クラスのメンバ変数につける、これは俺も必要か疑わしい。
Java/C#にはグローバル変数を定義できないからJavaのフィールド(メンバ変数/属性)区別するものが無く、全く不要。
Javaでは、staticなフィールドはすべて final になるようなものを推奨されている。
純粋論者は インスタンスフィールド(staticでないフィールド(メンバ変数/属性))はすべてprivateにすべきだ、という。
>むしろメソッド(メンバ関数/操作)には
> s_ ・・・staticなメンバにつける。
Java/C#ではstaticなメソッド(メンバ関数/操作)は、インスタンスメソッドと違い、クラス名.メソッド名、として呼び出すためstaticかどうかはこれを見ただけで判断でき、不要。
むしろJavaでのメソッド名は動詞にすることを推奨されている。
例 :

public boolean compareTo(BigDecimal value){
//compareToメソッドの実装
}

public static boolean compareTo(BigDecimal value1, BigDecimal value2){
//compareToメソッドの実装
}
Java/C#では、staticフィールド(メンバ変数/属性)でかつfinalな変数は、すべて大文字で単語の区切りにアンダースコアで記述する。
例 : public static final String FINAL_VALUE_OF_STRING;

> g_ ・・・グローバル変数につける、グローバル変数使わないからこれも疑わしい。
Java/C#にはグローバル変数を定義できないから区別するものが無く、全く不要。

> p ・・・ポインタにつける、意図的にNULLが代入されている場合がある事がわかる。
Javaではクラスのコンストラクタが生成したオブジェクト,配列はすべて必ず参照変数となるため不要。Javaの値型はプリミティブ型(C/C++の基本データ型int, doubleなどと同じ)のみである。C#では、基本データ型を参照変数としても値変数としても定義できてしまう。
> C ・・・クラス名の先頭につける。
Javaではクラスを定義しそのスコープの内側でメソッドを実装なければコンパイルエラーとなるからつける必要が無い。
C#ではインターフェースと区別するためにCをつけたいときがあるそうだ。
逆に、インターフェース名の頭にIをつけるというM$のガイドラインがある。
(Javaではインターフェースとクラス、どちらを継承しているかの区別は、extends, implementsキーワード(C++/C#だと両方とも:を使うため区別できない)を見ただけでわかるためこのような区別は不要)。
Javaではむしろクラス名はできる限り名詞にすることが推奨されている。
ついでに、
Javaではパッケージ名(C#/C++のnamespace)にはドメイン名を付加することが推奨されている。
2chが開発したあるパッケージ名なら、 net.2ch.www.foo.bar とか。
C#ではなぜかパッケージ名の頭文字を大文字で宣言することを推奨している。これではクラスかパッケージかの区別がつきにくい。

C#ではなぜかメソッド(メンバ関数/操作)名の頭文字を大文字で宣言することを推奨している。
これではコンストラクタとメソッド(メンバ関数/操作)との区別が付きにくくなる。
Java厨
必死すぎてなんか哀れ
>>209
C# が大文字好きなのは Delphi の影響かもね。
212デフォルトの名無しさん:02/12/05 07:21
まあ、こんなのまで使って型を意識する必要はないよね。
あ、そーゆーとこ組む人は別ね。
ポインタになるやつはそれっぽい名前つけるし、
あえてきにすんのは少数か整数か?って程度か?
スコープに関してはやる意味がみつからん。
でも開発にうんこ野郎がいてグローバルとか使いまくってたら、
そら、ハンガリアンつかわな死ぬわな。
>>204-209
> Java/C#にはグローバル変数を定義できないからJavaのフィールド(メンバ変数/属性)区別するものが無く、全く不要。
なぜグローバル変数を定義できないから、メンバ変数だけの話になるか分からん。
メンバ変数を区別するのはグローバル変数の他にローカル変数があるだろ。

> 純粋論者は インスタンスフィールド(staticでないフィールド(メンバ変数/属性))はすべてprivateにすべきだ、という。
そして、フィールドにアクセスするときにはフィールド側にm_をつけるのではなくアクセッサ側にget setを
つけるわけだね。考え方としてはm_と同じなんだけどね。
ちなみにC#ではget setなんて余計なものをつけなくてもプロパティという方法でアクセッサと同じ利点が
得られる。そのときのプロパティ名と(private)メンバ変数名を区別するためにm_が有効。
ちなみにm_はスコープの話なのでハンガリアンではないのだが。

あと名前で役目を区別するのに省略形を使用するかそうでないのを使用するかの違いだけって言いたくなる点が多いね。
それじゃハンガリアン(?)の考え方自体を否定していることにならないんだけどね。
例 頭にCでクラス/名詞にしたらクラス sをつけたらstatic/すべて大文字で単語の(略)

おっと>>209ではあれほど型を気にすんなといっていたのに、クラスかパッケージ、
コンストラクタとメソッドは区別すんのか
>>213
> あと名前で役目を区別するのに省略形を使用するかそうでないのを使用するかの違いだけって言いたくなる点が多いね。
> それじゃハンガリアン(?)の考え方自体を否定していることにならないんだけどね。
ハンガリアンで使うのは、役目じゃなくて型名の省略形では。もっと原始的。
                          (・∀・)ハンガリアンイクナイ!!

=( ・A・)ハンガリアンイイ!!            (・∀・)ハンガリアンイクナイ!!

              ハンガリアンイイ( ・A・)(・∀・ )ハンガリアンイクナイ!!

                     バシバシ::ノヽ/て::
              ハンガリアンイイ!!( 'A`)ノ('∀` )ハンガリアンイクナイ!!
                        ::ヽヘ/::

(・∀・)ムハンガリアンイクナイ!!         Σ('A` )Σ('∀` )

(・∀・)ハンガリアンイクナイ!! イイ('A` )= ('∀` )=イクナイ!!

イクナイ!!(;・∀・)イイ!!('A` )('∀` )イクナイ!!

ワ-ワ- ,;;⌒;;;,'⌒';;⌒;,ワ-ワ-
    (,:;,ゞ.;:.:.: ;:;.:;. )
>>213
Java/C#で
フィールド(メンバ変数/属性)とローカル変数を区別するために変数名の頭に特定の文字をつける必要性が無いのは、
フィールドはクラスの内側直下のスコープ内にしか記述することができない。ローカル変数はメソッドの内側直下のスコープ内にしか記述することができない。
これにより、変数名を見なくても一目見ただけでローカル変数とフィールドの区別が簡単にできる。だから不要・

C#のget,setは独自に改良し、オーバーロード、オーバーライドすることはできないのか?

メソッドは頭文字すべて小文字にすればきにするほどの問題はない。
コンストラクタはクラス名と同じで、クラスの頭文字は大文字によりコンストラクタも必然的に大文字になる。

そうすることで、これらのクラスからインスタンスを生成し、実際に使用したとき、コードの可読性に悪影響をほとんど与えない。

型名を気にしないとは言っていない。
型名の頭にIやCをつけるよりも一目見ただけでクラスがどのような振る舞い、機能を持っているかが解るような名前(モデル名)にすべきだということである。
これはグローバル変数である、とかローカル変数であるとかインターフェースであるとかクラスであるとかいう情報よりも
それが何をするためクラスか、何をするためのメソッドか、どのようなものをあらわす変数かが簡単にイメージできるような情報を名前に含める方が重要である。

XP, RUP的な発想では解りやすさが重要視される。
どうだ?
>>216
> フィールドはクラスの内側直下のスコープ内にしか記述することができない。ローカル変数はメソッドの内側直下のスコープ内にしか記述することができない。
へー。フィールドはメソッドから見えないんだー。
メソッド内にa++とあってこのaがフィールドかローカル変数かどうやって区別するのかな?

> C#のget,setは独自に改良し、オーバーロード、オーバーライドすることはできないのか?
出来るに決まってんじゃん。アフォですか?
218デフォルトの名無しさん:02/12/24 08:41
>へー。フィールドはメソッドから見えないんだー。
見えるに決まってんじゃん。お前こそアフォですか?
{}と (){}の違いで区別できるだろが。

C#に独自のget,setがあったとしてもそれほどのメリットを享受できるとは思わないな。そもそもそんな話には興味が無い。
219bloom:02/12/24 08:45
>>218
> 見えるに決まってんじゃん。お前こそアフォですか?
皮肉ですよ(プ

> メソッド内にa++とあってこのaがフィールドかローカル変数かどうやって区別するのかな?
この質問に答えてください。

> C#に独自のget,setがあったとしてもそれほどのメリットを享受できるとは思わないな。そもそもそんな話には興味が無い。
興味が無いなら持ち出すな。
>>220
お前暇人ですね。C#信者ですね?

>この質問に答えてください。
なるほど。フィールドと同じ名のローカルではバッティングする説明がなかったな。
とりあえずthis使え

get,setを持ち出したのは >>216
>>221
> とりあえずthis使え
それはそれで一つの案だな。
常にthisをつけると決めるのであれば名前で区別できるようにする必要はない。

> get,setを持ち出したのは >>216
その通りだ。誰に言ってるか分かりにくいから今度からはリダイレクトつけるようにしろ。
思いっきり古い発言にオフトピするのでageない。

>変数の先頭に型情報を名づけるアフォ言語=Perl
で納得されてるようだがそれ少し違うと思う(^^;
Perlの記号プレフィクスは、

$ 汎用スカラ変数
@ スカラ変数の集合による配列
% スカラ変数の集合によるハッシュ(awkの連想配列相当)
& 関数(サブルーチンやメソッド)“前方参照でなければ省略可”
* 同名の上記4種の集合(グロブ名) (void型に近い?)

っつー機能分類記号で、どっちかっというと演算子に近い。
なので、文字列なのか整数なのか浮動小数点なのかとか
そういう変数型分類とは全然関係ないので
ハンガリアンも使いたくなる場面は多いのよ。
特に $pstr = \$str みたくリファレンスの間接参照を
通常変数と混在させざるをえないときとか。
なのでクラス定義多用でオブジェクトにカプセル化
してかないと、なかなかすっきりせんのだわ(^^;

(汚い言語仕様であることは否定しないが、もともとストリームエディタ系簡易言語だしぃ?)
(これでも御先祖様の sed と比較すれば相当な進化だよ)
> 思いっきり古い発言にオフトピするのでageない。

対象が古くても、発言に対するレスならオフトピとは言わないと思うが・・・。
sed よりも awk の方が、より近い先祖だと思うが...
















で、awk に比べると退化...
>>217
なにか?
>>586
オナーニ中
>>124
国境を越えた各国警察の合同捜査により
逮捕
>>157
あー言っちゃったよ
あいたた
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
yahooニュースのトップ項目に載るほどのことか
>>183
きわめてそれっぽい
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
識別子の名付け方は暴乱堂のVCL、CLXやサンプルプログラムなどに準拠して付けてます。
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。

二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm

ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
もう始まってるんだね。
この板も既に対象に・・・

http://headlines.yahoo.co.jp/hl?a=20030109-00000021-zdn-sci
>>948
それは同意。
匿名だから何をしてもいい。と思っている香具師が多すぎる。

HP荒らしとか個人情報貼り付けとか嘘の犯罪予告とか。
とにかく多くの人を釣り逃げ煽り逃げ荒らし逃げすればいいと思っている奴が多い
削除依頼板作業所に貼ったほうが良い予感
                   /\        /\
                   /:::::::ヽ____/::::::::ヽ、
                  丿 ::.__  .:::::::::::::  __  ::::ヽ_
                 / /。 ヽ_ヽv /: /。ヽ  ::::::ヽ
 -┼-   丿~~~|     / / ̄ ̄√___丶  ̄ ̄\  ::::|            ■ ■
 -┼-   /~~~~/ ━━━ | .:::::::::: / / tーーー|ヽ     ..::::: ::|━━━━━━  ▼ ▼ 
  .|       丿      | .:::::.  ..: |    |ヽ        ::|            ● ●
                | :::    | |⊂ニヽ| |      :::::| \
              / /| :    | |  |:::T::::| !      .::| \ \\
             / / \:    ト--^^^^^┤      丿 \\\ \\\

                      お、大阪・・・・        
相手のIP教えていただくには
どういった手続きをとればいいんですかね?
ACCS、任天堂、警察のみなさ〜ん!!
24歳童貞もよ(ニュー速いちのうんこ好き) ◆RKlw/UJGqg
が著作権侵害の犯罪教唆しましたよ〜!!
http://live2.2ch.net/test/read.cgi/news/1041919882/717


717 :24歳童貞もよ(ニュー速いちのうんこ好き) ◆RKlw/UJGqg :03/01/09 00:01 ID:PgSHqi/K
>>699
おまいら買ったらすぐにnyに流せよ。

ハイテク捜査課に通報しますた。
じゃ、俺も串で
http://headlines.yahoo.co.jp/hl?a=20030109-00000021-zdn-sci

一応ニュースになるんだね。
公衆に向かって電波ゆんゆんなカキコを垂れ流す事では。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
よしゆき陥落したかヽ(`Д´)ノ ウワァァァン
こういう物は量より質です。はい。
質があるかはしりませんが(w
そういうのは厳しくなりそう
P2Pとかに潜るんでしょう
暴力団なんて散弾銃向けて追い出せばいいじゃねーか。
持ってないの?散弾銃。
 自分が2chにこなくても、風評被害が出てしまっては取り返しが
付きませんので。
そういうことだったんですか(^_^;)
でもね・・・
そ ん な こ と は 一 秒 あ れ ば 思 い 付 く こ と
だと思いませんか?(^_^;)
つまり、今の手法ってのが選ばれたってことから
そのやり方は選択されなかったことは自明かと・・・・。
ドピュッ!タラーリ
すまん!2連かきになっちまった!俺はマンコとしかかけない小心者なんでメロンパンとは別だからな!!
ウソでも言うな!
にちゃんはもう終わりだな
GAっていつのまに2ちゃんねるアニメランキング1位になったんだ?(w
2ちゃんを叩く連中の主張には一辺の理もないの
アンダスタン?(^_^;)
gannbattekudasai
260山崎渉:03/01/13 18:53
(^^)
ということはなにか固定のほとんどは地方出身だということか。
262山崎渉:03/01/15 18:08
(^^)
263山崎渉:03/01/23 22:14
(^^)
お国が違う。
荒すな
266デフォルトの名無しさん:03/01/30 23:23
つーか識別子ぐらい自由につけさせてくれ
267デフォルトの名無しさん:03/03/02 03:29
ageてみる
ハンガリアンってハングル文字使ってる人のこと?
それはハングラー
ハンガリアンっておなか減ってる人のこと?
ハングリアンってCMあったな昔
ハンバーグラーっていつの間にか抹殺されてたよな。
脱獄囚が再収用されたんだろ
274山崎渉:03/04/17 16:01
(^^)
275山崎渉:03/04/20 03:58
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
276山崎渉:03/05/28 13:17
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
>>>>>>>>>>
>>1
>>みんなだってポインタの先頭には「p」とか書くだろ?

書かねーよ
>>278
書くよ…。
むしろケツだな。
>>278
書くよ…。
識別子の名付け方は暴乱堂のVCL、CLXやサンプルプログラムなどに準拠して付けてます。
>>278
ポインターは真似るな。
クラスメンバーのm_XXXがぜったいに作らない。
つーかMSめんどくせーもんつけるなよといいたい。
284山崎 渉:03/08/02 02:37
(^^)
285デフォルトの名無しさん:03/08/03 08:02
C++でメンバ変数を全部構造体にまとめてるんですけど、
コーディングスタイルとしてはどうでしょうか?
自分としては、m_をつけるよりもスマートだと思ってますが・・・。

class CFoo
{
public:
void Clear(void) { ZeroMemory(&m, sizeof(m)); };
// 〜省略〜
private:

// メンバ変数
struct {
int X;
int Y;
bool Active;
} m;

};
286_:03/08/03 08:10
287_:03/08/03 08:25
288デフォルトの名無しさん:03/08/03 12:48
版画利案なんておっさんプログラマーしか使わん
ヤングはJava的記法だよ。
ハンガリアンダイナマイトォォォォォォォォォォッ!!!!!
>>285
C++じゃないけど、VBの仕事の時にグローバル変数でそんな感じでやってた。
コード補完ができて一石二鳥。C++じゃないので::とか言わないように。
ハンガリアンチョップ
292デフォルトの名無しさん:03/08/05 12:08
ん〜・・・少なくてもCやC++なら犯狩庵でもいいと思うけどなぁ〜。
Javaなら要らんかもしれないけど、クセでやっちゃうな。
つーかハンガリアンを否定している奴の気が知れない。
クラスの始めはCで始めるとか大文字で始めるとか
メソッドなら小文字で始めるとか
ローカル変数には_を付けるとか
無駄なものはいくらでも有る。
294lisper:03/08/05 12:19
やっぱ p は predicate だよね
>>293
無駄だと思うなら、やめればいい。
つか、ハンガリアンじゃなかったらどう書くのよ
297デフォルトの名無しさん:03/08/05 17:46
BCBの書き方(型名じゃなくてプロパティの名前ね)が結構好き。
Pascalっぽいっていうのかな?
ポインタと参照はほかと区別するべきだと思うが、
それ以外で面倒なprefixを付ける理由が分からない。
変数名を見ただけで大体分かるような名前付けをするべき。
スコープはほかと区別するべきだと思うが、
それ以外で面倒なprefixを付ける理由が分からない。
変数名を見ただけで大体分かるような名前付けをするべき。
データ型はほかと区別するべきだと思うが、
それ以外で面倒なprefixを付ける理由が分からない。
変数名を見ただけで大体分かるような名前付けをするべき。
>>298
ポインタと参照も分かるような名前を付けろよ。
HogePointerとかHogeReferenceとかさぁ。
iCountだったらCountIntegerだ。
CFooじゃなくてFooClassとすればもっと分かりやすいし。
大文字で始まる名詞はCとかつけるまでもなくクラス。
そもそもこれまで、世界で最も大きく最も成功しているソフトハウスであるMSが
全面的に採用していたにもかかわらず、
ハンガリアンは支持と不支持がまっぷたつに分かれてたわけだろ?

MSがいち抜けた今、天秤がどっちに傾くかは核爆発を見るより明らかだろうが。
沈みかけの泥舟からはさっさと脱出しなさい。
>>302
そんな糞ルールつくんなって。小文字だろうが大文字だろうが
クラスはクラスだろ。コード見れば分かる。
iで始まる名詞はint型とか大文字で始まる名詞はクラスとかイヤになる。
305デフォルトの名無しさん:03/08/05 21:14
エディタで細かく色分けしてくれれば、そもそも命名規則なんてつける必要ないのかもよ?
まぁ、最初は色覚えるのに苦労するかも知れないけど。
命名規則なんて人間がその場で分かるようにするためのものよ。
コンパイラのためでもないし、遠く離れた定義見れば分かるから
いらないと言うものじゃない。

iloopと書いてあるだけでintのloop用変数と分かる。便利じゃないか。
Cプログラマは変数宣言を関数の頭でする癖を持ってる人が多いってことが
命名に影響を与えてる気はする。
これが普通のJavaプログラマだったら、変数は使う直前で宣言する。
スコープが小さいから一目で型が何なのか分かる。
少なくともprefixに型名を加えること(>>306のiloop)はない。
>>307
つまりスコープが遠い位置にあるメンバ変数などにはprefixをつけろと。
>>308
メンバ変数は宣言自体が見当たらない、
そして開発者にとってクラスのメンバ変数名が何であるか知ってるはずであり、
型は自明であるから付ける必要はない。
つうか、グローバル変数なんてもんがあるのも原因かもなー
311私見:03/08/06 01:06
つーかprefix,suffixの有無くらいでソースが読みにくくなるとか
言ってる香具師は修行が足らん。

が、最低限グローバルオブジェクトはプロジェクト内で、
ローカルオブジェクトはメソッド単位で、というように
スコープ範囲とスコープが一致するモノ同士は
統一されるべき。

例えばメソッドA,メソッドBのローカル変数の命名規約は、
各関数内で統一されてりゃ問題無い。
が、メソッドA,Bの属するクラスCのメンバは統一されるべき。
だがクラスDのメンバと統一する必要は無い。
(強い関連を持ってるなら統一すべきだが)
312デフォルトの名無しさん:03/08/06 01:40

我流ほど危険な物はない。
ハンガリアン記法は、天才プログラマーが作った物なんだから
あれこれと批判しないで、それに従って自分の物にすべき。
結局は、それが最良の道だ。
俺は変数名はとにかく短くしたいので、a b c d e f というようにつけてます。
俺も覚えはじめはそうだったけど、あとあと泣く羽目になるんだよな
正直おいらのソースなんか誰も見ないからまったく関係ない
>>307
変数宣言しないBASICサイキョ
> そして開発者にとってクラスのメンバ変数名が何であるか知ってるはずであり、
他人が作ったとか、忘れるとか、思いつかないんだろうか?

> 型は自明であるから付ける必要はない。
自明でないのは自明であるから付ける必要がある。つーか「自明」って説明できないだけでしょ。

count ← ほら何型か言ってごらん(w

318デフォルトの名無しさん:03/08/06 16:00
ハンガリアンチョップ
319_:03/08/06 16:06
>>317への反論
定義を見れば分かる。

↑の反論
だったらa b cとかもコメントを見れば分かるな。
そういうことじゃないでしょ。
定義やコメントを見なくてもわかるようにしようね。
>>317
多くの場合整数型だろうなぁ
ようし。次の問題だ。
color ← 何型だ?
323デフォルトの名無しさん:03/08/06 16:22
COLORREF
324デフォルトの名無しさん:03/08/06 16:25
最新のIDEを使えば
その場で型もコメントも定義も分かる。
これはテキストエディタでは不可能なことだ。

    I D E マ ン セ ー
>>317
>>そして開発者にとってクラスのメンバ変数名が何であるか知ってるはずであり、
>他人が作ったとか、忘れるとか、思いつかないんだろうか?
メンバ変数くらいIDEで確認しろよ。
>>324-325
IDE厨氏ね。世の中にはテキストエディタを使わなきゃならない
かわいそうな奴らもいるんだよ。
>>327
兎に角、一目で分かる名前付けしてみろってことだ。
>>326な。
>>323 ハズレ
>>327
なるほど、型名も一目で分かるprefix肯定派ですね。
なんつうか、C系言語はIDEが糞なんだろうな。
全てのC++プログラマはOOでプログラムしろ!
グローバル変数なんて使うな!
プリプロセッサ(#define)も使うな!

といってみるテスト。
コメント使えばいいだけだろ
>>324
IDEつかわんでも言語仕様によってはすぐにわかってしまうものがあったりする。
Javaとか。
>>332
ついでに、ポインタ演算もメモリ操作も構造体も共用体もオペレータ定義も
グローバル関数も実装多重継承
使うな!

といってみるテストを追加してみてはと一定見るテスト。

C++のコンパイラでグローバル変数などを使用するとコンパイルエラーを
吐き出すようなオプションがあれば楽チンのようじゃが。
theAppとかもトップレベルの関数もしくはクラスの静的メソッド/プロパティで
取得すんの?
>>332,335
boostのソースでも見てこい。
>>337
見た。
久しぶりにCソース見たってのもあるけど、完全に意味不明。
正直ハンガリアンを少し認めてしまった。使用がないのかも・・・
シンプルなJavaマンセーってな感じです。
グローバル変数は初期化順序の問題があるからC++じゃ使わないだろ
cin,cout
341デフォルトの名無しさん:03/08/09 00:25
> グローバル変数は初期化順序の問題があるからC++じゃ使わないだろ
シングルトンなオブジェクトをグローバルにしてる。
>>341
それはSingletonパターンにしたクラスがどうしてもグローバル変数に
なってしまうのだということをいいたい?
>>337
新規に開発するときは>>332,335の言うとおりにすべきだと思うのさ。
ふるいのを流用するならアダプタクラスを使ってどうにかしたほうがいいと
思うなあ。
344デフォルトの名無しさん:03/08/09 01:10
  ∧_∧__フムフム・・
 ( ´ー`/  /
 (   ,/_〇                   ♪
 |   |旦                ♪   ∧∧ セッケイショ
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|            ヽ(゚∀゚)ノ   デキマシタ!!
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |             (  へ)
  |              |             く


   ∧_∧  ハンゴリアーン!!
 |\ΦДΦ)   /|
 ○ <  ζ) <  ○                   人人
 | >  旦  > |               <   ∧∧  キュワアアアアア!!!
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|              ヽ(゚Д゚ )ノ
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |                (  へ)
  |              |                 く
345デフォルトの名無しさん:03/08/09 02:19
VisualStudio.Netだと変数にカーソル合わせるだけで
型名がわかるから無理にハンガリアン記法にする必要は無いと聞いたが
おい、そのまえにVS.NETなどというIDE使わずとも、言語仕様から
余計なゴミ(グローバルシリーズなど)を排除することで無理に
バンガリアンにする必要がない理由はいくらでもあるわい。

というのはC++とJavaやC#などを比較した場合などに限った話だが。
>>346
ローカル変数とクラス変数を廃止してから言ってください。
>>347は何もわかっていないようだ
349341:03/08/09 10:46
>>342
そうともいう。
>>347
それでどうやってプログラムを組むのだ
使うのはこんなもんスね。ほかはいらん。
メンバ変数 m_Age;
ポインタ pFriend;
ポインタなメンバ変数 m_pMother;
真偽値 bDead;
真偽値なメンバ変数 m_bMarried;
あとグローバル変数 g_, ファイルスコープ内のスタティック変数 s_
ぐらいは使ってるな。逆に bool の b は使ってない。m_isCacheValid
みたいな名前にしちゃってる。
>>347
>>350
わかってないねぇ。
たとえグローバル変数をなくしてもローカル変数やクラス変数があるのだから
ハンガリアンにする理由はなくならないんだよ。
それにSingletonというグローバル変数までなくすことは出来ない。
スコープ情報を変数名につけるのはハンガリアンとは違うだろ
ハンガリアンについては、別に「これがハンガリアン」という厳密な
定義はないからねぇ。みんな俺ハンガリアンの話をする。
ハンガリアンってプリフィクスのことか?
m_
s_
g_
p
あたりはハンガリアン由来では?
p_はハンガリアンだがm_, s_, g_はハンガリアンではない。ただのプリフィクス
359デフォルトの名無しさん:03/08/11 01:40
>>353
クラス変数なんて、

クラス名.静的変数名

とかくだけでわかるからJavaやC#でいちいちハンガリアンにする
馬鹿なことをする必要もないのだが。
>>359
お前は自分のクラスのクラス変数に
いちいちクラス名をつけているのか?(w
typedef CHoge ThisClass;

...

ThisClass.StaticProperty;
362デフォルトの名無しさん:03/08/11 09:23
スレタイで笑った
ほんとにハンガリーの人は、ポインタの前に p ってつけたり、
整数型の変数の前に int って付けたりしてるんですか?
>>363
コイツ クサッ
>>360
アホ。外部から使うときだけにきまっとるだろうが。

Javaで定数を定義するときはpublic static finalにして
アンダースコアで区切って全部大文字にしろというのがあるな。

インスタンスフィールドを定義するときはメソッドと同じような文字区切り、
わかりやすい名前にしろと。

インスタンスフィールドとローカル変数との区別は、
thisキーワードを使って

this.インスタンスフィールド

とかけばよい。むしろthisキーワードはそのためにあるようなもの。


スーパークラスのインスタンスフィールドを呼び出すときも

super.インスタンスフィールド

かけばよい。

ハンガリアンの必要性も全くない。
Javaならそれでもいいんだけど
C++においてはthis->nameになってなんかイヤダ。
this.nameとかけるなら俺はそうするんだけど・・・
#define (*this) This
>>367
逆ですよ?
>>366
そんなときは参照っすよ、参照!
this.nameよりも、this->nameのほうが速そうな印象を受ける。
ただ、思ったこと書いてみただけsage
>>365
>インスタンスフィールドとローカル変数との区別は
>thisキーワードを使って

同一クラス内でも常にアクセサを使って取得するってのはどうよ。
インスタンスフィールドに直に触れるのはアクセサ内とコンストラクタ内に限定。

private int foo;
public int getFoo() { return foo; }

のとき this.foo も foo もダメで常に getFoo()。
あるいはローカルに int foo = getFoo(); とコピーしてアクセス。
フィールドもメソッドも必ずthis付けてる。
メソッドの場合、this付けないとstaticメソッドと勘違いする可能性があり、
効率が悪くなると思うがどうよ?
>>372
static メソッドこそクラス名を頭に書くだろ。自クラス内だとしても。
374372:03/08/13 01:55
>>373
そういう手もあったか。
漏れはstaticメソッドはCなどでいう関数の意識が強い(特にprivate staticなメソッド)から、
何も付けてない。
実際のところどっちが多いのよ?
1--------
インスタンスメソッド:this付き
クラスメソッド:何もつけない
2--------
インスタンスメソッド:何もつけない
staticメソッド:クラス名付き
ネイティブハンガリー人だけど、何か質問ある?
こんにちは、世界をハンガリアンで書いて
もしかしたら、文字化けして変に表示されるかも

ウンーコタベテーロ
>>377
氏ね
自クラス内のメソッドはどちらにしても何も付けないと誤読しやすい。
static メソッドをクラス名修飾付で、というのはやっていなかったが
これからそうしようと思う。
2ちゃんを見てるのも無駄ではなかった。Thanks.
380山崎 渉:03/08/15 15:45
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
381デフォルトの名無しさん:03/08/16 11:21
ちょっとまってジャンガリアン
私、ジャンガリアン。名前はリコです。
皆私をジャガリコって呼んでます。
ヨロシクね。ムホッ
Msgとかがハンガリアンっていうやつなんですか?
msg
cnt
ptr
wnd
prc
保守sage
エヴァンゲリアンは駄目なんですか?
オブジェクトは変数名のあとにつけよう。

hoge *unkohoge=new hoge;
delete unkohoge;

お忘れですか?
こんばんわ馬鹿避けの隔離スレですよ?
389デフォルトの名無しさん:03/09/18 07:25
ちょっと待て!英語リアン
ちょっと待て!デロリアン
ちょっと待て!バタリアン
390○に入る文字を入れよ:03/09/19 15:26
ちょっと待て!赤毛の
ちょっと待て!毛無し
ちょっと待て!のし○
391デフォルトの名無しさん:03/09/19 22:49
今月のCマガで宮坂電人がハンガリアン批判してるね。
lpsz萌え
a long pointer to string that is zero tarminated.
'l' 'p' 's' 'z' '\n'
395元ハンガリアン使用者:03/09/23 05:04
今でもポインタの pHoge だけは使っておりますが、他は時代にそぐわないでしょう。
そんなハンガリアンのエピタフを考えました。

利点は大きかったが、欠点はもっと大きかった。

REST IN PEACE.
モンゴリアン記法でも考えようぜ
モッコリまん呼称も考えまふ
ハンガリアン使いって、とにかくプリフィックスさえつければ無問題と思ってるから
クラスや変数のネーミングがめちゃくちゃ。

まあ、言語的センスのないプログラマが多い職場にはおすすめの規約だろうよ。
>まあ、言語的センスのないプログラマが多い職場にはおすすめの規約だろうよ。
日本国内では極めて有効っと φ(.. )メモメモ
 long lIllegalIndex;
 long illegal_index;

下のほうが断然見やすいと思うのは漏れだけか。
401デフォルトの名無しさん:03/09/24 02:00
>>400
断然、君だけです。
ハンガリアンはハングルのぱくりニダ!
>>400
そんなイリーガルな変数名持ってこられても困るよ
>>400
ネーミングが気持ち悪いほど悪趣味だね
もしかしてJava厨?
405ヽ(´ー`)ノ:03/09/24 14:18
キャメルノーテーションは書き易いが読みにくい…と思うのだがどうか。
>>404
オマエは、何でもかんでもJava厨で片づける厨だな

Javaは illegalIndex だろ
漏れは Illegal より Invalid のが好き。

と思ったら無効と不正って良く考えたら意味違うな。
408400:03/09/25 01:12
>>404
大文字の I と小文字の l が並ぶ変数名をでっちあげただけなんだが。
ハンガリアンが見やすいとか言ってる香具師への反証と思いねぇ。

#読みやすい単語で付けろとか言い出したりして…
>>408
あのー、ハンガリアンって何だか知ってます?
とりあえず、全角英数で変数名つける香具師は氏ね。
全角でコンパイル通るのか?
>>411
志村〜UNICODE!UNICODE!
とりあえず、変数名や関数名に大文字が入ってると
すごく違和感がある
というか、ハンガリアンは読みにくいんだよね
え、UNICODEなら通るのかよ。知らなかった。
415デフォルトの名無しさん:03/10/06 03:32
うにこーどに半角も全角もねぇ。
昔の“常識”,今の“非常識”
ttp://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20031002/1/
新人プログラマです
もしその変数が外部変数で構造体へのポインタのときどうつけますか?
pExKouzoutai
p移行の形容ごとに大文字にする癖があるんですがどうでしょう
使うなって言ってんだろうが、ゴルァ(#゚Д゚)
419デフォルトの名無しさん:03/10/07 06:57
>>417
外部変数使うな。
pSomeStructure
でいいんでないの?
420417:03/10/07 12:28
>>418
じゃどういう基準でつけたらいいでつか?

>>419
つかいたくないのは激しく同意なんですが
制御関係になったらいるなーという感じです

ちなみにクラス、関数、メソッドの命名規約も
個人のオナニーだと思いました。ぜんぜん呪文ですね・・・
>>420
>制御関係になったらいるなーという感じです

要りません。
プログラマの悪い癖です。
自分の分野は教科書通りの分野じゃないから教科書に載っている通りにはならないと言って逃げないで下さい。
教科書通りの分野なんてこの世に存在しません。
グローバル変数は!!必要ありません!!
>>421
いや…、あとでハード接続するときとかどうしても必要なときがあるんだ。
外部ハードがまだ準備されてないときにグローバル変数を用意して、
そのハードのレジスタだと見立ててプログラムを組むときがあるんだよ。
もちろんハード屋から物が上がってくればレジスタに置き換えるから
最終的にはグローバル変数はなくなるんだが…一時的には使うんだな。

自分の分野じゃないから知らないとか言わないでそういうこともあるんだと理解して欲しい。
>>422
その話がどうして

>どうしても必要なとき

になると思うのか知りたい。
お前必要だと思い込んでるだけちゃうんかと。
424423:03/10/20 05:56
>>422
君が何を読んだのかわかったよ
http://pc2.2ch.net/test/read.cgi/tech/1056716338/674-678

人から聞いた話だけで判断するなよ。
いいか、もう一度繰り返す。

お前必要だと思い込んでるだけちゃうんかと。
それこそ抽象化しておくべき物とちゃうんかと。
>>424
´д`)ノ教えてエライ人。
定数としてグローバルなconst変数定義するのは間違い?
代わりにどう書けば良いの?
ノリタガリアン大満足

・・・死ね。
427423:03/10/24 19:18
>>425
クラスの public static const メンバにする。
ついでに言うと typedef も クラス内でする。
どちらも ClassName::ConstantName みたいな書き方で使える。
何に使うべきなのか、どこに責任があるのかがソースを見ただけで明らかなのが良い。
グローバルに置くと名前が被るのが怖いし、何の目的なのか忘れた時などにいちいち調べなければならなかったりする。

とかいいつつ漏れは趣味で書く時は一つだけ例外的にグローバルにしてるのがある。
EffectiveC++に書いてあったフールプルーフなNullをちょこちょこ変更してるのがあるのだが、
それだけはグローバルに置いた。
何で名前空間を使わない。馬鹿か
429423:03/10/24 23:52
>>428
俺に対してのレスか?
だとしたら使ってるぞ。

それでも定数はクラス内に書く。大抵の場合は一番関係が深いクラスが存在するからな。
つまり名前空間の中にあるクラスの中に、だ。
nullをグローバルに置いたのは利便性とある種の不思議な感覚があった為だ。
不思議な感覚とは、Nullクラスをいじっている間、ライブラリやアプリケーションを書いているというより、
C++を拡張している、C++の言語仕様にあるべきだったのに足りなかった物を追加しているような錯覚を感じたからだ。
これこそがC++の本当に面白い所だと思う。
何だエラそうな事言って結局使ってるんじゃん。
ツマンネーノ。
ハンガリアンというと、ロッキーに出てきた……
423は結局エスケープですか。
ハンガリー語は日本語と語順が一緒なんだぞオ!!
というか英語みたいなSVO型言語よりも日本語みたいなSOV型言語のほうが種類は多いんだが
日本語、韓国語、モンゴル語、トルコ語、ハンガリー語、フィンランド語
他には?
言語学に関する本でも読んでくれ。
言語学の本を読んだところ、Forth 言語は日本語との類似性が認められマスタ。
Lisp言語は、VSO型言語
439431:03/10/26 23:13
誰もツッコミを入れてくれない。しくしく。
>>439
ツッコめないんで、ジサクジエンで突っ込み入れてくれ!
ぬおぉぉぉぉぉ遅くなってすまなんだ!

>>431
それを言うなら海老ドリアだろ?


これで満足か?
で、LonghornのWinFXはハンガリアン使ってるんですか?
どうよ。
とうの昔に MS はハンガリアンを捨てたわけだが。
444ケンケン:03/10/30 22:47
シシシシシシシシシ
445441:03/11/07 06:40
>>431
ツッコミ入れたのに反応なしかコノヤロー!
446431:03/11/07 10:00
>>441
ぎゃふん。
447デフォルトの名無しさん:03/11/07 17:00
>>445
ひねりすぎだ。
アリアハン
アハンああん
ttp://pc2.2ch.net/test/read.cgi/tech/1003674814/
相互リンクーヽ(´ー`)ノ
451デフォルトの名無しさん:03/12/13 00:15
>>93
QB: A& 長整数
VB: A@ 通貨

の新参者もよろしくな。
ランボー
ハンガリー人、ハンガリー語とは普通言わん。
(前者はハンガリー国民、という意味では使うが)
民族名、言語名はマジャール人、マジャール語だ。
覚えておけ馬鹿ども。
同じ意味でフィンランド語とは言わん、フィン語だ。>>435
455デフォルトの名無しさん:03/12/16 13:38
ハンガリアンデストロイヤーって技無かったっけ
「太陽戦隊」だったっけ?
457デフォルトの名無しさん:04/03/30 10:26
ageとく
array global enum
昔のログインに載ってたっけ。こんなとき、こんな一言。
試合を終えたロッキーが観客をかき分けて叫んだ一言。
ちなみに全部別人の投稿。多かったのは「メガネメガネ」だったそう。

「こんなグローブじゃ外野守れないよ!」
>それでもプロか!

...

「エビドリア〜」
>腹へったんか。

「エイリア〜ン」
>彼女かい。

「プレデタ〜」
>もう、何もかも間違ってる。
>>10
今更だけどLPVOID pvABCじゃないか
461デフォルトの名無しさん:04/06/15 06:45
折角上がった事だし、突っ込んどくか…

>>456
そりゃサンガリアだろ!

これでいい?
韓国語 → 朝鮮語
464デフォルトの名無しさん:04/06/15 22:19
このスレ的には kr朝鮮語
北朝鮮と韓国で微妙に語彙が違うらしいけど、

kr_SK
kr_NK

とか分かれてるの?
ハンガリアン、仕事では使わないけど個人で作るものでは使ってるよ、たまに接頭辞どうするかで思い切り迷う
朝鮮語は kr じゃなくて ko だぞ。
北朝鮮 ko_KP
韓国 ko_KR
国敗れてハンガリアン
int main(int iArgc, char **ppszArgv);
>>465
「言語_地域」だって判ってる?
471デフォルトの名無しさん:04/07/21 12:16
ところで__int64ってどうしてる。
QWORDで128ビットだぜ
北朝鮮 co_N
韓国 co_S
jp_JA
475デフォルトの名無しさん:04/07/21 16:57
>>473
それはQWORD qwHoge;でいいでないかい?
476デフォルトの名無しさん:04/07/24 12:57
おさらい
int   i n
long  l (long longは当然ll)
short  n h sh
char  c(整数) ch(文字)
bool  f b (どこかでisってのもあったけど)
float  f
double d (long doubleは当然ld)
void  v (void*とかに)
BYTE  by b
WORD  w
DWORD dw
QWORD qw(だろうと475は言っている)
ハンドル h (hwndのようにすることもある)
関数   fn(pfnなどとして)

上に付加
unsigned u (unsigned int なら単にuHogeでいい)
配列   a (文字列としてのchar[]は単にsz, char*はpsz)
ポインタ p lp
参照   r
const   k
ハンガリアンって自分で作った構造体とかはどうすんだ?
478デフォルトの名無しさん:04/07/24 20:22
>>477
適当に省略した物を使う。API関係からはこんな感じ。
OPENFILENAME:ofn
WNDCLASS   :wc
RECT:rc POINT:pt
476に出ているような基本的な型と違って、複数同時に使うわけでなければそれをそのまま変数名にしていいみたい。

中には何もつけなかったり(classなら俺も大体そう)、structのsを無条件につける人もいるらしい。
ただ s は各種stringクラス類の物として使っている人もいるらしいんで気をつけた方がいいと思う。
(stringクラス類はstrがより一般的と思われるが)
479デフォルトの名無しさん:04/07/24 21:11
ハンガリアンで書かれたC++のソースはクソなのが多い。
非ハンガリアンで書かれたC++のソースはきれいにモジュール化されている。
なぜ?
ハンガリアン記法を使わない=自分のポリシーを持ってソースを書くひとだから。
Javaは記述にポリシーのポの字も許されないね
482デフォルトの名無しさん:04/07/26 14:47
あのさ、enumのときはどうしている?
適切な変数名をつければハンガリアンはいらないよな。
ハンガリアンで書いてあると激しく読みづらい。
なんでこんなもん使うのか理解できない。
定義にジャンプもできないクソエディタ使ってるから必要なんだろうな。
ハンガリアン記法が考案された時代を考えろよ。
便利なエディタが無かったときの苦肉の策だ。
もちろん、今となっては無用の長物。
それを今頃になって導入され,強制されそうな漏れの会社は orz
百害あって一利のみ、って感じだな。
一利あるの?
クラスのメンバ変数に m_ つけるのはすごくわかりやすくていいと思うけど。
困ったことに,引数には "arg_" をつけろとか言ってる。もうやってらんない。
変数名を見て型が類推できる(だろう)、というのが一利かと。
C#でも、画面のControlにはプレフィックスをつけてる。
txtとかlblとか。
プレフィックス=ハンガリアンではありませんよ?
>>489
構造化すらしていない時代の遺物,ということですな。
でも,なんでこんなもん使い続けるんだろう。
グローバル変数使いまくりなのかな。
>>488
m_とかarg_はハンガリアンにあらず
494デフォルトの名無しさん:04/07/27 00:02
ハンガリアン変数の型にだけ拘る意味は少ない。
変数の static変数/auto変数/const変数/関数引数/参照変数/ポインタ変数/メンバ変数
などの性質が変数名だけで分かることは十分に意味がある。これらの種類によって利き方が変わってくる。
十分に意味があるかも知れないが、定義を自動的に検索して
ポップアップ表示するようなエディタがあれば不要だよね。
m_ と,g_ は許してもいいかと。
g_ な変数は,できるだけ使わないほうがいいに決まってるけど。

メンバ関数の中で,ローカル変数と区別がつくのは便利だと思う。
this使え
>>497 お前キモイ
499デフォルトの名無しさん:04/07/27 00:56
すれ違いかも知れないけど、なんでタブは使うなって言われるの?
綺麗に整列出来ていいと思うんだが。
「環境によってタブサイズが違うから」というのは、今時タブサイズも
変えられないエディタの方が悪いんじゃないのかな。
aa        bb
xxxxxxxx    yy

みたいなのをタブで揃えてたときにずれるんだろ。
ぶっちゃけハンガリアンは、プリフィックスさえつければオーケーと思ってる
勘違い野郎のための記法。毎回適切な命名をする知能がない。

低レベルな職場にマジおすすめ。
>>499
コードがすべてノンプロポーショナルフォントで書かれるとは思わないほうがよろしい。
>>499
漏れは行頭の字下げ以外にはタブを使わないのでプロポーショナルだろうと
等幅だろうと関係ないな。

変数宣言のときはいちいち桁揃えなんてしないし。
まちがえた>>499じゃなくて>>502
> 変数宣言のときはいちいち桁揃えなんてしないし。
構造体初期化なんかではこれをやる。そのほうが観やすい
>txtとかlblとか。
これは有効な気がする。

この変数何?って聞かれれば
「あの板名表示するラベルの変数」
って答えになるだろうから、
ラベルを示す言葉が変数名に入るのは
直感的で分かりやすい、と思う。
ラベルって言葉を入れないと、むしろ分かりにくい。

これってハンガリアンとは別の話よね?

>桁揃え
これは揃ってた方が見やすいことも多いけど
人間が必死に揃えるのは時間の無駄に思う。
何のためにエディタが有るのかって話。

これもハンガリアン云々とは無関係か。
Java厨はJava流を全て肯定し、それ以外を全て否定する、思考停止したロボット。
>>507
全部じゃないけどそういうの多いね
509デフォルトの名無しさん:04/07/28 13:37
スレタイ見て、かっとばせ!キヨハラくん思い出した。
MSはガイドラインでは省略形は使うなと書きながら、
サンプルでは使いまくりだからな。
511デフォルトの名無しさん:04/07/28 20:56
int *(apnHoge[]);
int (*panHoge)[];
int *(apnHoge[N]);
こっちは添え字省略出来ないよ。
513デフォルトの名無しさん:04/07/29 16:29
char *(*(*apfnpfnpsz[N])())();
これぐらい複雑だと少しは役立たない?
すでにハンガリアンじゃないし(w
515デフォルトの名無しさん:04/07/31 12:23
>>499-500 >>502-503
つまり、行頭のタブは全く問題ない訳か。
>>515
テキストの横幅(一行の文字数)を76とか80で制限されている場合、
インデントの幅が変わると問題になるかも。
タブ幅変えればいいじゃん。
そしてハンガリアンとは関係ないところで話がループする・・・
ハンガリアンは終わったということさ。
そうです。これからはモンゴリアンの時代です。
モンゴリアン記法
モンゴルがイージス艦に対してジンギス艦を建造中らしい。
ウマそう・・・
今関わっているプロジェクト、Cなんだけどハンガリアンとグローバル全開だよ。
グローバルへの直接アクセスは日常茶飯事。

しかも命名するとき長い単語は変数名や型名が長くなるから3文字略称の連続。
g_Cmn_stCtlEvtTblな感じで。
あぁ、stって構造体につける規則になってる。
わけわからん。
g_stHogHog.stMog.stHug.bStatus = TRUE
とかかかれてるの見るともうね・・・

途中参加なんでこのままいくしかなく・・・
あーあの街で坊主の人を見かけたときにいう言葉だろ
>>524
(-∧-;) ナムナム
ハムスターのことでしょ。
最近聞いたプログラム規約。
Javaだというのに、変数の型とスコープを表すプリフィックスを必ずつけろという。
理由を聞いたら、プログラムの一部を見たとき、変数がローカルかフィールドか
わからないからだという。そりゃ一つのメソッドで数百行にもなってりゃわかる
わけないだろう、と言ったら、今度はメソッドの長さもコーディング規約で決めよう
と言い出した。
>>528
コーディング規約 第2条
http://pc5.2ch.net/test/read.cgi/tech/1068752664/
こっちへどうぞ。
なお、プレフィックス=ハンガリアンではありません。
530デフォルトの名無しさん:04/08/12 20:13
>>529
でもプレフィックス=ハンガリアンと思われている現実。
じゃーサフィックスはナニガリアンなんだよ!?
サンバルカン
Java厨って相変わらずアホだな
534デフォルトの名無しさん:04/08/25 17:59
ところでstatic変数につけるプレフィックス s_ ってファイル内、関数内、クラス内、どこのstatic用なんですか?
535デフォルトの名無しさん:04/08/26 21:32
>>533
数百行の長さの関数を書いて喜んでいるバカがここに一人
>>535
Java厨って妄想力豊かだな
537デフォルトの名無しさん:04/08/27 00:35
ハンガリアンはドーピング野郎なので使う必要なし
538デフォルトの名無しさん:04/08/27 02:35
やっぱルーマニアだよね
カレーにこだわりが?
ハンガリアンハムスター
>>539
大柴ファンかもな。
小学生時代、俺に唯一告白してきた女子
そいつのあだ名がハンガリアンだったの思い出して今やるせない気持ちです
OSも無い組み込みファーム屋でC使ってます。
グローバル変数も長い関数も使いまくりです。
デバッガは自動変数をモニターできないので
偶に一時的にグローバルにしたりしてます。
なので自己流版画離案もどきは重宝します。

お願い、もっとまともなコンパイラとリソース頂戴。
>>543
まったく同じ
ハンガリー人ドーピングしまくりじゃねえか。
クソなのは規約だけじゃなかったようだ。
546デフォルトの名無しさん:04/11/06 19:08:46
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< くっちゃらはぴはぴ!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< くっちゃらはぴはぴ!
Py厨〜〜〜〜!    >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /
547デフォルトの名無しさん:04/11/06 23:36:55
Cだとハンガリアンがうれしいかなぁ
C++だとメンバ変数にm_がついてないのは勘弁
C#だとあんまり意味ないね
ようは自分の都合だけで書かない心構えさえ出来ていたら
その都度、ベストな出来るはずなんだけど
548デフォルトの名無しさん:04/11/07 07:25:43
fはフラグの意味でboolに使っている。
floatはどうしようかと考えたらhdを思いついた。
これでいいよな。
549デフォルトの名無しさん:04/11/07 09:22:04
スコープを意味するプリフィクスは、ハンガリアンではないとあれほど…
550デフォルトの名無しさん:04/11/07 13:22:00
boolにするならbでいいじゃん
551548:04/11/07 14:06:40
>>550
bool/BOOLにbはなんだか違和感があって……、慣れの問題?
ただ今のところfloatを使う機会はないんだけどさ。
552デフォルトの名無しさん:04/11/07 19:23:55
>>549
どう違うか説明してみろや
どっちも接頭修飾だ
553デフォルトの名無しさん:04/11/07 21:58:38
>>552
型名をプレフィックスにつけるのがハンガリアン出身のMSのプログラマが考案した本来のハンガリアン記法であって、スコープのはMSがそれと同時に提唱しただけ。
554デフォルトの名無しさん:04/11/12 20:16:39
>>548
MSDN内でもBOOLはbだったりfだったりバラバラだねえ
555デフォルトの名無しさん:04/11/23 08:47:10
iteratorにit使い出したらこれが気に入ってハンガリアンやめられなくなった。
556548:04/12/07 13:49:15
よくよく考えればhはハンドル。
どこかでhがshortだと書いていたページを見た気がするのだが、今探しても見つからない。
となるとfloatをどうするかは振り出しに。
sはStringだと書いてあるところと、shortと書いてあるところが両方あるから、sdはやめた方が良さそうだ。

やはりBOOL/boolのbを受け入れるしかなさそうだ。慣れれば気にならない(はず)。
557デフォルトの名無しさん:04/12/07 13:54:36
h handle
p pointer
m_ member
s string
a array
it iterator
r reference
g_ global

コレくらいしか使わない。
boolは大抵isHogeみたいになる。
558548:04/12/07 23:11:20
俺流ハンガリアンでは(D/Q)WORD, BYTE, CHAR類以外の整数型にはunsignedなら u そうでなければ n に統一している。
float/double/long doubleも同じように d で統一すればいいんだとひらめいた。

今度こそこれでいいよな。
559デフォルトの名無しさん:04/12/08 01:11:26
>>558
俺も、short, int, long は、 nで共通している。 n は Number の N だから、short だけに使うのは違和感がある。

同様に、float も、d ではなく、 f (float は浮くという意味で、浮動小数点の意) で省略したほうがいいと思うよ。
560デフォルトの名無しさん:04/12/08 11:26:17
俺は整数型はbit長と符号で全部区別している。
用途で区別するのはわかりにくい。
組み込みのメモリが少ない状況でやってるから、ヘタに抽象的にできないってのはあるが。
浮動小数点もほとんど使わない。つーか使えない用途だ…
561デフォルトの名無しさん:04/12/08 22:49:33
めんどいからStringはstrにしてる
562デフォルトの名無しさん:04/12/09 00:15:57
諸々のtypedefされたマイナーな型のプリフィックス考えるのめんどいから
ハンガリアンやめた
563デフォルトの名無しさん:04/12/09 00:59:22
面倒臭いから返り値はretにしている
564デフォルトの名無しさん:04/12/09 21:00:30
>>563
それは、ハンガリアンじゃない
565デフォルトの名無しさん:04/12/09 22:12:59
iRetだとアセンブラスレに行きたくなるな
566548:04/12/10 13:13:21
>>559
いやそもそもBOOL/boolにfを使いたいことから考え出したんで、そりゃちょっと勘弁してくれ。
567デフォルトの名無しさん:04/12/10 22:43:52
is付けろ
568デフォルトの名無しさん:04/12/11 02:26:46
>548
ここは思い切って short/int/long/float/double は全部 n にするとか。
整数と浮動小数の違いを意識する必要って、あまりないと思うのだが。
逆に分ける必要があるなら、>560のように、bit長や符号の違いでも
分けるべきだと思う。
569デフォルトの名無しさん:04/12/11 15:58:56
予想しないとこで丸められると困るから整数と浮動小数は分けるだろ
570デフォルトの名無しさん:04/12/11 17:33:06
ここは思い切ってハンガリアンをやめるとか。
変数の型を意識する必要って、あまりないと思うのだが。
逆に分ける必要があるなら、>560のように、bit長や符号の違いでも
分けるべきだと思う。
571548:04/12/11 21:37:04
とことん使い尽くすか、全く使わないか……。
その間はないのかよ。
572デフォルトの名無しさん:04/12/12 01:07:12
>569
浮動小数→整数はコンパイラが警告出すから、「整数と小数の区別」で防げる程度の
「予期しない丸め」はハンガリアン使わずとも防げると思うが。
キャスト等で警告を殺す椰子に、ハンガリアンの効果があるとも思えんし。
573548:04/12/13 21:50:25
結局、558案を元に浮動小数点数型は全て f に統一、bool(もちろんBOOLも)は b/isにすることにしました。
もちろん今まで書いたやつはそのまま放って置くw
574デフォルトの名無しさん:04/12/13 21:59:08
やねうらおのソースもハンガリアン記法っぽかった。
575デフォルトの名無しさん:04/12/13 22:01:43
>>571
そんな優柔不断ではまとまりに欠ける。
576デフォルトの名無しさん:04/12/15 05:51:08
>>573
Byteはどーする?
MSDNだとBYTEのプリフィックス、n、b、byの3種類あるんだよなあ
577デフォルトの名無しさん:04/12/15 10:51:06

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   | ハンガリアン
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |                       
578548:04/12/15 17:46:24
>>576
そりゃbyでしょ。小文字のbはビットとしか思えない。
579デフォルトの名無しさん:04/12/16 20:35:46
センス・オブ・プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4774121738/

この本のヒトもアンチハンガリアンっぽ。
580デフォルトの名無しさん:04/12/16 22:04:46
中途ハンガリアン(適度にハンガリアン)が楽だと思うのだが・・・

szText、cbText 等の単純なカウンタ、一時退避変数とかは
意味を付与するよりハンガリアンの方がすっきり思える
581デフォルトの名無しさん:04/12/18 16:52:01
数値は全部 n は釈然としないな。
使い分ける意味があるときは i r n (integer real natural)と分けて欲しい。

漏れは、ローカル変数に鍵って idx とか cnt とか、用途でプレフィックス
つけたりするけど、みんなこんなのは名前に淹れてるの?
582デフォルトの名無しさん:04/12/20 14:00:06
半端リアン
583デフォルトの名無しさん:05/02/05 20:48:28
VHDLにもハンガリアンと来た
世も末だ
規約で縛りつかなきゃ読めんようなコードを書くやつにコードを書かせるな!
VBでも書いてろ!
584デフォルトの名無しさん:05/02/14 19:31:32
>>583
工エエェェ(´д`)ェェエエ工工
半端なソフト屋あがりにハード作らせるなよと・・・
585デフォルトの名無しさん:2005/04/12(火) 23:34:47
いただきハンガリアン
586デフォルトの名無しさん:2005/04/13(水) 13:21:02
そんなにハンガリアンがいいものなら、
なぜ言語仕様にしないのか
587デフォルトの名無しさん:2005/04/13(水) 15:56:45
符号付整数: nHoge
符合無整数: uHoge
としてる俺。
588デフォルトの名無しさん:2005/04/25(月) 20:11:20
コード上では変数のプロパティってnameしかないわけだけど
colorとかscopeとかtypeとかも持たせたら分かりやすいかも
scopeとreferenceはぜひとも欲しいなあ
589デフォルトの名無しさん:2005/04/25(月) 20:23:25
>>588
よくわかんないけど、Rubyとかの話か?
590デフォルトの名無しさん:2005/04/25(月) 20:32:02
>>589
コードをテキストデータとして書くのが一般的だと思うけど
たとえば
<variable>
<name>i</name>
<type>integer</type>
<scope>local</scope>
<style>
<color>red</color>
<underline/>
<bold/>
</style>
</variable>
みたいなの
591デフォルトの名無しさん:2005/04/25(月) 22:20:32
>>590
そこら辺全部variable要素の属性でいいじゃないか。
<variable type="integer" scope="local" style="color:red; font-weight:bold;text-decoration:underline">i</variable>
CSSをそのまま使うのは再考すべきだが。
592デフォルトの名無しさん:2005/04/25(月) 22:24:32
>>591
素晴らしい!その通りですね!!
593デフォルトの名無しさん:2005/04/25(月) 23:55:41
szTextを見ても型がわからない俺にはハンガリアンは無用の長物。
szって何の型なのかおしえろよ
594デフォルトの名無しさん:2005/04/26(火) 00:01:31
orzText
595デフォルトの名無しさん:2005/04/26(火) 01:51:12
>593
sz : string zero terminated.
596デフォルトの名無しさん:2005/04/26(火) 16:55:47
つまり文字列をしまうchar/TCHAR/WCHAR配列ってことだ。
たまにchar *とかTCHAR *やらWCHAR *に使うやつもいるが。
597デフォルトの名無しさん:2005/04/26(火) 21:22:47
それどころかJavaにハンガリアンを持ち込んだときに
(この点の是非は問わない)までStringインスタンスに
szを付けるヤツがいる。
zがなにだかまるでわからずに付けてるわけだ。
598デフォルトの名無しさん:2005/04/26(火) 22:35:34
Javaは使ったこと無いけどstd::stringにはstrを使っている。
599デフォルトの名無しさん:2005/05/20(金) 19:23:24
ゲーム屋さんだけど便利だなと思うときが
たとえばマップデータをセル区切りで持っていて、実際の座標は3D空間。
こんなときに

MapData
600デフォルトの名無しさん:2005/05/20(金) 19:46:00
途中で送信してしもた。なんでTabキーで書き込みやねん・・・。

ゲーム屋さんだけど便利だなと思うときが
たとえばマップデータをセル区切りで持っていて、実際の座標は3D空間。
整数データと浮動小数点などが入り混じるときに便利だと思う。
あと速度ならvSpeed(v = Vector)、速さならfSpeedとか。
実際の例としては
struct MapCell{
 Vector vStream; // 流れの方向
 float  fHoge;   //セルに存在するHogeの物質量
};
んでこれが2次元配列だから配列用のインデックスにはnX, nYとかして整数であることを強調したほうわかりやすい。
ただの型情報なしのX,Yならワールド座標系かと思ってしまうし
for(...
  for(....
     MapCell[nY][nX].vStream = vHogeStream; //ベクトル同士の代入
     MapCell[nY][nX].fHoge = fHoge;   //スカラー値の代入

結構型付け意識せんなんから変数名から型がわかるのは便利だと思う。
かといって構造体やらクラスやらにわざわざ変なのつける必要もないと思う。
601デフォルトの名無しさん:2005/05/20(金) 20:15:38
まぁ使い方次第やな。
使えん派の出してくる例は極端すぎ。
602デフォルトの名無しさん:2005/05/22(日) 10:11:30
新潟ハンガレ、超ハンガレ!
603デフォルトの名無しさん:2005/05/22(日) 13:33:31
ハンガリアンに替わる新記法、韓ガリアンをお前たちで開発してください。
604デフォルトの名無しさん:2005/05/23(月) 23:40:52
こんなコラムを見つけた。
Making Wrong Code Look Wrong
ttp://www.joelonsoftware.com/articles/Wrong.html

元々のハンガリアン記法のアイデアは、変数の「種類」を表すプレフィクスを付けることで
コード上のミスを視覚的に発見しやすくするというものだった。
例えば、ウィンドウ座標を表す変数にはxw・yw、レイアウト基準の座標はxl・yl、
文字数はcbを付けるという約束にしておけば、
xlナントカ = xwカントカ + cbホントカ
みたいなコードは変数の使い方を間違えていると一目でわかる。

不幸にも、どこかの誰かが変数の「データ型」をプレフィクスにするものだと誤解し、
それがWindowsのドキュメントを通じて世に広まってしまった、ということらしい。
605デフォルトの名無しさん:2005/05/24(火) 06:25:41
だいたいさー文字列しか使えないってのがおかしい
ルビをふれるようにするとかコーディングする時
文字入力するんじゃなくて宣言部からマウスでドラッグしてくるとかで
関連づけを名前だけで行うなんて原始的なことをやめたら
こういうちまちましたテクニックは無意味になるでしょう
606デフォルトの名無しさん:2005/05/24(火) 19:45:45
>>605
キー入力より速い開発手法を確立したら後世に名が残せると思われ
607デフォルトの名無しさん:2005/05/26(木) 01:30:43
608デフォルトの名無しさん:2005/05/26(木) 22:31:05
GUIがないと何も出来なくなるな
609デフォルトの名無しさん:2005/05/28(土) 11:49:10
>>600
> あと速度ならvSpeed(v = Vector)、速さならfSpeedとか。

えっと、それぞれvelocityとspeedを使えば、言葉としても正しいし、何の問題もないわけだが。

速度 - Wikipedia
http://ja.wikipedia.org/wiki/%E9%80%9F%E5%BA%A6

ハンガリアンなんぞ使う人は、適切な命名ができないからこんな規約でごまかしてるんだろうという
俺の持論がますます強固になったな。

> インデックスにはnX, nYとかして整数であることを強調したほうわかりやすい。

んなアホな。nXでは整数であること意外何の情報も含んでないだろ。
素直にcellXとかcellYとかにしたほうがいいと思ったりはしないのか。
610デフォルトの名無しさん:2005/05/28(土) 17:20:42
>>609
なかなか反論として説得力あるな。
俺もハンガリアンつかってたが、貶すだけではなくて対案があるといい。

スコープ系
クラスメンバの m_Hoge
グローバルの g_Hoge

ポインタと参照
pHoge
rHoge
とかはどう思う?

611デフォルトの名無しさん:2005/05/29(日) 14:14:17
最近はローカル変数・引数には原則p/r/it/is以外は何もつけなくなってきた。
すぐそこに宣言が見えるからプレフィックスを付ける意味がないと思うようになった。
612デフォルトの名無しさん:2005/05/29(日) 16:24:32
Cだとp位は要るかも知れないけど、俺C++だからpも要らないや。
613デフォルトの名無しさん:2005/05/30(月) 06:10:22
>>609
> ハンガリアンなんぞ使う人は、適切な命名ができないからこんな規約でごまかしてるんだろうという
> 俺の持論がますます強固になったな。

fool proof でプリフィクス使うところも多いんじゃね?
新人のクソコードを読むハメになることも多いし。

> > インデックスにはnX, nYとかして整数であることを強調したほうわかりやすい。
> んなアホな。nXでは整数であること意外何の情報も含んでないだろ。
> 素直にcellXとかcellYとかにしたほうがいいと思ったりはしないのか。

x y で十分だと思うけどなあ。
2次元配列をなめるサブルーチンなんだし、意味を取り違えるのは凝集度が低すぎるんじゃないか。
座標値が他に沢山あるなら cellx, celly xidx, yidx lpx, lpy ix, iy あたりから好きなの使えばいいと思う。
foreach とか for x in y とか使えるといいんだけど。

609 のいう「何の情報も含んでない」というのは、みんなに気にして欲しいなあ。
n と f とか v とかを付けることによって読みやすくなったコードは読んだことが無い。
614デフォルトの名無しさん:2005/05/30(月) 13:49:27
boolはisなりbなりつけたほうがわかりやすくない?
bool isConnectToClient;
とか。
つけない場合はどういう変数名にすればわかりやすいのかな。

あと配列の命名法はどんなのあります?
ハンガリアンに従えばaだけど、じゃぁ二次元配列はaaなのか
stl::vectorとかはどうするのか、aであらわすのもイマイチのように思える。
615デフォルトの名無しさん:2005/05/30(月) 14:31:01
>>614
boolにbはちょっと…isは普通に使われていると思います。
変数だけでなくboolを返す関数でもisXxx()が一般的だと思います。
(JavaBeansの命名規約もそうでしたけ)

配列は複数形じゃないんですかね。connectionsとか。
616デフォルトの名無しさん:2005/05/30(月) 22:38:01
>>614
isはハンガリアンではなかとです
617デフォルトの名無しさん:2005/06/13(月) 20:02:09
int は、 nNum なの?
それとも iNum か??
618デフォルトの名無しさん:2005/06/13(月) 20:05:27
たそがれハンガリアン
619デフォルトの名無しさん:2005/06/13(月) 20:10:51
フビライハンガリアン
620デフォルトの名無しさん:2005/06/13(月) 21:19:26
>>617
intは i らしい。nはshortの意を少々含んでいるらしい。
でも俺はlongも含め符号付整数は n で統一している。
621デフォルトの名無しさん:2005/06/13(月) 21:22:56
>>620
どもありがとー。
私も全部 n にしまっす!
622デフォルトの名無しさん:2005/06/13(月) 21:31:11
漢ならいさぎよく
numberNum
と書くべきだと思うぞ。
623デフォルトの名無しさん:2005/06/13(月) 22:00:32
メモリを確保して、文字列を記憶する char 型のポインタで、メンバ変数 str は

char *m_pStr
でいい? それとも
char *m_sStr
でしょか? まさか
char *m_psStr とか??

>>622
ながいですよー ><
624デフォルトの名無しさん:2005/06/13(月) 22:03:32
俺はm_を使わない派だからpStr。
あるいはpszHogeも使うがpszStrとはしない。
625デフォルトの名無しさん:2005/06/13(月) 22:05:25
>>623
ハンガリアンしている以上
そもそも長いも短いもへったくれもないぞ。
626デフォルトの名無しさん:2005/06/13(月) 22:12:22
>>624
pStr ですか。おけ。私はm_pStrにしまっす。
m_ 使わないと、
void cMyclass::set_num (int nNum)
{
m_nNum = nNum;
}
みたいなとき、同じ名前使えなくて困りません?

>>625
も、もしや、まさかマジで>>622使ってる人ですか??
627デフォルトの名無しさん:2005/06/13(月) 22:24:11
>>626
そういうときには引数の方を単に n にしたり、メンバ変数をnNumberのように略せず仮引数をnNumみたいに略したりする。
さらにコンストラクタなら同じ名前でもコンパイル通る。
class Hoge
{
  int nFoo;
public:
  hoge(int nFoo) : nFoo(nFoo) {}
};
628デフォルトの名無しさん:2005/06/13(月) 22:24:58
>>626
おうよ。あたぼうよ。
昔はな。
それで、いい加減うんざりして、
いまはストレート派だ。
変数に飾りはいらねえ。
629デフォルトの名無しさん:2005/06/13(月) 22:52:25
>>627
あー、それはなかなかいい方法かもですね。 >nNumber
あと、>>624みたいなあんま意味のない引数のときは、nでもいいかも。
うーん、勉強になるなあ。
コンストラクタは同じ名前でもマジで通りますね。
知りませんでした。でも、↓はさすがにちゃんと動かなかった ^^

class cStrtype {
char *m_pStr; // メモリを確保して、文字列格納
public:
cStrtype (char *m_pStr); // コンストラクタ メモリ確保して文字列記憶
~cStrtype () { delete [] m_pStr; } // デストラクタ メモリ開放
char * get_str () { return m_pStr; } // 文字列返す
};
// コンストラクタ メモリ確保して文字列記憶
cStrtype::cStrtype (char *m_pStr)
{
int nLen = strlen(m_pStr) + 1;
m_pStr = new char [nLen];
if (!m_pStr) exit(1);
strcpy(m_pStr, m_pStr);
}


>>628
おお、「変数に飾りはいらねえ」って、むやみやたらにカッコイイ!
630デフォルトの名無しさん:2005/06/13(月) 22:54:01
あー、すみません。↑の 624 てのは、>>626の間違いでした m(__)m
631デフォルトの名無しさん:2005/06/13(月) 23:07:09
>>629
mはメンバの意味だから仮引数に付けるのはおかしいだろう。というわけで俺ならこうする。
cStrtype::cStrtype (const char *pStr) : m_pStr(new [strlen(pStr) + 1]
{
  strcpy(m_pStr, pStr);
}
newは例外を投げるからヌルチェックは無駄。
実際にはメンバ:pStr or pszStr、仮引数:psz or pにする。
632631とか:2005/06/13(月) 23:09:22
ちなみに629のコンストラクタもメンバにthis->を補えば通る。
633デフォルトの名無しさん:2005/06/13(月) 23:36:45
>>631-632
>>629 のは、実験的にやってみただけっすw
newの例外ってのは、これからお勉強するので、
よくわからず。

cStrtype::cStrtype (const char *pStr) : m_pStr(new [strlen(pStr) + 1]
↑この記述方は初めて見ました。

色々とありがとうございました m(__)m
634631-632:2005/06/13(月) 23:38:27
そういえばthis->使えばコンストラクタでなくてもメンバ関数ならなんでも平気のような気がしてきた。
635デフォルトの名無しさん:2005/06/14(火) 00:44:50
あなた方は本当にそのような変数名を命名しているのですか・・・
636デフォルトの名無しさん:2005/06/14(火) 23:56:06
>635
まぁ変数名なんて、所詮入れ物に付けた名前ですから。
名前なんぞより、中身に合った入れ物を選ぶことの方が大事。
637デフォルトの名無しさん:2005/07/01(金) 23:56:12
ハンガリー、どうしようかなあ。

配列の前に a_ は付けてる?
あと、座標は

class Tekitou{
int m_nX;
int m_nY;
};

って書くのがベター?

誰かよろ。
638デフォルトの名無しさん:2005/07/02(土) 00:03:52
xとyはそのまま小文字で通している。
あるいはPOINTやらCPointにして、そのプレフィックスとしてptを付けている。
639637:2005/07/02(土) 00:15:37
うーん、そうですよねえ。
座標はけっこう頻繁に使うっぽいし、
特別扱いしてもいいかな。

どもです m(__)m
640デフォルトの名無しさん:2005/07/02(土) 00:49:05
うん、aつける。
でも漏れの場合はあんだすこあはつけない。

char achCell[4] ;

achCell[0] = '\x11' ;

座標なら

class Tekitou{
int x;
int y;
};

としちゃうかなぁ。
漏れ厳密派じゃないからなぁ。

でも、このクラスがそれなりの規模(プライベート関数5-6個)なら、
厳密に

class Tekitou{
int iY;
int iX;
};

とするかなぁ。
641デフォルトの名無しさん:2005/07/02(土) 00:49:53
あ、先越されてた。スマソ。
642デフォルトの名無しさん:2005/07/02(土) 09:17:03
俺はchar/wchar_tなどの文字列の配列であって、ヌル終端ならachよりもszを使う。
643デフォルトの名無しさん:2005/07/02(土) 13:13:26
ハンガリアンというかJavaから入ってくるとフルネームで変数名つけたくなる。

が、IDEの入力補完を使わないとタイプ数が増えてミスが多くなるのでやめた。
644デフォルトの名無しさん:2005/07/02(土) 18:55:44
>>643
俺は逆に、ローカル変数以外は暗号みたいな意味不明な省略をした命名とか、
適切な形容詞や副詞を伴わない舌足らずな命名は数年前から一切止めた。

別に入力補完がないならないで全部コピペでいけるでしょ。
俺はマイコンチップのアセンブラなんかも触ってるんだけど、(当然インテリセンスなんてない)
長いラベル名なんかは実際タイプせず全部いちいちコピペしている。

確かに純粋にタイピングの部分だけ見れば、短い変数名を自分でタイプする方が効率的だが、
そのアドバンテージは「この関数の機能はなんだっけ?」いちいち定義部に戻って
確認しなければならない非効率、思考が混乱する非効率、いちいちコメントをつけなければならない
非効率とトレードオフの関係にある。

実際やってみると、冗長と思えるほど明示的な命名をしておいた方が結局は
はるかに効率がいいんだよね。
プリミティブなアセンブラやCでも、.NETでもそれは変わらない。
645デフォルトの名無しさん:2005/07/02(土) 19:16:38
>>644
>いちいち定義部に戻
らないと行けない程遠くに離す、なんて事を
>Cでも、.NETでも
やっちまうのが間違いの元のような。
646デフォルトの名無しさん:2005/07/02(土) 19:32:45
>>645
イミワカンネ。
>>645はどんな複雑なプログラムもたった10行で収める神技の持ち主なんだろうか(笑)
647デフォルトの名無しさん:2005/07/02(土) 19:39:51
これからはプリフィクス無しハンガリアンの時代ですな(`・ω・´)
648デフォルトの名無しさん:2005/07/02(土) 20:08:05
>>645
644はローカル変数以外はと枕置いているようだが。
649デフォルトの名無しさん:2005/07/02(土) 20:14:26
>>644
まあ、そうなんだけどね。
実際、Java命名からハンガリアンもどきを使った後に、またJava命名に戻ったし。

あー、あれ使えばいいのか。クリップボードの内容を何十個とスタックしてくれるツール。
650デフォルトの名無しさん:2005/07/02(土) 22:47:14
ハンガリアンはむしろ型付けの弱い言語でつかいまふ
651デフォルトの名無しさん:2005/07/03(日) 00:38:19
殺すぞ。
652デフォルトの名無しさん:2005/07/03(日) 03:00:26
ちょっとカッコイイっぽいから、使おうかと思ってます・・
653デフォルトの名無しさん:2005/07/03(日) 11:11:51
ハンガリアンを?今は逆にカッコワルイよ?

多分オマエが抱いてる感情はアレだ。

都会で流行ったものが、若干遅れて田舎に来たときのソレだ。
654デフォルトの名無しさん:2005/07/03(日) 12:34:41
今の最新流行はなんだろうな。Java命名規約か? C#もそれに大体準拠してるし。
655デフォルトの名無しさん:2005/07/03(日) 19:54:20
逆にハンガリアンがないと困る状況を考えてみる
。。。。。ハンガリアン以前の問題が
656デフォルトの名無しさん:2005/07/04(月) 00:17:16
>>642
あ、もちろん漏れも漏れも。
szBuffer とか wszTemp とか。

説明足らんかったけど、>>640
null終端でないchar型のバッファ
(何かのセル属性とか)のイメージでつ。
657デフォルトの名無しさん:2005/07/04(月) 11:51:58
>>640
配列は複数形でいいのでは。
658デフォルトの名無しさん:2005/07/04(月) 19:03:36
unsigned char *Data; は、
pData
かな。それとも、byteなのも考慮して
pbyData
かなあ。

ちなみに、newでメモリを確保して使う予定のやつです。
659デフォルトの名無しさん:2005/07/04(月) 21:59:55
俺の中での優先順位はこう。

ローカル変数なら無条件にpとする。

null終端文字列ならpszにする。
バイトの配列として使うのなら型もBYTE *やPBYTEにした上でpbyDataにする。
どちらにも当てはまらない場合、今の俺だったら単にpにする。昔の俺ならpuch/pch/puのどれかにしただろう。
660デフォルトの名無しさん:2005/07/05(火) 04:12:58
> pbyData

システム開発屋から言わせてもらうとだな
他人が書いたソースにこんなクソ変数名があったら殺意覚えるよ。
ソース毎にいちいち書いた奴の俺様命名規約なんて覚えてられねーんだよ。

変数名はだな、プログラムの制御の流れが分かりやすいように
その変数が何に使われているか分かる名前を付けろ。
できればシンプルに省略せずに付けろ。
それが無理(分かりにくい)なら説明的で長い名前を付けろ。

プログラムで大事なのは制御の流れであって型じゃない。
制御の流れを読み辛くする型情報はいらん。
661デフォルトの名無しさん:2005/07/05(火) 05:27:43
芳しいスレだな。

ハンガリアン派:実務経験少
非ハンガリアン派:実務経験多

と言う感じがする。
662デフォルトの名無しさん:2005/07/05(火) 07:59:51
>>659 >>660
説明不足ですみません。

class CMapData {
unsigned char *m_pbyMap;
};

こんな感じの、クラスのメンバです。
とりあえず、↑のヤツで行ってみまっす。
ありがとうございました m(__)m
663デフォルトの名無しさん:2005/07/05(火) 10:57:30
>>660
同意。
>制御の流れを読み辛くする型情報はいらん
・・・まあ、そうは思わない奴がハンガリアンなのですw

>>661
その感覚は正しい。
ハンガリアンが初めて文書化されたのは確か1991で
(自分の感覚では)比較的新しい

>>662
質問していい?なんで「Data」って付けるの?
664662:2005/07/05(火) 14:58:19
>>663
>なんで「Data」って付けるの?

え?なんとなくなんですが、、
まずいっすかね?
CMpa でいいのかな。
ちなみに私はもちろん実務経験なんてないですよ。
665663:2005/07/05(火) 15:26:25
>>664
私のほうは 変数が全てデータなのは当然である とか
クラスにはデータ(集合)と手続きの二面性があるからデータというサフィクッスを付けるべきではない
とかの理由はあるけど、「なんとなく」という情けない理由が返ってくるとは思わなかったw
命名の重要性を軽視していませんか?私がハンガリアンを嫌う理由の一つがこれです。
ハンガリアンにすると命名の重要性を軽視されがちとなる。
#煽っているつもりはないのですが
666デフォルトの名無しさん:2005/07/05(火) 15:48:53
>>665
うはwwなんか、ちゃんとした理由が帰ってきたww

>クラスにはデータ(集合)と手続きの二面性があるからデータというサフィクッスを付けるべきではない
これはよくわからないんですが、(私のレベルが低すぎて・・)
>変数が全てデータなのは当然である
ってのは「あー、そうかも。」って感じですねえ。
まだ余裕で修正がきく段階なので、Dataは外しておきます。
ども m(__)m
667デフォルトの名無しさん:2005/07/05(火) 21:52:11
実務経験のある人間は「ちょっとだけハンガリアン」を使う
ポインタにp付ける程度
668デフォルトの名無しさん:2005/07/05(火) 22:05:13
旧VBとかドトネトでコントロールにtxtPriceみたいにプリフィクスするのは
有意義な場合があると思うけどね。

あと特殊な例だとアドレッシングモードっていうかメモリ空間が複数あるような
マイコンチップのアセンブラ書くときにメモリ空間の種類をプリフィクスすると便利だな。
まあマイコンのアセンブラなんて隙間産業で働いてる奴はそんなに居ないと思うが。。
669デフォルトの名無しさん:2005/07/06(水) 00:33:07
ある変数がポインタかそうじゃないかなんて
その変数の使い方を見れば大体分かると思うんだが・・・
pを付ける利点が分からん。
670デフォルトの名無しさん:2005/07/06(水) 00:37:16
>>669 ヒント:実引数
671デフォルトの名無しさん:2005/07/06(水) 00:52:27
>>670
もったいぶらずに具体例で教えてよ。
672デフォルトの名無しさん:2005/07/06(水) 00:54:25
俺の場合、pだけは付けないとと落ち着かない。
673デフォルトの名無しさん:2005/07/06(水) 01:13:49
>>669
「わかる」というのと「明示的にわかる」というのは違うでしょ。
そりゃ遅かれ早かれコード読めばわかるよ、pなんて付けようが付けまいが。
ただ、そんな非生産的なことに脳力を割きたくないだけ。
674デフォルトの名無しさん:2005/07/06(水) 02:12:05
>669
例えば
 char hoge[10];
675674:2005/07/06(水) 02:33:35
途中でEnter押してしまった…

>669
例えば↓のhogeとphogeは、型は同じですが「違い」があります。
また、その「違い」には注意しないと、かなり痛い目に合います。
なのでpは付けるべきかと思うのですがいかがでしょうか。

 char hoge[10];
 char *phoge;

同じ理由で、pを他の(型を表す)プレフィクスとを同系列に語るのはどうかと思います。
例えばpを型とみなすなら、↓の書き方は変ですよね。
 char szHoge[] = "";
 char *pszHoge = "";
676デフォルトの名無しさん:2005/07/06(水) 17:06:06
>>675
そのhogeとphogeは型も違う。hogeはchar [10]型であって、char *ではない。
677デフォルトの名無しさん:2005/07/06(水) 18:10:40
>>1
>みんなだってポインタの先頭には「p」とか書くだろ?
書かないよ。せいぜいFILE構造体のポインタ「fp」くらいだ。
678デフォルトの名無しさん:2005/07/06(水) 22:05:55
>>675
今まで痛い目にあったこと無いんだけど、どんな痛い目にあったの?


文字列リテラルはconst char *で受け取るから書き換えるなんて出来ないし。
679デフォルトの名無しさん:2005/07/06(水) 22:44:03
結局情報量の話やと思うけどなぁ。
Xと書くよりはnXのほうが情報量が多い。
nXと書くよりはXIndex, XCountと書くほうが情報量が多い。
情報量とタイプ量のバランスをとればええんちゃうの。
680デフォルトの名無しさん:2005/07/06(水) 22:52:32
>>660
そんな変数名だけで殺意覚えてなんかメリットあるかなぁ?
他人の書いたソースなんか自分の考え方が違って当然で、
冷静に読めたほうがいいと思うけど。
いちいち自分の書き方と違うことに腹立ててたら仕事はかどらん。
681デフォルトの名無しさん:2005/07/06(水) 22:55:40
>>676
>char [10]型
Cにそんな型はないでしょ。ドトネトじゃないんだから。。
Cの配列はポインタのシンタックスシュガーって耳タコのネタじゃん。

ただ、>>675のご説はちょっとね。っていうか意味わかんない。

俺はポインタ変数にpをつけるのは意義がある、という立場だが、
それは「値」と「値への参照」では意味論的に全然違うわけだが、pXXXXは
この意味論的な違いを簡潔に表現する、しかもかなり一般化された(したがって
そのコードを読む者全員にその意味が通じることを期待できる)方法だから。
682デフォルトの名無しさん:2005/07/06(水) 23:02:50
>>681
配列のシンタックスシュガーは演算子の[]だけ。変数宣言には関係ありません。
http://www.kouno.jp/home/c_faq/c6.html#2
683デフォルトの名無しさん:2005/07/06(水) 23:22:03
>>682
何言ってんのそんなの当たり前じゃん。。
話の文脈がわからないのかな?
>>676をもう一度読んでくれ。話はそれから。
684デフォルトの名無しさん:2005/07/06(水) 23:25:39
>>683
だからさ、Cでもchar [10]という型は存在しうる。
あちこちですぐにchar *へ成り下がるけど。
685デフォルトの名無しさん:2005/07/07(木) 00:08:04
配列とポインタは同じに見えて違うところがちらほらあるからややこしい・・・
686デフォルトの名無しさん:2005/07/08(金) 00:24:11
で、>675があった痛い目って何?

と聞いてもムダか。
なんでこういう輩は具体的に聞くと逃げるのか?
687デフォルトの名無しさん:2005/07/08(金) 00:32:40
>>686
675じゃないし痛い目ってほどじゃないけど、sizeof(&hoge)とsizeof(&phoge)
は違う値になるよね?自分はpなんかつけないけど(型検査してくれる言語で型
を変数名に付けたくなる状況はそんなに多くないと思うんだけど)。
688デフォルトの名無しさん:2005/07/08(金) 07:49:18
あれ?sizeof &hogeはchar (*)[10]だからWin32では4になると思ったらVC7.1では10になるな。
#include <iostream>
#include <typeinfo>

int main()
{
  char Hoge[10], (*pa)[10];
  std::cout << sizeof &Hoge << '\n' << sizeof pa << std::endl;
  std::cout << typeid(&Hoge).name() << '\n' << typeid(pa).name() << std::endl;
}
689デフォルトの名無しさん:2005/07/08(金) 08:26:35
>>686
マジレスだけど、痛い目にはあってないんでしょ。
当然じゃん。

いつもポインタ変数にはpをつけることを習慣にしてるんだから、
痛い目なんてあいようがない。
690デフォルトの名無しさん:2005/07/08(金) 10:29:40
>>688
sizeof(&hoge)==sizeof(char [10])だよ。
691デフォルトの名無しさん:2005/07/08(金) 11:53:17
実体験から語ると、ハンガリアン記法も守ってない「俺仕様」のプログラムを
引継ぎしろなんて言われると死にそうになる。

>>660
ゲーム開発屋から言わせてもらうと、単純に「data」なんてかかれた変数名があったらそいつ殴りに行く。
バイナリーデータなのか、テキストデータなのかもわからん。
配列なのかポインタなのかもわからん。

いちいち宣言を参照しろだ?
時間に追われない趣味の人だけどうぞ。って感じ。

カーソルを合わせれば型情報が出る?
はぁ?プリントアウトもせずに読めるくらいの量しか扱ってないの?


つまり、ハンガリアンってのは「スピーディーに、実務で使うことを念頭に考え出された」技術。
理論上で言えば、型情報を意識しないで済む実装にこしたことはないに決まってる。
692デフォルトの名無しさん:2005/07/08(金) 11:59:43
プリントアウト(笑)
693デフォルトの名無しさん:2005/07/08(金) 12:28:43
ハンガリアン記法を支持する人のソースって、
変数の宣言個所と使用されている個所の距離が長いのかな?
694デフォルトの名無しさん:2005/07/08(金) 12:38:46
>>691
まあネタだと思うけど、必要なのは変数の「意味」がわかるような
命名をすることであって「型」ではないな。

>>693
ボケる方も馬鹿なら突っ込む方もアホだね。
そういう問題かよ。w
695デフォルトの名無しさん:2005/07/08(金) 13:04:55
ネタじゃねーよ。
そして「プリントアウト」で笑う理由がわからん。
引き継いだスパゲッティーソースはプリントアウトが基本だろ。仕事でやってるなら。

>>694
>必要なのは変数の「意味」がわかるような
>命名をすることであって「型」ではないな
ゲームだと、型が滅茶苦茶大事になるのね。

っていか、型情報が大事にならないようなきっちりとしたプロジェクトなら、
ハンガリアン使おうが使うまいが、命名がセンスあろうがなかろうが、どうでもいい希ガス
696デフォルトの名無しさん:2005/07/08(金) 13:09:09
>>694
変数の意味。
これはバイナリー配列のデータですよ。
という重要な意味を伝えるための記法こそが、ハンガリアンだろ。
697693:2005/07/08(金) 13:32:23
>>694
>そういう問題かよ。w
そうなんですか?。だとしたら
「なぜハンガリアンを使うのか」がわからなくなりました。
知っているなら回答下さい
698デフォルトの名無しさん:2005/07/08(金) 13:33:45
思うにハンガリアンな人はDirectX扱う人に多いと思う。
DirectXSDKとかnVidiaのサンプルにもハンガリアンなの多いし。
これらの要因を考えるに3Dには型が重要だからだと感じる
同じViewという変数があるにしてもあるときはベクトルでありまたあるときは行列かもしれない。
こういうときは変数名に型を指定してこそ、
WorldVector - ViewVector ベクトルの引き算だからViewからWorldへの方向ベクトルと意味が取れる。
WorldMatrix * ViewMatrix  行列の掛け算だから行列の合成と意味が取れる。
んで>>679にある情報量を保存したままタイプ量を減らすということで
ViewVectorならvViewのほうが楽や。
ViewMatrixならmatView さらに略すならmViewでも区別できるわちゅーことなんでは。

699デフォルトの名無しさん:2005/07/08(金) 13:39:53
正直なところ、型情報が大事にならないプログラムってのが想像つかないのだよ。
unsignedかそうでないかとか、超重要じゃん?

(JAVAにはunsignedが無いですか。そうですか)
700デフォルトの名無しさん:2005/07/08(金) 14:12:56
少なくとも静的型付け言語においては、型は重要です。
しかしこの命題から「ハンガリアンを使うべきだべきだ」
という結論が何故導き出されるのかが理解できなくて困っています
701デフォルトの名無しさん:2005/07/08(金) 14:44:22
ハンガリアン以上に、型を即座に理解できる方法があるなら支持する。
今のところ
・ハンガリアン
・エディタの参照機能

くらいしか思いつかない。
「すぐ上に書かれてるだろうから探せ!」はとてもじゃないがプログラマのセリフとは思えない。
ドカタプログラマ?と頭を疑ってしまう。

エディタの参照機能は強力だが、プリントアウトが必要な長大なソースの場合致命的だ。

さて、ハンガリアン以上の結論を楽しみにしている。
702デフォルトの名無しさん:2005/07/08(金) 16:13:26
うっせ
ハンガリアン使う奴は馬鹿って決まってんだよ
703デフォルトの名無しさん:2005/07/08(金) 16:18:34
>>701
>「すぐ上に書かれてるだろうから探せ!」はとてもじゃないがプログラマのセリフとは思えない。
>ドカタプログラマ?と頭を疑ってしまう。
ふーん。「探せ」という言い回しから
本当に探さなければいけないようなソースに塗れていることが想像できますね。
>エディタの参照機能は強力だが、プリントアウトが必要な長大なソースの場合致命的だ。
プリントアウトについてはこれを全くしないプログラマも多く、前提とか当然とか考えるのはいかがなものか
長大な関数/メソッドをメンテナンスしなければならないのはお気の毒です。
だが仮に長大な関数/メソッドの存在がハンガリアン使用の正当性を裏付けるものであったとしても、
長大な関数/メソッドの存在自体の正当性は何をもって裏付けますか?

>さて、ハンガリアン以上の結論を楽しみにしている。
「ハンガリアン以上の結論」を出す自信はありませんが。
長大な関数/メソッドを書く代りに、型情報については「すぐ上にあるから見ればすぐわかる」
という関数/メソッドを書く というのはどうでしょうか。
#どちらがどちらの代替案なんだかw
704デフォルトの名無しさん:2005/07/08(金) 16:30:22
> 長大な関数/メソッドを書く代りに、型情報については「すぐ上にあるから見ればすぐわかる」
> という関数/メソッドを書く というのはどうでしょうか。
魅力的な解決案だ。
メモリーとCPUパワーが潤沢な状況下では俺でもそう書く。

「昨今はメモリーやCPUパワーもありあまっているので、ハンガリアンは必要ない」
とでも主張したいのか?

逆に言えば「メモリーやCPUパワーが余っていない環境」ではハンガリアンは非常に強力なパワーを持つ。
なのにハンガリアン自体を否定する意味がわからん。

「いまどきCOBOLなんて使わねーよwwww」って言ってる馬鹿と変わらん。
ハンガリアン自体を否定したいのなら、後者のような環境でハンガリアンにとってかわる方法を提案してくれ。
705デフォルトの名無しさん:2005/07/08(金) 17:20:13
>>704
関数/メソッドの粒度を下げれば良いと言いました。
粒度を下げることによって確かに関数/メソッドの参照のオーバーヘッドは増加します。
メモリーとCPUパワーに余裕がなく、この種のオーバーヘッドも許容出来ない
と言う状況の存在自体が信用し難いものがあります。
そのような状況下で、なぜコンパイラ言語を使うかわからないからです。
いや信用しないわけではありません。
「そのような特殊な開発環境下ではハンガリアンが当然である」との表明にも反対はしません。
ハンガリアン自体の否定などしませんよ。ご自身の開発環境が特殊だと正しく認識しておられるならば
706デフォルトの名無しさん:2005/07/08(金) 17:31:48
なんのために705がこのスレにいるのか分からない件について。
707デフォルトの名無しさん:2005/07/08(金) 17:32:22
例えば携帯JAVAは?
708デフォルトの名無しさん:2005/07/08(金) 17:37:07
ヌルいというか、趣味でしかプログラム組んでないんだろうな。
ハンガリアンの是非はともかくとして、関数化を極力避ける環境が特殊って…。
湯水のごとく好き勝手できる環境のほうが特殊だよ。
709デフォルトの名無しさん:2005/07/08(金) 17:55:18
>>703
長大な関数なんかは、ハンガリアンに関係なく不可で関係ない。
1画面ですべて収まるような小さなクラスでもない限り、
メンバ変数の宣言とメソッドの実装ではどうやっても距離が離れると思うが。
710デフォルトの名無しさん:2005/07/08(金) 17:57:46
その一画面で全て収まるような小さなクラスを組み合わせて作れって言ってんだよ。
ハンガリアン人は本当に原始人だらけですねプゲラ
711デフォルトの名無しさん:2005/07/08(金) 18:04:13
俺はクラスのメンバには大体ハンガリアンを使う。
ローカル変数にはWinAPIの構造体1つを引数にするような関数用の変数とポインタのp程度しか使わない。
712デフォルトの名無しさん:2005/07/08(金) 18:05:08
今日は否定派のほうが頭悪そうやな。
713705:2005/07/08(金) 18:06:08
>>706
消えた方が良いですか?

>>708
私は職歴10年を超えるプログラマです。「どちらが特殊なのか」について議論する気はありません。
しかし「関数化を極力避ける環境が特殊である」という見解は変えませんが。
ご自分の開発環境が特殊だと言われて不愉快に思われたなら謝罪します。
しかし今現在、PCプラットフォームにおいてもその種の制限は無くなっています
参考のためにあなたの開発対象システムの「CPUとメモリ量」を回答してもらえませんか
714デフォルトの名無しさん:2005/07/08(金) 18:12:43
>>710
俺的にはクラスとは概念、機能とかでまとめていくものだと思っていたが、
1画面越えると分割していくものだったのか。
715デフォルトの名無しさん:2005/07/08(金) 18:38:08
>>709
ご指摘のとおり。
しかしながら、メンバ変数/クラス変数の問題について語り始めるとスレ違いになるのは避けられません。
「OOPLにおいてはハンガリアンは必須だ」というご見解でなければ、上の1行を回答とさせてください
716デフォルトの名無しさん:2005/07/08(金) 19:02:07
705は消えたほうがいいな。
ハンガリアンの是非について語るスレで「ハンガリアン自体の否定などしませんよ」といいながらハンガリアン批判しているんじゃ邪魔なだけ。
コウモリもいいとこだ。
717デフォルトの名無しさん:2005/07/08(金) 19:03:23
>>713
>>707のような携帯JAVAに限らず、今商売として成長中の携帯系プラットフォームでは
CPUやメモリを潤沢に使うことなんてできないのは覚えておいたほうがいい。
718705:2005/07/08(金) 19:18:00
>>716
「基本的には否定するが、特殊な環境下では否定しきれない」と言ったつもりですが。
了解。消えますよw

>>717
ああなるほど。勉強になりました。「特殊」と言ったのは言い過ぎでした。
ごめんなさい。
開発環境/動作環境の違いを無視して語ることは難しいテーマなのかもしれませんね。
719デフォルトの名無しさん:2005/07/08(金) 19:40:37
>>701
なんか倒錯してるねえ。。

コーディングの最中もし「型が知りたい」なんて思ってしまうとしたら、
それは変数名のセンスが悪いから。

さらに敷衍していえば、変数名のセンスが悪いのは、恐らくモデリングのセンスがないから。
対象をどのようにモデリングしているかに対するビジョンが明確じゃないから。
720デフォルトの名無しさん:2005/07/08(金) 20:37:26
>>719
具体的に>>698の例だとどんな変数名つける?
721デフォルトの名無しさん:2005/07/08(金) 20:46:26
>>719
>コーディングの最中もし「型が知りたい」なんて思ってしまうとしたら
他人のソースだから、当然思う。

>それは変数名のセンスが悪いから
センスのいい名前をつけろ! と言って新人がつけられるなら苦労しない。
だからハンガリアンというルール生まれた。

倒錯してるのは君。
ハンガリアン以上に「センスの無い人もある程度わかりやすい変数名をつけられるようにする」ためのルール」をしめしてくれよ。
722デフォルトの名無しさん:2005/07/08(金) 21:18:51
センスの無いやつはプログラム書かなくていいよ
723デフォルトの名無しさん:2005/07/08(金) 21:25:21
仕事したことの無い奴のセリフだな。
センスの無い奴もうまく扱うのが仕事人。
724デフォルトの名無しさん:2005/07/08(金) 22:01:17
結局ハンガリアン嫌いって、
俺のコーディングは素晴らしい!みんなもすぐ理解してくれるはずだ!
俺のソースはきれいだし。
ハンガリアンなんて使わないのが理想だもんな。俺コーディング最高!

な理想主義者なんだよな。
725デフォルトの名無しさん:2005/07/08(金) 22:02:59
>>723
ここは仕事人の板ではなくプログラム技術の板
726デフォルトの名無しさん:2005/07/08(金) 22:52:41
>>725
いつから「現実に即していない未来プログラム技術専用」の板になったんだ?
携帯プログラムや、組み込みプログラムのスレだってあるわけだが。
727デフォルトの名無しさん:2005/07/09(土) 00:04:15
クラスを、新たな型を定義しまくる近代プログラミングでは、
あまりに多くの型が出来るため、ハンガリアンではどうしてもムリが生じる。

ハンガリアンで即座に型を理解できる?ハハ面白いことを言うね。
728デフォルトの名無しさん:2005/07/09(土) 00:08:57
>>727
プリミティブはすぐわかるじゃないか
#と、反対派の俺が弱弱しく反論してみるw
729デフォルトの名無しさん:2005/07/09(土) 00:18:55
俺もクラスにはハンガリアンを適用しないときが多い。
730デフォルトの名無しさん:2005/07/09(土) 00:28:53
独自クラスのハンガリアン記法なんて用意されてるわけないだろうに(苦笑
731デフォルトの名無しさん:2005/07/09(土) 01:11:50
じゃあやっぱ役に立たんな
732デフォルトの名無しさん:2005/07/09(土) 01:15:52
>>731
独自クラスについてはプロジェクト内で拡張しろよ。
なんでお前がどんなクラスをつくるかを予測して、1から100まで先駆者が用意してると思えるんだ。
733デフォルトの名無しさん:2005/07/09(土) 01:18:51
独自クラスのハンガリアン記法なんていちいち覚えてらんねえよ
734デフォルトの名無しさん:2005/07/09(土) 01:38:10
クラスへ無理やり適用してるのは肯定派でもいないのでは。
あとプレフィックスが組み合わさるのもイマイチだと思う。
ということで配列のプレフィックスにa使うよりは複数形の単語を使うほうがよさそうに思える。
735デフォルトの名無しさん:2005/07/09(土) 01:39:38
二次元配列は?
うちの会社はbyte m_aabyData[10][10];とかやるけど。
736734:2005/07/09(土) 01:48:10
>>735
そっそ、おれもaaとかやってたけど、どーもなーと思う。
こーゆープレフィックスが重なることが反対派からみたら見づらいといわれる要因になってると思う。
代案はhoge2D[10][10]とか?反対派からのセンスあふれる代案希望。
737デフォルトの名無しさん:2005/07/09(土) 04:01:02
>> 736

hoge[10][10]

・定義部に変数の構造についてしっかりコメント
・上記変数を使う場合は添字に説明的な名前の変数or定数(列挙定数)を使う(+コメント)


つか、hogeが何に使われるものなのか分からないので名前は付けられない。


> m_aabyData[10][10];

・・・・。
いやね、それがちゃんとコーディング規約になってて
チームできっちり守られているならまあいいとは思うんだけどね・・・。
738デフォルトの名無しさん:2005/07/09(土) 09:17:12
しっかり守られてるなら、やっぱり
メンバー変数の、BYTE型の、二次元配列だな
と一目見て分かるのは強力だな
739デフォルトの名無しさん:2005/07/09(土) 09:49:02
サイズは?
740デフォルトの名無しさん:2005/07/09(土) 10:14:42
m_aabyData
・・・情報量がイマイチ
741デフォルトの名無しさん:2005/07/09(土) 11:15:10
IDEでもりもり作業してるので型なんてすぐわかります
742デフォルトの名無しさん:2005/07/09(土) 11:22:43
>>741
そのセリフはつまり、IDEでもりもり作業できればハンガリアンなんて必要ないってことだろ。
できない状況なら?
743デフォルトの名無しさん:2005/07/09(土) 11:24:35
ctagsとかglobalとか
744デフォルトの名無しさん:2005/07/10(日) 10:51:15
結局ハンガリアン否定論者は、実務を知らない理想主義者だったみたいだね。

研究所の博士が言うことは正しい。確かに理論上正しい。
だが実戦で使えるかどうかは別問題。

命中率99%を誇る銃とのたまったって、新兵が弾丸飛び交うジャングルで撃つ際その精度は保てない。
745デフォルトの名無しさん:2005/07/10(日) 11:08:09
結局ハンガリアン肯定論者は、実務を知らない理想主義者だったみたいだね。

マイクロソフトのハンガリ君が言うことは正しい。確かに理論上正しい。
だが実戦で使えるかどうかは別問題。

命中率99%を誇る銃とのたまったって、新兵が弾丸飛び交うジャングルで撃つ際その精度は保てない。
746デフォルトの名無しさん:2005/07/10(日) 11:16:21
ついにファビョッてコピペか…
747デフォルトの名無しさん:2005/07/10(日) 11:32:38
>>745
ハンガリアンは、そのルールが確定しているのだから新兵だろうがなんだろうが使えるだろうに。
「分かりやすくセンスのいい変数名をつけろ」なんて言われても、新兵はどうしていいやら。
748デフォルトの名無しさん:2005/07/10(日) 11:47:57
ハンガリアンしとけば変数名おざなりしてもいいと
おまえらは新兵の時に思っちゃったから、今の惨たらしい現実があるんだよ。

>744
研究所の博士とかどっから出てきたの。妄想乙
ハンガリアンは現場で生まれて、現場で消えていったよ。
749デフォルトの名無しさん:2005/07/10(日) 11:50:21
良い変数名をつける能力が無い。という問題に対して、
命名規則で杓子定規に決めてあげる。という発想自体が誤りだと思うな。
加えてハンガリアンてプレフィックスだけでそ。
変数本体の名称を決められないという問題は全然解決しないじゃないか。
ハンガリアンの存在理由のなかに「変数名を決める」は入っていないと思うけど。
入っているの?
750デフォルトの名無しさん:2005/07/10(日) 12:02:39
>>748
すげえ…例え話にマジツッコミいれてる…
751デフォルトの名無しさん:2005/07/10(日) 12:06:48
>>748
博士のたとえは、博士=非ハンガリアンじゃないか?

>>749
おいおい。

例えば「データ」を扱う変数名なら、新兵だって「Data」と名づけるだろ?
問題は「それはどのようなデータか」をどう伝えるかだ。

それをハンガリアンは「メンバー変数だからm_, BYTE型だからby, 二次元配列だからaa」と決めている。
じゃあ非ハンガリアンはどうするのか。
まずはこれを提示して欲しい。

「センスのいい変数名をつけろ!」と言われてつけられる。もしくはつけられるまで勉強だけしていればいい。
そういう状況ならなんら問題はないのかもしれんが…。
752デフォルトの名無しさん:2005/07/10(日) 12:19:03
センスの無い奴は首にすればいいじゃん。馬鹿?
753デフォルトの名無しさん:2005/07/10(日) 12:24:53
俺仕事でハンガリアン使ってるプロジェクト関わった事ないな
使われてるの?
754デフォルトの名無しさん:2005/07/10(日) 12:29:13
>>753
むしろ、ハンガリアンを使わずに済むプロジェクトってどんなのだ?
各自完全分業で、完全自社開発?
755デフォルトの名無しさん:2005/07/10(日) 12:38:28
あー・・・ハンガリアンを
「変数名に任意のプリフィクスを付ける命名法」という意味で言ってるのか?
756デフォルトの名無しさん:2005/07/10(日) 12:51:45
>>751
>例えば「データ」を扱う変数名なら、新兵だって「Data」と名づけるだろ?
付けない。Dataなんて変数名は良い変数名とはいいがたい

>問題は「それはどのようなデータか」をどう伝えるかだ。
あのさ、肯定派がそれを主張するのは勝手だけど、
既定の事実の様に記述しないでくれないかな。議論にならないじゃないか。
データ型が重要だという主張をしているってことは理解したよ
その重要性が変数本体の名称の重要性よりも高いのか低いのか
を回答して欲しいのだけれど

>それをハンガリアンは「メンバー変数だからm_, BYTE型だからby, 二次元配列だからaa」と決めている。
>じゃあ非ハンガリアンはどうするのか。まずはこれを提示して欲しい。
上記でそちらの主張を既定の事実の様に書くから、ここで「まずは」と書けるんだね。
ちょっと上を見ればすぐデータ型がわかるようなコードを書く。
上の方のレスを読んで、そのような事が出来ない人達がいることは判るけれど、
それが可能な環境ではそうする。
757デフォルトの名無しさん:2005/07/10(日) 13:19:31
> >例えば「データ」を扱う変数名なら、新兵だって「Data」と名づけるだろ?
> 付けない。Dataなんて変数名は良い変数名とはいいがたい
すげえ。断定だよ!
お前はおサルさんでも部下に持ってるのか!?(そこまでアホな奴には、非ハンガリアンなんてもっと無理だ!)

>ちょっと上を見ればすぐデータ型がわかるようなコードを書く。
あれ?その上では型はさして重要じゃないようなことを言っているのに、急に翻ったぞ??
「型」は重要なの?重要じゃないの?
ハンガリアン記法を使っている人間は、もちろん重要だと思っているよ。「変数本体の名称の重要性と同じくらい」ね。

>それが可能な環境ではそうする
まったくだね。
で、新兵にはなんて言えばそれを実行してくれるのかな?

ハンガリアン記法を新兵に守らせるのは簡単だ。
ハンガリアン記法を解説している紙の一枚も手渡せば明示的だ。

だが「ちょっと上を見ればすぐデータ型がわかるようなコードを書け」といってもなんら明示的ではない。
人によって10行上を「ちょっと上」と判断するものもいれば、100行上をそう判断するものも居る。

きっと君の意見をコンパイルするとこう怒られるよ。
「error: 'ちょっと上'の定義が曖昧です」
758デフォルトの名無しさん:2005/07/10(日) 13:32:02
とりあえず
ハンガリアン肯定派=変数の「型」を重視して命名
ハンガリアン否定派=変数の「意味」を重視して命名
でFA?

756ではないがハンガリアン否定派の俺としては
Dataなんて変数名はいかなる状況でもありえないと思う。
たいていの変数は何らかのデータを表しているわけで。
759デフォルトの名無しさん:2005/07/10(日) 13:41:48
class CSave{
int m_nAddress;
byte m_aabyData[][];
}

class CLoad{
int m_nAddress;
byte m_aabyData[][];
}
とかこんな感じ。
m_の上にはクラス定義があるのをお忘れなく。
760デフォルトの名無しさん:2005/07/10(日) 13:51:15
ハンガリアンで書いてあると激しく読みづらい。
なんでこんなもん使うのか理解できない。
定義にジャンプもできないクソエディタ使ってるから必要なんだろうな。
761デフォルトの名無しさん:2005/07/10(日) 13:52:38
aabyDataってバカか。au by KDDIかドアホ
762デフォルトの名無しさん:2005/07/10(日) 13:56:27
「ああばいでーた」ってなんかドイツ語っぽいね。
763デフォルトの名無しさん:2005/07/10(日) 13:59:29
>>760 >>741-742
>>761 感情論。具体的代案皆無
764デフォルトの名無しさん:2005/07/10(日) 14:02:56
>>763
糞環境の方が今や少ないんだから、
糞環境使ってるお前の会社内の掲示板内で
ハンガリアンは有効だと吼えてろよw

2chでピーチクパーチク囀るなw
765デフォルトの名無しさん:2005/07/10(日) 14:04:56
>>764
さすが妄想プログラマーw
理想的環境ばかりで働けるなら、さぞやプログラマーは楽な商売でしょうね。
研究所の中だけで吼えていてください。
766デフォルトの名無しさん:2005/07/10(日) 14:08:28
糞環境だけでしか働けない低脳の分際で吼えるってw
767デフォルトの名無しさん:2005/07/10(日) 14:10:04
>>765
つうか具体的に何の仕事に何年従属してるか教えてくれw

俺ゲームプログラマ5年目ね。
768デフォルトの名無しさん:2005/07/10(日) 14:10:06
糞環境になったら働けないプログラマなんぞ、ただのゴミじゃん。
俺仕様の世界でしか働けないなら、他人と連携とるのもままならん。
769デフォルトの名無しさん:2005/07/10(日) 14:11:25
なんだこのスレ
770デフォルトの名無しさん:2005/07/10(日) 14:12:48
>>768
バーカ
糞環境の古い常識を新しい環境に持ち込まれる方が今や迷惑なんだよ。
ハンガリアン付けないと働けないドアホが言うなw
771デフォルトの名無しさん:2005/07/10(日) 14:14:07
>>757
何を主張したいか全然わからん
772デフォルトの名無しさん:2005/07/10(日) 14:14:32
>>770
どこの誰がC#やJAVAにハンガリアン持ち込めなんて言ったんだ?
被害妄想もいいとこ。
>>1読め。
>C/C++みたく型付けが強い言語ではハンガリアンって有用じゃないだろうか。
と書かれてるだろが。
773デフォルトの名無しさん:2005/07/10(日) 14:17:54
>>772
>どこの誰がC#やJAVAにハンガリアン持ち込めなんて言ったんだ?

それはこっちのセリフだよw!
新しい環境=JavaやC# と俺言ったか?

反論すればいいってもんじゃねーだろw
774デフォルトの名無しさん:2005/07/10(日) 14:19:00
>>770
その糞環境の古い常識で作られたOS。実機上でプログラム組まさせてもらっている坊やがいきがるなよw
まさかVisualStudioはVisualStudio上で作られたとか思ってんじゃねーだろーなw

775デフォルトの名無しさん:2005/07/10(日) 14:20:26
>>758 同意。

ハンガリアン使いたい人は勝手に使えば?
776デフォルトの名無しさん:2005/07/10(日) 14:21:27
>>759

だからさ、そのクソクラスは何なの?
何に使うの?何のために使うの?
なんでm_aabyDataが多次元配列になってるわけ?

他人が読むってことをまったく考えてないでしょ。
ハンガリアン以前の問題だな。
777デフォルトの名無しさん:2005/07/10(日) 14:21:53
>>774
時代に付いていけない、永遠の坊やが何を言ってるのw

結論

糞環境の皆さんはハンガリアンを使ってください。
あなたの会社内でハンガリアンは有効だと主張してください。

しかし、2ch等の、一般的に非糞環境な人が多いところで
一生懸命ハンガリアンが有効だと吼えないでください。
778デフォルトの名無しさん:2005/07/10(日) 14:22:20
例につっこまれてもなぁ…。
779デフォルトの名無しさん:2005/07/10(日) 14:22:55
アホな例を出せばつっこまれるのはあたりまえ
780デフォルトの名無しさん:2005/07/10(日) 14:23:01
>>777
ここはハンガリアンについて語るスレなんだが。
「非糞環境について語ろうぜ」スレでも立てて、そこで吼えててくださいな。
781デフォルトの名無しさん:2005/07/10(日) 14:25:01
>>776
>だからさ、そのクソクラスは何なの?
>何に使うの?何のために使うの?
それはプロジェクトで決まってることだから、ハンガリアンとはまったく関係なし

>なんでm_aabyDataが多次元配列になってるわけ?
何かしらそうする理由があったんだろ。
例えばセーブデータが冒険の所ごとに分かれてるとか。
これまたハンガリアンとはまったく関係なし
782デフォルトの名無しさん:2005/07/10(日) 14:25:06
>>780
ハァ?反論できないといつもその手だなw
783デフォルトの名無しさん:2005/07/10(日) 14:29:24
>>782
その「いまさらCOBOL使ってるなんてアホじゃねーのwwww」という論法どうにかならんのか?
需要があり、金になるからまだCOBOLがあるわけなんだが。
784デフォルトの名無しさん:2005/07/10(日) 14:32:43
>>783
バーカ。
古い糞環境の奴らはハンガリアン使えばいいって言ってるだろw

それをさも本流かのように2chで喚くなと言ってるんだよw

古い資産を活用するためにはCOBOLは有効だけど、
新規開発するのに今更COBOLは叩かれて当然だろw
785デフォルトの名無しさん:2005/07/10(日) 14:35:39
言葉足らずだったな。
同様に、糞環境でプログラムを組んでもらう必要がある。そういう需要があるからこそハンガリアンはまだあるのではないのか?

「糞環境」な仕事を誰も引き受けなかったら、そのプロジェクトは一体どうなってしまうのやら。

>>784
?????
これほどの馬鹿は久々に見た。プログラムをやっている人間とは思えない非論理的な意見。
「さも本流かのように2chで喚くな」って、ここハンガリアンスレなんだが。

そして自分の中で「古い〜略」て結論がでているなら、もうこのスレに書き込む必要無いだろ。
786デフォルトの名無しさん:2005/07/10(日) 14:36:34
>>784
お前w
COBOLスレでCOBOLの話してるところに割って入って「いまさらCOBOLなんてアホwww2chでCOBOLの話なんてすんなwww」とか喚くのか?
787デフォルトの名無しさん:2005/07/10(日) 14:38:54
否定派「ハンガリアンは読み辛い」
肯定派「ハンガリアン守ってもらわないと変数型がすぐにはワカラン」
否定派「すぐにわかるようなコードにしろ」
肯定派「新人にはそんなコードは書けない」
・・・なんだか最後の意見は
「教育コスト負担を放棄するための方便としてのハンガリアン記法」
に聞こえるな。
788デフォルトの名無しさん:2005/07/10(日) 14:39:24
>>784
あー…。ちょっとすまん。
もしかして君は、CやC++でプログラムを書く時ハンガリアンを使わないのかね…?
789デフォルトの名無しさん:2005/07/10(日) 14:39:32
何言ってんだこのドアホ。こんなドアホ初めて見た。

ここはハンガリアン賛美スレじゃねーだろが
「ちょっと待て!ハンガリアン」スレだそ

ハンガリアン否定されたくらいで、糞環境と罵られたくらいで怒るなら
「ハンガリアン最高スレ!糞環境の中心でハンガリ愛を叫ぶ」スレ
でも立ててそこに引き篭もってろw
そこには手を出さないでやるからw
790デフォルトの名無しさん:2005/07/10(日) 14:42:58
>>789
だから、なんでハンガリアン自体を語るスレなのに「糞環境なのが悪い」とかそういう結論になるのだ?

・ハンガリアンは糞環境でしか役に立たない
という意見は
・ハンガリアンは糞環境で役に立つ
という意見と同義だろ?
791デフォルトの名無しさん:2005/07/10(日) 14:43:16
>>789
同意
#あんまり煽るとヨクナイよ
792デフォルトの名無しさん:2005/07/10(日) 14:43:44
>そして自分の中で「古い〜略」て結論がでているなら、もうこのスレに書き込む必要無いだろ。

よく考えろ低脳。
自分の中でハンガリアンが有効だと結論が出てるなら、
お前もこのスレに書く必要はないだろ。
793デフォルトの名無しさん:2005/07/10(日) 14:47:07
>>790
少し違う
・ハンガリアンは糞環境では役に立つ場合がある
794デフォルトの名無しさん:2005/07/10(日) 14:50:31
>>793
それもそーだなw

>>792
俺は「自分では有効だと思うが、それ以上の代替案があるなら知りたい」と思ってるんだが。
795デフォルトの名無しさん:2005/07/10(日) 14:52:09
>>790
だからねぇ坊や。「糞環境なのが悪い」とか結論出してないでしょ。
勝手に意見捏造すると話が進まないでしょ。

糞環境の人でハンガリアンが有効だと信じてる方は使ってくださいね。

2chでハンガリアンが有効だと主張するときは
まず自分の環境は今時の水準からすると糞なのだと念頭に置いてください。

そして、最新の環境ではハンガリアンは害悪にしかならないということも頭に入れてください。
796デフォルトの名無しさん:2005/07/10(日) 14:53:57
797デフォルトの名無しさん:2005/07/10(日) 14:56:26
>>795
>そして、最新の環境ではハンガリアンは害悪にしかならないということも頭に入れてください。
つまり、例えば君がオープンソースでソースコードを公開するとき横にこう書かれるわけだ。
「最新の環境でソースを読んでくださいね」

( ゚Д゚)…
798デフォルトの名無しさん:2005/07/10(日) 14:59:27
たくましい想像力による間抜けな反論だな。
799デフォルトの名無しさん:2005/07/10(日) 15:00:00
>>796
言いたいことがあるなら、はっきり言えばいいのに。

もうグゥの音も出ないってこと?
800デフォルトの名無しさん:2005/07/10(日) 15:00:55
>>797
( ゚Д゚)…

それが反論になってると思ってるの?
801デフォルトの名無しさん:2005/07/10(日) 15:02:42
ハンガリアン否定派
・最新の環境の前ではハンガリアンは無意味。読みにくくなるだけ

ハンガリアン推奨派
・最新の環境だけで仕事できるわけでもあるまいし、ハンガリアン全否定する必要なくね?

ハンガリアン否定派
・全否定はしないよ。糞環境でがんばってくださいねw

ここで煽るからこじれる。
802デフォルトの名無しさん:2005/07/10(日) 15:04:38
違う違う

ハンガリアン否定派
・最新の環境の前ではハンガリアンは無意味。読みにくくなるだけ

ハンガリアン推奨派
・最新の環境だけでしか仕事出来ないのかよ?

ここで煽るからこじれる。
803デフォルトの名無しさん:2005/07/10(日) 15:07:12
>>802
いや、そこは見事なまでにつっこみ所だろ。
804デフォルトの名無しさん:2005/07/10(日) 15:08:27
頭の古いのは怖い。
まぁ周りには居ないからいいけどさぁ。
もし最新環境でハンガリアンしてたらぶっ殺すよ。
805デフォルトの名無しさん:2005/07/10(日) 15:10:13
最新の環境でしか出来ない訳じゃねーんだよね。
もうそんな機能がついたモノが出てから何年経ってると思ってるのかと。
新しい環境に適応できない生物は滅びるよ?
806デフォルトの名無しさん:2005/07/10(日) 15:12:08
「winな人達」がハンガリアンの呪縛から解放されつつあるのが心底嬉しいな
807デフォルトの名無しさん:2005/07/10(日) 15:13:24
常にIDEで作業できる人間はいい…。
ぬるい環境(別に馬鹿にしているわけではない。俺だってぬるいほうがいい)から見下ろして「いまさらあんなこと(ハンガリアン)やってるよww」
とか笑ってられるうちが華よ。

「ソースコードは持ち出し禁止です。プリントアウトしたものを持っていってください」
なんてプロジェクトに当たらないといいな。俺も当たりたくなかったw
808デフォルトの名無しさん:2005/07/10(日) 15:16:48
あんまり開発環境は関係ない気がするけど。。
809デフォルトの名無しさん:2005/07/10(日) 15:18:14
>>781
ほんとハンガリアン以前の問題だな。
その例でも実際のソースでも型情報だけ明示的になっても意味ねーだろがバカw
代案もクソもねーだろw

何のためなのかを伝えることが疎かになってるっつってんだよ。
810デフォルトの名無しさん:2005/07/10(日) 15:18:52
そうそう。>>807読んで「何それw意味わかんねーよw」とか言うなよ?
俺だって意味わからんから。
一度詰め寄ってみたけど「規則ですから」しか返ってこねーし。規則決めた人間もう会社にいねーしw

しかしすまん。ハンガリアンと直接関係ないな。
興味持ったらプログラマー板にでもきてくれ。
811デフォルトの名無しさん:2005/07/10(日) 15:28:39
漏れも以前はハンガリアン派だったけど、昔のコードを
見直したら意外にプリフィクスが見難かったので脱退した。

英単語に余計なもん付いてると読みにくいよホント(´・ω・)
812698:2005/07/10(日) 16:19:37
ハンガリアンだから変数の意味を軽視というのには賛成できんな。
十分に意味が取れる変数名をつけつつ、
必要なときに一目で型をわかるようにつけるというのがおれのスタンス。

IDE環境があるといってもデバッグするときなんかは現在実行中のコードから
どこにもとばずに一目で型がわかるほうが断然便利かつ早くコード追えるとおもうけどな。

で、>>736でもある俺は見づらくなるようなプレフィックスが重なる命名は反対。
ただ変数の宣言方法が
extern int hoge;であるからスコープ、型、意味と同じ順番で命名するハンガリン
はそれほど見づらくないと思うのだが。
こーゆーのは主観的な慣れの問題で
for(){
じゃなきゃいやだとか
for()
{
のほうが読みやすいとか主張するよりも、自分がどちらでも楽に読めるようにしておくほうが
他人と仕事する上でははるかに有利だと思うのだが。
一般的に何かを否定するよりも、自分と違う考えを理解しようとするほうがはるかに重要なことだと思う。
813デフォルトの名無しさん:2005/07/10(日) 16:35:35
>自分と違う考えを理解しようとするほうがはるかに重要なことだと思う。
同意だが。
ハンガリアンを規約として位置付けることは多い。
このことはその見解からするとNG?
814デフォルトの名無しさん:2005/07/10(日) 16:39:23
>ハンガリアンを規約として位置付けることは多い。

本当?どんな業界でどれくらいのプロジェクト見てきたの?
815デフォルトの名無しさん:2005/07/10(日) 16:47:56
>>814
757に実例が書いてある。規約化の現実の有無がそんなに重要か?
816デフォルトの名無しさん:2005/07/10(日) 17:31:01
815=813 ?

>ハンガリアンを規約として位置付けることは多い。

少なくとも複数の業界・会社を渡り歩いて数多くのプロジェクトを見てこないと
こんな発言はできないと思うけど。

答えないってことは大して見てきてないんでしょ?
なんでそんな嘘つくの?


>規約化の現実の有無がそんなに重要か?

規約化もされていないのにハンガリアン使ってるの?
重要かどうかはあんたの現場がどんな形態で開発しているか
よく分からないからなんとも言えないんだけど、一般的に言って重要でしょ。

俺の現場では色んな会社の色々な年齢の人たちと一緒に開発してるから
ハンガリアンなんて知らない人も多いよ。
そこで規約化もされてないのにハンガリアンなんか使ったらどうなると思う?
817デフォルトの名無しさん:2005/07/10(日) 19:34:54
>>816
多いからこそハンガリアンというものが一般浸透したわけで。
少ないならそもそも普及してないだろ。

>そこで規約化もされてないのにハンガリアンなんか使ったらどうなると思う?
「おや、おもしろいコーディングですね。へえ、確かに一目で型などがわかって便利ですね^^」

ってなると思う。
「見づらいからつけるな!」って言われる率よりはね。
論理的に規則が決まっており、可読性があり、長い年月使われてきただけの威力がある。
わざわざ「なんとなく見づらいから」という理由で全否定する人間のほうが少ないと思うんだがなぁ。
818デフォルトの名無しさん:2005/07/10(日) 19:54:53
>>817
それは思いこみだと我は思いこむ
819デフォルトの名無しさん:2005/07/10(日) 19:59:10
しかし、一時はみんなハンガリアンを守れと言われていたほどまでメジャーな規則。
それはやっぱり、当時のプログラマ達から支持されていたからだろ?
(ここは否定されるところではないよな?)

最近は「ハンガリアンを使わなくても大丈夫そう」という環境にシフトしつつあるから、ハンガリアンを捨てようとしているわけで。
820813:2005/07/10(日) 20:04:06
誰も俺の質問に正面から答えようとしない・・・
規約にしているプロジェクトを二つばかり目撃したから質問したのに
俺の目撃したプロジェクトはレアケースで規約にしているところなんか殆ど無いの?
はぐらかしのレスばかりで嫌になるぜ
821デフォルトの名無しさん:2005/07/10(日) 20:26:10
>>820
少しはまわりのレスを読め。
少なくともうちは規約にしてるよ。
822813:2005/07/10(日) 20:34:24
>>821
おぉぅ。有難う御座いました。
>>698氏にも答えて欲しいな。
「書いたことは一般論であって実務では話は別」なんていう回答じゃなきゃいいけど
823デフォルトの名無しさん:2005/07/10(日) 20:40:28
698は別に質問してるわけじゃないと思うが。
タイプの量というよりは、ViewVectorとかかれると、型がVectorなのかただたんにベクトル量を表す別の何かなのかが区別つかない。
824デフォルトの名無しさん:2005/07/10(日) 21:28:21
WorldMatrix,ViewMatrixは分かるが
WorldVector,ViewVectorって意味不明な例作るなよと
825デフォルトの名無しさん:2005/07/11(月) 11:55:44
>>819
>一時はみんなハンガリアンを守れと言われていたほどまで
「みんな」という部分は否定しておこう。
826デフォルトの名無しさん:2005/07/11(月) 22:51:25
ハンガリアンなんてMS社内でも意見が分かれてたじゃないか
827デフォルトの名無しさん:2005/07/12(火) 00:36:42
ハンガリアンのほかは、台頭すらしてこなかったじゃないか
828デフォルトの名無しさん:2005/07/13(水) 00:59:20
そもそもハンガリアンが言うほど台頭してたのか?
してないでしょ。
829デフォルトの名無しさん:2005/07/13(水) 03:05:26
ちと興味深い話が。

Radium Software Development "050704 - Hungarian Notation (1)"
ttp://www.radiumsoftware.com/0507.html#050704
830デフォルトの名無しさん:2005/07/13(水) 09:02:36
>>828
少なくともプログラマーという職業についていれば、一度は聞いたことがあるくらいには台頭しているぞ。
831デフォルトの名無しさん:2005/07/13(水) 23:01:58
>>829
かなり興味深い内容だね。

特にここ。

>本来 Simonyi 氏が意図していたのは,言語の仕様として存在する「型」
>ではなく,その変数が持つ「意味」や,その変数が利用される「用途」
>などのように,言語の仕様としては扱うことのできない付加的な情報を
>与えるというものだった。

このスレのハンガリアン使いにリンク先をしっかり読んでもらいたいね。


ただ、このリンク先を読むと、例え本来の意味のハンガリアン記法でも
使用すべきでない記法であるということ分かる。
832デフォルトの名無しさん:2005/07/13(水) 23:06:20
>>830
有名だからといって多数の現場で使用されているとは限らんのだよ。
833デフォルトの名無しさん:2005/07/13(水) 23:22:50
旧VBでは、ハンガリアン、てか、型プレフィクスがデフォだった希ガス。

Dim strHoge As Integer

とかたまにあって殴りたくなったけどw

ただまあ、あれも使っているときは(標準コントロールの類に関しては)
判り易かったけどなあ。

今でも、コマンドボタンとかcmdHogeとかつけたくなるよ。つけないけどw

(レベルの低い話ですまんね)
834デフォルトの名無しさん:2005/07/14(木) 00:23:12
>>832
話ずれてる
835デフォルトの名無しさん:2005/07/14(木) 00:31:25
>>834
妄想くらい許してやれよ。
結局ハンガリアン否定派なんて、まわりに足並み揃えるのが嫌いな俺仕様糞グラマなんだから。
836デフォルトの名無しさん:2005/07/14(木) 00:38:28
足並みを揃えた結果、ハンガリアンは使わないことになったんだが。
低脳は困るな。
837デフォルトの名無しさん:2005/07/14(木) 01:07:36
なんだやはりハンガリアンて「伝言ゲームバグ」の実例だったのか。
笑える。Water Fall 開発モデルの場合と同じじゃないか
838デフォルトの名無しさん:2005/07/14(木) 07:30:47
やれやれ。
>ハンガリアンを使わないことになった
どこが?
C#やJAVAでってこと?そりゃそうだ。

CやC++でソース書くなら、羞恥心をもっているならばハンガリアン否定なんてしないこったな。
839デフォルトの名無しさん:2005/07/14(木) 08:57:08
なんでC#とJavaではやらないのに、C,C++ではやるという低脳なことになるの?

どっかのバカはハテナ日記で、
C,C++は名前が衝突するから、
とかバカなことほざいてたな。
あれどこだっけか。

class Number{};

void foo(){
int Number; //ここで衝突する int nNumberとすれば衝突しない
}

とかこんな感じの糞頭悪い奴だった。
840デフォルトの名無しさん:2005/07/14(木) 09:49:49
それはアホだな。
だがアホな利用者もいるのが普及品の宿命。普及品自体がアホなわけではない。

で、なんでC#とC,C++はまったく違う概念でできているのに同一視してるの?
841デフォルトの名無しさん:2005/07/14(木) 15:09:40
>>698
ViewVector ってのはビュー座標系での位置ってこと?
なら PositionInViewSystem とかかな。
ローカル変数なら posInView くらいだけど。

WorldMatrix * ViewMatrix も何したいのかわからないな
LocalWorldTransform * WorldViewTransForm のことかな?
ローカルなら lwmat * wvmat くらいなもん。

vView なら posView とか dirView とか。

だから意味や用途を明示してくれ。
n とか us とかなじゃくて idx とか cnt とか。
v じゃなくて dir とか pos とか deltapos とか。


ところで、IDE 使わない人たちも、grep や ctags くらいは使える環境なんでしょ?
842デフォルトの名無しさん:2005/07/14(木) 16:14:08
>>833
>Dim strHoge As Integer

きっと strawberry hoge (であってほしい)
843デフォルトの名無しさん:2005/07/14(木) 16:30:10
strHoge = strong hoge
844デフォルトの名無しさん:2005/07/14(木) 22:21:54
使いたい奴は使えばいい
845デフォルトの名無しさん:2005/07/14(木) 23:27:09
ハンガリアン支持者はずっとそう言ってるな。
C#やJAVAでまで使えなんていわないし。

ハンガリアン否定派が、なんか世界から殲滅しなきゃ気がすまないくらい叩いてる。潔癖か?
846デフォルトの名無しさん:2005/07/14(木) 23:41:20
潔癖なつもりはないけど。
個人的な理由を書くと「ハンガリアンを使ったソースをメンテナンスするのが嫌だ」
847デフォルトの名無しさん:2005/07/15(金) 00:13:39
正直な所、ハンガリアンの実害は「可読性の低下」とそれに起因する害だけなのだから、
そんなに目くじら立てなくても…と思うのだが。
(他にもっと害があると言うのならば教えてクレ)
848デフォルトの名無しさん:2005/07/15(金) 00:16:10
>ハンガリアンを使ったソースをメンテナンスするのが嫌だ
これがよくわからん。

「m_aabyData」
とあったとして、非ハンガリアンは「大文字の部分から後ろだけ見ればいい」んだが、
そんなに可読性が低下するのか??
849デフォルトの名無しさん:2005/07/15(金) 00:27:08
迷惑なんだよ。他人が読むってことを考えてないやつが多い。
効率良いと思ってやってるかもしれんが他人には違うってこと。
850デフォルトの名無しさん:2005/07/15(金) 00:30:22
>>847
可読性低下すんの?
851デフォルトの名無しさん:2005/07/15(金) 00:55:31
>>848
「最初の大文字」を捜すのがめんどい
852デフォルトの名無しさん:2005/07/15(金) 00:58:57
>>848
>>850
ハンガリアン記法部分を適当な文字列に置き換えたソースが読みやすいかどうか試してみたら?
その例だとm_aabyの部分ね。y_ddtoDataとかね。



ハンガリアン使いはこんなやつらばっか。

853デフォルトの名無しさん:2005/07/15(金) 01:06:39
ハンガリアンをーしらないー人にはーm_aabyはーいみのあるーもじれつにー見えないの。
意味のないー文字列がーへんすうにーついてるーソースコードがー読みやすいとーおもってんの?
854デフォルトの名無しさん:2005/07/15(金) 01:14:22
結局自分が嫌いやからあれこれ難癖つけてるだけやろ。
先に感情があってあとから理由を考えてるわけや。
855デフォルトの名無しさん:2005/07/15(金) 01:14:59
いや。「変数名称に型情報を付ければ読みやすくなる」というようなソースが嫌なのだ
856デフォルトの名無しさん:2005/07/15(金) 01:27:53
んじゃこういうことやな。
日本人にとって英語はわからん。
アメリカ人にって日本語はさっぱりわからん。

んで文字から発音がわからんとは糞言語だ!
ひらがなカタカナ漢字と多すぎるのは糞言語だ!
と罵り合ってる訳やな。

自然言語なら国別で分かれてるから日常問題となることは少ないんやけど
プログラムなら仕事でぶつかる機会が多いわけやな。
857デフォルトの名無しさん:2005/07/15(金) 01:36:15
>>847

>正直な所、ハンガリアンの実害は「可読性の低下」とそれに起因する害だけなのだから、
>そんなに目くじら立てなくても…と思うのだが。

「可読性の低下」ってプログラムにとっては致命的な欠陥だと思うけど。
書きっぱなしのプログラムなんて少ないんじゃないかなぁ。
858デフォルトの名無しさん:2005/07/15(金) 01:54:06
違う。読みやすさ/判りやすさというのは主観であって、
ハンガリアン使えば読みやすくなるという主観の押し付けが不愉快なのだ。
私の主観はハンガリアン使っていても使わなくても充分読みやすく感じるのが、読み易いソースだ。
変数命名をハンガリアン等で工夫しただけで読みやすくなるソースなど無い
859デフォルトの名無しさん:2005/07/15(金) 02:01:12
ちゅーかこんなところで変数名の例だけ出しても意味なくない?
例として出してるのも一般性を持たせようとhogeとかdataとかにしてるように見える。
で、実際の使用には一般性なんかいらないわけで。

ハンガリアンを使わない例として>>737を見ても
hoge[10][10]なんてまったく意味わからん。

>>841なんかはわかりやすいと思うが別にハンガリアンのプレフィックスついて
vPositionInViewSystemでも困らん。
かといって俺も自分の知らんプレフィックス出てきたら深読みしようとして困るんやね。
kHogeHogeってついてたらkってなんやねん?みたいな。
あぁconstか、とわかればそれ以降困らないけど。

ちゅーことでお互いの落しどころとしては、
一覧表みたいなのを目につきやすい所に書いておく。
クラスごとに新しいプレフィックスは作らない。
ってところちゃうの。
860デフォルトの名無しさん:2005/07/15(金) 02:13:59
>>856
何が言いたいのか良く分からない。

お前は関西人にしか分からない言葉を
関西人かどうかも分からない人に対して使うか?

相手が関西人なら、または独り言で呟くなら何も問題ない。
でも相手が関西人じゃなかったら?

知識を共有しているかどうかってことが大事。

で、無意識的に知識を共有させようとするのがハンガリアン使い。
だから嫌われる。
861デフォルトの名無しさん:2005/07/15(金) 02:19:51
方言までつっこむかー。
広島弁やら博多弁やら土佐弁で書かれた本や漫画なんてなんぼでもあるやん。

標準語が明治以後に人工的につくられた言語であるのに対して、方言には血と心が通っている。
標準語が全国を覆っている無機的なコンクリートであるとすれば、方言は有機的な言葉であって、
青々と繁る草や、樹木のようなもの。方言こそが本当の日本語。
862デフォルトの名無しさん:2005/07/15(金) 02:27:33
>>861
え・・・?
酔っ払ってるんですか・・・?
た、例えですよ!
意味を考えてください意味を!
863デフォルトの名無しさん:2005/07/15(金) 08:16:39
>ハンガリアン否定派が、なんか世界から殲滅しなきゃ気がすまないくらい叩いてる。潔癖か?

とか言うてるけど、否定者の俺は、俺と関係無いところでは自由に使えと言ってる。


肯定者が「C/C++で使わない奴は協調性が無い」とかアホなこというから、
その考えを世界から殲滅しなきゃ気がすまないくらい叩いてるんだよ。

C/C++のオープンソースでハンガリアンとか見たことねぇよボケ
864デフォルトの名無しさん:2005/07/15(金) 10:26:33
まっとうな app hungarian なら従うだろうが、
aaby とかあまりにもくだらないのを押し付けられるのは嫌だな。
865デフォルトの名無しさん:2005/07/15(金) 11:37:44
えーっと…。
ハンガリアン使わないときの可読性低下については無視なのか…?

SaveData

って変数があった時、これをどうしろというのだ。
実装者には分かるのかもしれんが…。
866デフォルトの名無しさん:2005/07/15(金) 11:41:30
>>863
ほい
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_74.htm
Windowsプログラマーのお伴「猫でもわかるプログラミング」から。
ハンガリアンだらけのオープンソースですが何か?

選んだ章は適当に目に付いたものを選んだ。他意はない。
他の章ももちろんハンガリアンだらけだ。
867デフォルトの名無しさん:2005/07/15(金) 11:45:21
>>860
非ハンガリアン
 → いつものマクドナルド行こう

ハンガリアン
 → 新宿一丁目のマクドナルドに徒歩で行こう

どっちが知識の共有を求めているのやらw
そりゃ「いつもの」という知識が共有されているなら、ハンガリアンは冗長なのかもしれん。
だが相手が「いつもの」を理解している保証なんてねーんだよ。
868デフォルトの名無しさん:2005/07/15(金) 11:47:22
なんで変数名を文章に対応させてんだよ。
869デフォルトの名無しさん:2005/07/15(金) 11:52:34
分かりやすいと思ったから。
870デフォルトの名無しさん:2005/07/15(金) 11:54:46
やすくないし。
871デフォルトの名無しさん:2005/07/15(金) 11:59:06
非ハンガリアン
→ これはセーブデータを司る変数です

ハンガリアン
→ これはセーブデータを司る変数です。
   このクラスのメンバー変数です。
   byte型の二次元配列です。

ハンガリアンの方が情報量が多く、明示的。
「情報量が少なくいほうがいい」なんて、プログラマとしてどうかと思うぞ。
872デフォルトの名無しさん:2005/07/15(金) 12:03:55
「byte型の二次元配列」なんて情報がいったい何の役にたつのか。
873デフォルトの名無しさん:2005/07/15(金) 12:56:15
>>872
想像力の欠如した馬鹿
874デフォルトの名無しさん:2005/07/15(金) 13:08:53
>>872
Streamにそのまま流して大丈夫なのかどうか
添え字
解放する際の手順

ぱっと思いつくだけでこれだけある。
875デフォルトの名無しさん:2005/07/15(金) 13:55:13
>>865
ハンガリアンはプリミティブ型にしか適用しない物だと思ってたけど……
SaveDataがBYTE配列と言われればそれまでですがw

あ、プリミティブ型かクラスかを識別するのには使えるかもしれない。
876875:2005/07/15(金) 14:02:09
SaveDataってのが出てきたときに知りたいのは、
 SaveDataがなんと言うクラスの変数であるか
ではなくて
 SaveDataに対して何が出来るのか(タイプになるのかな)
ではないのでしょうか。だからこそハンガリアンで変数の型が分かっただけでは
余り意味がなくて結局クラス定義まで戻らないといけない。

名前付けが重要と言うのは、名前を見ることによってそいつに対して適用可能な操作が
分かりやすい、という側面があるのでは。

逆にそういうタイプの情報が不要でむしろ変数型が重要(signedとかunsigned)なプリミティブ型
について言えば、ハンガリアンの有用性は否定できないと思います。

ただゲームとか組込でなければ、厳密な使い分けをするほどではない?ということで
そういう業界以外(業務システム開発など)では「イラネ」となっているのでは。
877デフォルトの名無しさん:2005/07/15(金) 14:12:45
SaveDataはプリミティブな型だよ。
だからこそハンガリアンの引き合いに出したわけで。

クラスに対する記法は、ハンガリアンでは定められていない。
ハンガリアン否定論者は、バイト配列とかに一体どういう名前を付けているのか不思議でたまらない。
878875:2005/07/15(金) 15:15:52
>>877
やっぱりバイト配列だったんですね。
私がつけるとすれば、memoryBlock / rawMemoryBlockとかあたりでしょうか。

ただ少なくともバイト配列がSaveDataであるってのは、ハンガリアン以前の
レベルですよね。データ抽象の観点からして。

本来的に言えば、class SaveDataのメンバ変数にBYTE[]があるという位置付けに
なると思います(クラス名SaveDataが適切かどうかの問題もありますが)。
879デフォルトの名無しさん:2005/07/15(金) 18:42:41
その理屈すごくね?
それができるならハンガリアン推奨派だってそうするってのw クラスが嫌いなわけじゃないんだから。

それにクラスの中には結局Byte配列があるわけで、それにはどういう名前つけるのよ。

問題は「バイト配列を作ることになった時に、それにどういう名前をつけるか」だ。
880デフォルトの名無しさん:2005/07/15(金) 19:18:33
呼び名も決めずに入力を開始するからDataなんて名前にしてしまう と思われ
881デフォルトの名無しさん:2005/07/15(金) 19:33:49
>>879
あれ、そんなに変だったでしょうか。まあ構造的に問題があるのは
ハンガリアンとは関係ないので例として良くなかった気はします。

>それにクラスの中には結局Byte配列があるわけで、それにはどういう名前つけるのよ。
一応書いておいたつもりでした:memoryBlock 又は rawMemoryBlock

ハンガリアン記法にするか否かの条件以外は全て完全に固定である
と言う前提であれば、型情報がついていてもいいかもしれませんね。
どっちにしてもわかんないのでw

この問題に関して言えば、ハンガリアンでどうこうできるレベルを
超えているのではないかというのが正直な印象です。
882デフォルトの名無しさん:2005/07/15(金) 20:27:19
誰かが君のクラスのソースを見たとき。
「memoryBlock?なんだそりゃ?」
ってなるのを防ぐのがハンガリアンなんだよ。

そりゃ最近は「パーツ化」が進んでいて複雑にはなりにくいよ?
でもね。パーツ化しまくれない環境ってのもまだまだあるわけさ。
883デフォルトの名無しさん:2005/07/15(金) 21:11:07
ハンガリアンでも「なんだそりゃ?」はおんなじ。
自分が「なんだそりゃ?」って思わないからといって、他の人も同様だと思うこと自体が誤り。
その種の誤りはハンガリアン肯定派の論理によくみられる。
自分が読み易いなら、他の人も読み易いはずだ
という論理ね
884デフォルトの名無しさん:2005/07/15(金) 22:07:22
意味わからん。

結局ハンガリアン否定論者は「なんとなく見づらい」という感情論しかないわけ?
ハンガリアン支持者の「情報の取捨選択について読み手に選択肢を与えるために気をつかうべし」という論理とはだいぶ違うね。
否定論者は、もっと論理的な何かしらの理由を持っているものだとばかり思ってたよ。
885デフォルトの名無しさん:2005/07/15(金) 22:17:23
俺はハンガリアン支持だ。
だが、ハンガリアンを使わなくて済むならそれにこしたことはないと思っている。

具体的には、クラス化が遠慮なく行えるような状況だ。
ネット上である程度実力のあるプログラマーが、ハンガリアン否定をしている場合がある。
が、それは全て俺と同じくC#やJAVAのような、カプセル化が容易な環境においての話だ。

決して「なんとなく見づらいから」とかいう糞みたいな理由ではない。
ハンガリアンを使わなくていい環境を支持しているだけだ。

そのことを理解せずに「俺はなんとなく見づらいからハンガリアン嫌いなんだよな。有名な○○さんも否定してるし、やっぱりみんな見づらいと思ってるんだ」
と喚いているクズ。それがこのスレのハンガリアン否定派。
886デフォルトの名無しさん:2005/07/15(金) 22:29:34
無限ループに迷い込んだみたいだ。
887デフォルトの名無しさん:2005/07/15(金) 22:31:27
とりあえず宮坂電人には笑われてもらおう
888デフォルトの名無しさん:2005/07/15(金) 22:38:06
論理的な理由?主観じゃなくて?
そんなもの無いってば。gotoを否定するのと同じだよ。
goto使わない理由なんか論理的に証明できなくても、
「自分が見辛い」これで充分だと思うけど。
読むのはいいけど書くのはいやなんだ
889デフォルトの名無しさん:2005/07/15(金) 22:56:08
>>874
何れも用途を表わすまっとうなハンガリアンを用いて相応しい関数やマクロで処理すべき内容。
aaby のようないろいろ足りないハンガリアンを使うべきではない。
890デフォルトの名無しさん:2005/07/15(金) 22:59:12
VBScriptとか型情報が弱い言語なら意味あるだろうけど
C/C++で使ってるのはもうね、アホかと
891デフォルトの名無しさん:2005/07/15(金) 23:04:39
>>889
色々足りてるハンガリアンを提示してみてくれよw
892デフォルトの名無しさん:2005/07/15(金) 23:05:55
>>890
逆だろ。
型付けが強いからこそ、必要なんじゃないか。
893デフォルトの名無しさん:2005/07/16(土) 00:25:11
もういいじゃん。
それぞれ、適用する環境が違うってことで終了じゃないの?

俺はJava/.NETばっかやってるけど、クラス/メソッドの分割で
一度に実行する処理を小さく小さく記述するから、
ハンガリアンは全く焼く煮立たん。
上の方にも同じことが書いてあったが、すぐそばに型の定義があるから。
唯一クラスメンバにのみm_とか_とか付けたりするが。

また、何かしらの理由でくそ長いメソッド書く必要があるなら、
ハンガリアンは有用だろうなとも思う。
正直、そんなプログラム組みたくないけどな。

どちらにしろ名前は非常に重要だ。
時間を書けて「名は体を表す」変数/クラス名を付けるべきだ。
そこに必ずしも型情報を含む必要は無いと思う。
894デフォルトの名無しさん:2005/07/16(土) 10:58:10
ハンガリアンなんてクズだよ。どんな環境でも使ってる奴は池沼
895デフォルトの名無しさん:2005/07/16(土) 14:12:50
と池沼が申しております。
896デフォルトの名無しさん:2005/07/16(土) 21:56:43
>>884

感情論じゃないだろ。
ハンガリアンを使わない人が読めば確実に可読性が下がるってことを理解しろ。


>ハンガリアン支持者の「情報の取捨選択について読み手に選択肢を与えるために気をつかうべし」という論理とはだいぶ違うね。

つまり冗長な情報ってことだよな。
その冗長な情報が必要な情報を読み取る場合に邪魔ってことなんだよ。
しかも、その冗長な情報は読み手が必ずしも理解できるとは限らないときてる。
897デフォルトの名無しさん:2005/07/16(土) 22:13:14
ハンガリアンを使わない人が読めば、可読性がある程度下がるのは理解できる。
だが読めないわけではない。
じゃあハンガリアンを使っている人が読んだ場合のメリットは?絶大だ。
898デフォルトの名無しさん:2005/07/16(土) 22:24:34
そんな言うほど効果ないよ。もう過去の腐れテクニック。
899デフォルトの名無しさん:2005/07/16(土) 22:35:47
ある程度ね。
>>852 に書いてあること試してみた?


変数見るたびに型情報を知ることのどこが効果絶大なんだ?
冗長だって言ってるだろ。


900デフォルトの名無しさん:2005/07/16(土) 22:55:52
ハンガリアン肯定派=非OOP
ハンガリアン否定派=OOP
901デフォルトの名無しさん:2005/07/16(土) 23:04:05
>>900
Dataであることは一目瞭然じゃん。
まぁ俺だったら「その前についている文字列の意味を勉強」するけどな。
意味のある情報だからこそついているわけで、それを「めんどう」とかそういう理由で無視しつづけるほうが効率わるそうだし。
902デフォルトの名無しさん:2005/07/16(土) 23:04:25
>>899だった。
903デフォルトの名無しさん:2005/07/16(土) 23:05:18
>変数見るたびに型情報を知ることのどこが効果絶大なんだ?
C#やJAVAしか触ったことのない新人類ですか?
904デフォルトの名無しさん:2005/07/16(土) 23:13:33
>>899
>変数見るたびに型情報を知ることのどこが効果絶大なんだ

BaseAmount = -1;
NowAmount = GetNowAmount();;
if (BaseAmount < NowAmount){
// 重要な処理
(略)
}

あれー。なんで重要な処理に流れないんだろう。
答え。NowAmountがunsignedだから。

どうして「型情報を知ることは重要ではない」なんて思える人がいるんだろう。
まったくもって不思議。(この場合は、コンパイルすれば警告が出てくれるがね。コンパイルすれば)
905847:2005/07/16(土) 23:18:11
まぁハンガリアン論争なんて、日本人と米人が
「日本語の読みやすさ」で言い争ってるようなもんだ。

もうちょっと異文化を許容する心の余裕を持たないか?
906デフォルトの名無しさん:2005/07/16(土) 23:25:06
Amount とついてる限り「普通は」非負整数なので
BaseAmount = -1 としている部分がおかしい。

つまりハンガリアン推奨派は変数名と合わない意味的に正しくないコードを書くから
ハンガリアンで型を明示しないとやってられない、ということが証明されたわけだ。
907デフォルトの名無しさん:2005/07/16(土) 23:31:21
自分の常識は他人にとって非常識。
こんなこと、プログラマなら誰だって知っていることなのに「普通」って何w

その「普通」を、プログラム初心者は誰にも教わらずに知っていろと?w

それともこの世界のどこかには、ハンガリアンを記したページと同等に詳しい「変数名の常識」を解説したページがあり、そこに「個数は非負整数なのが普通」と記されているのだろうかw

あ ほ か ?
思わず普段は使わない w を3つも使ってしまったわ。
908デフォルトの名無しさん:2005/07/16(土) 23:36:13
>>906
すまん。変数名が意味的に正しいかどうか判定してくれるツールはどこにあるんだい?
909デフォルトの名無しさん:2005/07/16(土) 23:36:25
>>901
Cでもバリバリプログラミングするんだけどねぇ。
変数を見る”たび”にだよ?
脳内バッファは無いのかい?

>>904
>(この場合は、コンパイルすれば警告が出てくれるがね。コンパイルすれば)

答え出てるじゃん。
それに重要な処理に流れないって分かった時点でその分岐がおかしいって分かる。
910デフォルトの名無しさん:2005/07/16(土) 23:37:06
C#,Java,C++で無意味なのは認めるよ。

でもCでは…Cでは有効なんだい!
911デフォルトの名無しさん:2005/07/16(土) 23:39:59
いや。〜〜なんだい!って、自作自演までしなくてもいいじゃないか。
別に勝った負けたのスレじゃないんだし。
もうちょっとスマートに行こうぜ?

>>909
>それに重要な処理に流れないって分かった時点でその分岐がおかしいって分かる。
ハンガリー使ってれば、ソースを見た段階でおかしいってのが分かったんだがね('A`)
912デフォルトの名無しさん:2005/07/16(土) 23:43:54
>>910
なぜ有効なのか答えなさい!

結局ハンガリアンのデメリットを無視してまでハンガリアンを
使うことの有効性を示してくれる人なんていないんだよね。

ないから。
913デフォルトの名無しさん:2005/07/16(土) 23:45:31
>>908
すまん。ハンガリアンのプレフィクスと型が一致しているかどうかを判定してくれるツールはどこにあるんだい?
914デフォルトの名無しさん:2005/07/16(土) 23:46:35
>>912
で、デメリットって?
まさか「なんとなく読みづらい」じゃないよね?

>>913
簡単に作れるけど?
だってルールがきちんと決まっているからね。
915デフォルトの名無しさん:2005/07/16(土) 23:49:01
>>914
ツールを通すとしても結局定義を参照するわけだから変数から
すぐに定義に飛べるだけでいいんじゃないのかい?
あと型を変更したときにプレフィクスを修正してくれるツールはどこにあるんだい?
916デフォルトの名無しさん:2005/07/16(土) 23:49:36
>>911
順番がおかしいだろう?
重要な処理に流れない→すでにコンパイル済み→警告見てる



917デフォルトの名無しさん:2005/07/16(土) 23:50:59
>>915
(;´Д`)……。
「ツールはどこにあるんだい?」の意味わかってる?
「ルールも決まっていないのに、ツールが作れるわけねーよな?HAHAHA」って意味だよ?

>あと型を変更したときにプレフィクスを修正してくれるツールはどこにあるんだい?
置換機能→全てを置換
918デフォルトの名無しさん:2005/07/16(土) 23:52:23
置換機能ですべて済むと考えてるおめでたい人を相手にしていたとは思わなかった。
919デフォルトの名無しさん:2005/07/16(土) 23:52:27
>>916
なんで順番がおかしいと思えるの?

引き継いだEXEを実行したところ、重要な処理に流れない

手元にあるソースによると、流れるはずなんだがなぁ

920デフォルトの名無しさん:2005/07/16(土) 23:54:05
>>918
むしろ、どういう時に置換機能が効かないのか教えてくれ。

クラス内の変数名を変えたならクラスについて書かれた.hと.cppを「全て置換」
関数内の変数名を変えたなら「順番に置換」

他に一体どんなシチュエーションが?
921デフォルトの名無しさん:2005/07/16(土) 23:56:29
>>919
ああ、自分でコンパイルしたわけじゃないのね。

重要な処理に流れない→ソース見る→分岐部分を見る→変数の型チェック

ハンガリアンだと分岐を見たところで分かるって言いたいんだろ?

どこが効果絶大なの?
922デフォルトの名無しさん:2005/07/16(土) 23:57:49
>>921
時間やプロジェクトの大きさにおびえないで済む人はいいなぁ…。
923デフォルトの名無しさん:2005/07/17(日) 00:01:23
>>922
はいはい。>>910
924デフォルトの名無しさん:2005/07/17(日) 00:01:58
>920
ある基底クラス 非private メンバ変数の型を
変える場合とか。
更に自分で書いたソースではなく、メンテを引き継いだ場合と
条件付けしてみる。
925デフォルトの名無しさん:2005/07/17(日) 00:02:13
理想主義者VS現実主義者 の対決になってるな。

型を気にせずに済むならそうしたい。
余計な情報を付加せずに済むならそうしたい。
そんなもん、ハンガリアン支持者だってそう思ってるわ。

現実的に採用できる範囲で、ハンガリアンが最も現実的な選択だったから使っているだけのこと。
ペーペーにいちいち「Amountってのはな。非負整数なんだよ」なんて1個1個の事例を説明してられない。
ハンガリアン記法について書かれたプリントを投げつけて「それ読んで覚えろ!」
これが現場。
926デフォルトの名無しさん:2005/07/17(日) 00:06:19
>>924
なぁ。
非privateメンバー変数の型を変えるって、超大事(おおごと)じゃないか?

継承先でsignedで判定していたのに、unsignedに変えられでもしてみろ。
>>904になるぞ。

そんなもの「変数名を変えるのが面倒」とかいう次元をはるかにぶっとんだ話。
継承先のクラスを全部再チェック必須だw 変数名の書き換えなんて、瑣末極まりないわ
927924:2005/07/17(日) 00:08:45
>926
なぁ、>917,920へのレスだということは分かってくれるよな。
928デフォルトの名無しさん:2005/07/17(日) 00:10:51
>>927
917=920=926=俺だし。
929デフォルトの名無しさん:2005/07/17(日) 00:18:37
キタコレ。
非ハンガリアンお得意のセリフ。
「型変えたらどうすんの」
すごいよこれ。
まず型を変えるようなシチュエーションが凄い。設計能力無し。
そして非ハンガリアンなら面倒皆無だと思ってる。
型変えたのに何もせずにそのまま動くシチュエーションが凄い。
なんのために型変えたの。
型変えによる不具合考慮一切無し。
じゃあハンガリアンなら面倒皆無なの?と。
そんなわけない。
どうせ全部チェックしなおし。その際ついでレベルで名前書き換える。
むしろ書き換えてないところは未チェックだとわかるし、コンパイルの時エラー出てくれる。
930デフォルトの名無しさん:2005/07/17(日) 00:20:35
だから具体例出して。
931デフォルトの名無しさん:2005/07/17(日) 00:23:00
>>930
なんの。
匿名掲示板で「だから」とか言われても、君誰。どの文章から続く「だから」なの?
どのレスに対して言ってるの?
932デフォルトの名無しさん:2005/07/17(日) 00:27:14
>929
>まず型を変えるようなシチュエーションが凄い。設計能力無し。
自分だけで作業してる状況しか想像できないのですか。

>どうせ全部チェックしなおし。その際ついでレベルで名前書き換える。
全てチェックが終わってないのに書き換えるのは危険極まりないし、
チェックが終わった後で書き換えるのは2度手間。
非ハンガリアンなら、チェックが終わった後で宣言部のみ書き換えるだけ。

>むしろ書き換えてないところは未チェックだとわかるし、コンパイルの時エラー出てくれる。
コンパイルエラーが出ないケースもあり得ますが。

別にハンガリアンは否定しないけどコイツは…
933デフォルトの名無しさん:2005/07/17(日) 00:39:03
>>932
929もちょっとアレだが(多分語り口調はネタなんだろうが)、その答えも変じゃないか?
ハンガリアンが有用になる非カプセル化環境において、他人の型変換が自分のソースに影響するという設計をするか?
934デフォルトの名無しさん:2005/07/17(日) 00:44:05
ハンガリアン使ってると、型を変えた時に書き換えが面倒

置換機能で一発じゃね?

非privateメンバー変数の型を変えるとかの時はどうすんだよ

それって、変数名書き換えが面倒とかいう以前の問題じゃね?

この後はどうなったんだ?
935デフォルトの名無しさん:2005/07/17(日) 00:51:08
結局は>>925ってことだろ。
936932:2005/07/17(日) 00:58:51
>933
他人のソースをメンテしなきゃならん状況もあるだろって事。

あと、しがないサラリーマンPGから忠告。
マーフィーの法則ではないが、良くない例には必ず実例が存在すると思いねぇ。
この世には「他人の型変換が自分のソースに影響するという設計」も存在する。
思い出したくもないが。orz
937デフォルトの名無しさん:2005/07/17(日) 00:59:48
つーか、俺と俺の周りのPGは、のきなみ会社の規則としてハンガリアンが盛り込まれている。
盛り込まれていない環境って本当にあんの?
938937:2005/07/17(日) 01:02:33
もちろんC#とかじゃない環境でね。
939デフォルトの名無しさん:2005/07/17(日) 01:03:56
>>937
業界によるんじゃないの。
全体数からみたらハンガリアンは圧倒的に少ないと思うけど。
940932:2005/07/17(日) 01:08:06
>937
COBOLでハンガリアンは聞いた事がないような。

…スマン。悪い冗談だ。
941デフォルトの名無しさん:2005/07/17(日) 10:10:00
コボルってXと9だけじゃなかったっけ(←よくわかってない)

VB6はどこもかしこもハンガリアン(の亜種)
MSDNでも推奨しているしね。

javaでは皆無。

PLSQLはなんちゃってハンガリアンつかってた。

他のプロジェクトはシラネw

いじょ、デジドカの体験談でした。
942デフォルトの名無しさん:2005/07/17(日) 11:02:19
>>939
その「業界」というのにJAVAやC#やCOBOLはいれるのか?
C、C++業界というのならば、ハンガリアンのほうが圧倒的に多いと思うが。
943デフォルトの名無しさん:2005/07/17(日) 11:39:10
C、Cぷらで多いというよりはMFCで多いと言った方が。
うにっくすではあまり見掛けんです。
おれの世界が狭いだけかもしれないけど。
944デフォルトの名無しさん:2005/07/17(日) 11:59:07
うにっくすだと、クラスとか使いたい放題だしな。
組み込み系のCやC++こそハンガリアンの舞台だと思われ。
945デフォルトの名無しさん:2005/07/17(日) 12:44:41
C++を仲間にすんなボケ
946デフォルトの名無しさん:2005/07/17(日) 13:39:37
まあ、ハンガリアンが是か非か、という皮相的なことより
物事自分の頭で考えられず聞きかじった誰かの主張を教条主義的に繰り返す人間は本当に困る。
ハンガリアン肯定側も否定側もね。

俺はハンガリアンには否定的だが、しかしハンガリアンが合理的な選択であるケースも
確かにないわけじゃない。

典型はVB6とか.NETのWindowsフォームのコントロールだね。
例えば価格を入力するテキストボックスの名前はpriceでは若干舌足らずだ。
txtPriceならpriceTextBoxより簡潔にして必要十分の情報が乗っている。

仮にpriceで必要十分だ、という人がいたとしても、じゃあこのテキストボックスには
横にラベルがついていて、このTextを場合によっては変更する必要があるために
適切な命名をしておく必要がある場合はどうする。

このとき、ハンガリアンが許容できるのならlblPriceとできる。
947デフォルトの名無しさん:2005/07/17(日) 13:41:14
>>945
最近は組み込み系にもC++が増えてるんですけどー
948デフォルトの名無しさん:2005/07/17(日) 13:50:11
price とか変数があったら、これがローカル変数なのか、グローバルなのかメンバーなのかすらわからん…。
949デフォルトの名無しさん:2005/07/17(日) 15:42:05
>>947
だからなんだ。C++でハンガリアン使うなボケ。
950デフォルトの名無しさん:2005/07/17(日) 17:39:42
ハンガリアンを称える唄

イッチ〜♪ ニ〜♪ ハンガリアン♪
951デフォルトの名無しさん:2005/07/17(日) 17:42:23
伴奏はハンガリアン交響楽団ですか
952デフォルトの名無しさん:2005/07/17(日) 19:19:34
>C++でハンガリアン使うなボケ
( ゚Д゚)ポカーン
DirectX(ハンガリアンだらけ)をCで組むタイプの人かな。
DirectXってC++じゃないとかなり面倒なんだけどな。
953デフォルトの名無しさん:2005/07/17(日) 20:51:37
ハンガリアン否定している連中って、若い奴ばっかりだよな。
「俺は古い慣例にはしたがわねえ!俺isゴッド!!」って馬鹿ばっかり。
一体どういうルールで他人と一緒に仕事すんだろ。
俺ルールかね。
954デフォルトの名無しさん:2005/07/17(日) 20:55:55
とりあえず、ハンガリー記法を使っていない著名なフリーソースってのを見てみたいな。
俺は見たことないんだが。
955デフォルトの名無しさん:2005/07/17(日) 21:21:37
>>953
それをしつけるのが古い奴の仕事じゃん。
古い慣例に従うことのメリットをちゃんと説明してやれよ。

956デフォルトの名無しさん:2005/07/17(日) 21:21:38
http://www.t.ring.gr.jp/archives/GNU/ed/ed-0.2.tar.gz
色々な点で疑問があるがこれはどうだろうか。
957デフォルトの名無しさん:2005/07/17(日) 22:03:54
>>956
きっちり構造化されてるじゃん。
これならハンガリアンにこだわる必要はねーよ。
958デフォルトの名無しさん:2005/07/17(日) 22:07:17
こだわる必要がないっていうか、これ他人と連携することを想定していないプログラムじゃん。
もし構造化されている部分に中身に手をつけろといわれたら、はったおすよ。
そういう観点から見れば糞ソース。
だがそれを起こさないようにきちんとまとまってるから良ソース。

仕事ではいつ引き継ぎになるかわからんから、こういう組み方はできんな。
事故ったり、病気になったり。
「担当者が病気になって誰も手がつけられません」ってわけにいかん。
959デフォルトの名無しさん:2005/07/17(日) 23:40:14
あたまの弱いリーマンがやたら多いですね。
960デフォルトの名無しさん:2005/07/17(日) 23:42:20
現場経験の無い学生は、理論ではなく対人論証でしか語れない。
961デフォルトの名無しさん:2005/07/17(日) 23:44:54
で、引継ぎのある仕事とやらを想定するとどういう場合にハンガリアン記法だと嬉しいわけ?
他人の書いたもんなんぞ読みにくくて当たり前、規約なんぞあっても無駄だと感じてるけどね。
962デフォルトの名無しさん:2005/07/17(日) 23:47:27
>>960
つまりあなたは学生ということですね。
963デフォルトの名無しさん:2005/07/17(日) 23:49:12
>>961
>規約なんぞあっても無駄だと感じてるけどね。
コーディング規約を設けてない会社なんて世の中にねーよ('A`)

964デフォルトの名無しさん:2005/07/17(日) 23:58:50
ハンガリアンな人に聞きたいんですけど、

ハンガリアンな変数が使われている部分の誤りを発見したとして
その変数の定義部を全く見ないで修正するのでしょうか?
それともやっぱり定義部を見るんですか?
965デフォルトの名無しさん:2005/07/18(月) 00:16:25
>>964
ハンガリアンはソースを読み解く手助けのためにある。
根本的に勘違いしてないか?
966デフォルトの名無しさん:2005/07/18(月) 00:43:22
うーん、ハンガリアンのメリットがわからないなぁ。。。
具体的にこういう時にメリットがあるよ!という状況はどういう時でしょうか。。。
967デフォルトの名無しさん:2005/07/18(月) 00:51:53
>966
ソースを読み解く手助けになる。
但し人によっては逆に鬱陶しいと感じるかもしれない。

コメントを冗長な位に書くか、最低限に抑えるかの違いにも似てるな。
特定のケースに限定しない限り、どっちが良いとは一概には言い切れん。
言い切れる奴は、物事をもう少し多面的に見る努力をした方が良いと思われ。
968デフォルトの名無しさん:2005/07/18(月) 01:46:33
>>953
俺の周りでは、ハンガリアン大好きっ子は経歴5年程度より若い連中ばかりだよ。
10年程度の古い連中は、経歴の途中でハンガリアンを押し付けられたから最近の風潮を歓迎している。
若いのは、就職してからずっとハンガリアンだから、変化に抵抗があるんじゃない?

自社流勝手ハンガリアンだけどね。
小さい会社でサンプル少なくて申し訳ないんだけどね。

で、御社でハンガリアン否定している若い奴ってのは、やっぱ入社以来 Java か C# ?
969デフォルトの名無しさん:2005/07/18(月) 08:56:32
>>968
うちではむしろ、学生時代にハンガリアンなんて使ってなかったから仕事で覚えるのに抵抗がある若い奴が多い。
CやC++の勉強中にもハンガリアン使ってなかったみたいなんだわ。

ところで俺人事もある程度担当してるんだ。
ものすごく身勝手で申し訳ないんだが、就職活動の際CやC++のプログラムを提出してきて、それがハンガリアン使われてないと
「う……こいつと仕事するの嫌だなぁ…なんでハンガリアンすら使ってないんだ…」
っとちょっともにょる。
970デフォルトの名無しさん:2005/07/18(月) 11:09:03
おい。ハンガリアン以前からプログラマやっている人間を忘れているぞ
971デフォルトの名無しさん:2005/07/18(月) 12:36:20
ハンガリアン肯定派の方に伺いたい。
1メソッド何行ぐらいになるように心がけてる?

俺はハンガリアン否定派だが、だいたい10-20行を心がけている。
もちろん意味ある単位で切り出すので、例外はあるが。

正直、10-20行ぐらいでメソッド記述してると、ハンガリアンって無意味極まりなく思える。
クラスメンバ、グローバルの区別は必要と思うが。

といいつつ、mfcの時はハンガリアンになっちゃうねw
972デフォルトの名無しさん:2005/07/18(月) 14:05:07
>>971
もちろん短くしようと心がけてる。
が、ハードの制限(主に容量)でそうはいかないことがある。
そういう時にハンガリアンが有用。

というお話。
973971:2005/07/19(火) 01:24:27
>>972
そういう話ならなっとくです。
974デフォルトの名無しさん:2005/07/19(火) 16:06:16
ハードの性能が上がればハンガリアンは洋梨?
975デフォルトの名無しさん:2005/07/20(水) 00:05:15
なところまで上がればいいなぁ。
976デフォルトの名無しさん:2005/07/20(水) 12:25:31
>>969
> 「う……こいつと仕事するの嫌だなぁ…なんでハンガリアンすら使ってないんだ…」
> っとちょっともにょる。

俺もあんたと仕事したくねEEEEEEEEEEE!

まあ、俺は逆にハンガリアン使ってるソース見たら落とすし、お互いさまだな。
変数の命名で英語ができないことが分かればさらに落としまくり。
私見だが、英語ができないやつはハンガリアン野郎に多い。
やっぱ、適切な命名ができないからプリフィックスでごまかしてるんじゃねえかと思う。確信してる。

それはともかく、そもそも今のハンガリアン記法が間違って広まった件について。
ttp://www.radiumsoftware.com/0507.html#050704
977976:2005/07/20(水) 12:31:10
って、よく見たら>>829で既出じゃん。
こういう情報に触れてもやっぱりハンガリアンに固執するってんだから相当なものだな。
978デフォルトの名無しさん:2005/07/20(水) 13:52:25
>>976
まぁまぁ。
プリミティブ型にハンガリアン記法を使うことには少なからず意味があるし、
そういうのを必要とする業種がある、ということでいいのでは。
(もちろん自分では使わないが)

ただbool型だけはいただけない。
bool型の変数の場合、isXxxxやhasXxxxをつけることが多いと思われるが、
これにハンガリアンを適用すると、bIsXxxxやbHasXxxxとなって違和感がある。
だからと言ってbXxxにするのは命名をないがしろにしていることになる。

それ以外については環境に応じて許容できる。
979デフォルトの名無しさん:2005/07/20(水) 19:27:30
>>976
>ハンガリアン使ってるソース見たら落とす

>適切な命名ができないからプリフィックスでごまかしてるんじゃねえかと思う。確信してる。
こんな奴が人事担当か…。その会社も長くないな
980デフォルトの名無しさん:2005/07/20(水) 23:45:27
>979
お前真性のおばかさんだろ?
981デフォルトの名無しさん:2005/07/21(木) 00:27:11
非ハンガリアンタイプの人は、論理的説明一切無しに罵倒のみのレスをするのですねー^^;
とてもプログラマとは思えません。
982デフォルトの名無しさん:2005/07/21(木) 00:28:40
ハンガリアンを使ってるというだけで不採用なのかw
どんな超優秀人材でも、社内教育すらせずに門前払いするんだな。
そんな会社、どう考えても先長くねーよw
983デフォルトの名無しさん:2005/07/21(木) 00:36:53
   〃∩ ∧_∧
   ⊂⌒(  ・ω・)  はいはいわろすわろす
     `ヽ_っ⌒/⌒c
        ⌒ ⌒
984デフォルトの名無しさん:2005/07/21(木) 00:47:12
ハンガリアン否定派は、ついに論理的なレスも打てなくなったのか…。
むしろハンガリアン肯定派が自作自演しているのかと疑ってしまうくらいだぞ。

別に対立スレじゃないんだから罵りあう必要ないのに。
985デフォルトの名無しさん:2005/07/21(木) 00:52:22
ということにしたいのですね。
986デフォルトの名無しさん:2005/07/21(木) 01:00:53
>984
もう飽きただけ。
正直好きにしろw
987デフォルトの名無しさん:2005/07/21(木) 15:20:07
使わない人間は「使わないことが正しい」という信念を持っている。
使う人間はどうなのかなぁ。俺にはわからない。
ただ、使うことが正しいというのなら、
「ハンガリアン以前には正しい方法は無かった」ということになって
これには首肯出来ないな
988デフォルトの名無しさん:2005/07/22(金) 11:06:15
プレフィクスはやめろ、ハンガリアンハンガリアン
989デフォルトの名無しさん:2005/07/22(金) 12:03:47
>>988
城島乙
990デフォルトの名無しさん:2005/07/22(金) 13:11:38
int n;
991デフォルトの名無しさん:2005/07/22(金) 13:12:10
long l;
long long ll;
short h;
992デフォルトの名無しさん:2005/07/22(金) 13:12:49
BYTE by;
WORD w;
DWROD dw;
QWORD qw;
993デフォルトの名無しさん:2005/07/22(金) 13:13:37
float f;
double d;
long double ld;
994デフォルトの名無しさん:2005/07/22(金) 13:17:02
int ch = getchar();
char c = ch;
TCHAR szHoge[] = "Hoge";
PTSTR pszHoge = szHoge;
CString strHoge = pszHoge;
std::string strFoo = "Foo";
995デフォルトの名無しさん:2005/07/22(金) 13:21:19
994の文字列リテラルをTEXT()で囲うのを忘れてしまった。
std::list<T>::iterator it;
int& r = n;
std::ofstream ofs;
std::wistringstream iss;
boost::function<void ()> fn;
void (*pfn)();
996デフォルトの名無しさん:2005/07/22(金) 13:26:42
POINT pt;
RECT rc;
OPENFILENAME ofn;

HANDLE h;
HBITMAP hbmp;
HBRUSH hbr;
HDC hdc;
HFONT hfnt;
HINSTANCE hinst;
HMODULE hmod;
HPEN hpen;
HWND hwnd;
997デフォルトの名無しさん:2005/07/22(金) 13:28:55
unsigned u;
unsigned long ul;
unsigned long long ull;
unsigned short uh;
unsigned char uc;

BOOL f1;
bool f2, is3;

HRESULT hr;

WPARAM wp, wParam;
LPARAM lp, lParam;
LRESULT lr, lResult;
998デフォルトの名無しさん:2005/07/22(金) 13:32:19
HRESULT hr, hResult;

void *pv;
VARIANT v;

BSTR bs;

IUnknown *punk, *pUnknown;
999デフォルトの名無しさん:2005/07/22(金) 13:34:33
MSG msg;
LOGFONT lf;
STARTUPINFO si;
CHOOSECOLOR cc;
CHOOSEFONT cf;
FINDREPLACE fr;
1000デフォルトの名無しさん:2005/07/22(金) 13:36:47
千!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。