クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
クラス名、変数名のつけ方に悩んだら書き込むスレです。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/ >>372
そう、関係ないですよ。一行で書けば、
既にあるExport機能を内部で完結する形で流用するので関数名がExportだと意味が違ってくるけど変えた方がいいかな考えすぎ?
という主旨です。
開発内部からみれば一応二つのシステム間でExport,Importしてるのは間違いないですが。 最初から通信などの内部処理用として用意するならserializeとかにすると思うけど、
既存の処理を使い回すならexportでも別にいいかなあって印象
自分で自由に出来るなら、出力部分のコードをserialize側に移して
export側ではserializeを呼び出すようにしちゃってもいいんだろうけど 「システム・ハンガリアン記法」を嫌う人がいるようだけど、個人的には実際に長年使ってみて、
コーディング効率が上がっていると感じる。
ネット上でよく見かける反論に、「システム・ハンガリアン記法は、(代入などで型が異なれば)コンパイラ
がエラーを出してくれるのだから不要」というものがある。
しかし、システム・ハンガリアン記法を使っていれば、たとえば、代入のコードをコーディングしたい最中に
周囲の変数の変数名を見て、エラーが起きない組み合わせを探すと、実は、非常にわずかな組み合わせ
しか無いことが多い。
そして、そのわずかな組み合わせの中に必ず正しいコードがあるので、人間の作業は、
そのわずかな組み合わせの中から選ぶだけでよくなるので、思考の節約になってくれる。
もし、システム・ハンガリアンを使っていなければ、この思考の節約が働かないので、
本格的に考えないといけないことがあり、余計に時間がかかってしまうことがある。
正しいコードが次のようなものだったとする:
pXxxx = pYyyy + ofsAaa;
周囲には、pXxx, pYyy, ofsAaa 位しか変数がないとすれば、頭を使わなくても、可能な組み合わせは、
上記のコードを含む少数のパターンしかないことがすぐに分かる。
そのうちから正しいコードを「選ぶ」事と、意味で考えることを二重に行うことで、早く正解のコードを
書くことが出来るようになる。
ところが、システム・ハンガリアン記法を使っていなければ、意味で考えることしか出来なくなり、
思考パターンを減らすことが出来ない。また、コンパイルしてみないと「検算」もも出来ない。 さらに、文字列などを使っている時、
CString strText;
const char *pszText = (const char *)strText; // operator char *() 演算子による型変換
int lenText = strText.GetLength();
などと、同じ Text という名前の文字列に対して、CString 文字列や、それを高速アクセスするための
文字列へのポインタ、文字列の長さ、の各々に対する変数名を機械的に付けられるのは重宝している。
さらに、よくあるのは、メンバ変数と全く同じ意味のローカル変数や仮引数がある状況。
この場合、毎回、新しい生を考え出すのは大変なので、メンバ変数には必ず先頭に m_ を
つけていると便利。今の場合、
m_strText = strText;
m_lenText = lenText;
のように美しくバランスするのがとても好きだ。
これだと、エラーが正しいコードであることがとても分かりやすい。
また、「m_」の接頭辞は、次のようなコンストラクタでも重宝する:
CPerson::CPerson( const CString &strName ) {
m_strName = strName;
}
さらに、引数が同じ文字列でも、0終端文字列の場合は、
CPerson::CPerson( const char *pszName ) {
m_strName = pszName;
}
とすればよいだけなので、とても美しい。 唐突にどうしたのw
真面目に言ってるのかネタのつもりかのか知らんけど、畢竟
「書きっぱなしで他人も自分も後でメンテしない」
コードならどんな表記法使おうが何の問題もないのよ。
ハンガリアンが批判されるのは、この条件を満たさない(世の中のコードの9割はそうだと思うけど)
場合に問題が起こるから
もちろんハンガリアンがダメって言ったって教条主義的に全部捨てる必要はない。
メンバ変数のプリフィクスなんか誰も文句言わないよ
こんな20年前に決着が付いてる話を今頃して何が楽しいの ワイはアプリもシステムも混在するハンガリアン
とりあえず事故は皆無
アプリケーションで使うのは、大体座標系かな
x,y,cx,cyとか、コイツらをシステムの方でやっちゃうと変数名が長くなるだけ
ならまだいいんだけど、計算がちと複雑化してくるとあああああってなる 個人的にはこうだな
・ポインタ変数にpを接頭するのは分かりやすい
・メンバ変数にm_も悪くない
・型を接頭するのはやめて lenTextがintLenTextじゃないのは気になった
デフォルト扱い? 型の接頭がいいと思うのは関数内で型変換するときくらい ポインタと型変換とメンバ変数に共通することを一般化して考えると、同じ情報を異なる形式で2つ持ちたいときにハンガリアンは活きる >>381
今時pXxxはないわ
普通にPtrToXxxかXxxPtrでいい
PtrToReadPtr
これなら何を意味してるかだいたいわかるが
ppRead
こんなのは勘弁してもらいたい C++相談室 part137
https://mevius.5ch.net/test/read.cgi/tech/1535353320/962
962 デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/05(金) 18:51:17.31 ID:4ThlZrTR0 [3/7]
>>947
最初の従業員のデータについては、
EmployeeInfo
二番目の dictionary の方は、
g_dictCompanyEmploeeInfo_s pFooとbarPtr/PtrToBazの間に
そこまで大きな差があるとも思えないんだが
>>381
個人的には、メンバ変数の m_ はバッドノウハウに見える >>388
pは適当すぎたか
PointerToCompanyNameよりは
ptrCompanyNameのほうが好み程度のことが言いたかった >>389
どっちもプリフィクスなの変わらなくない?って聞きたかったんだけど >>390
別にサフィックスでもいいんじゃない?
そこは気にしてなかったわ 変なプレフィックスを使うことに忌避感情はあるけどptrというやや古典的な略語を使うことについてマイナスイメージはないということか >>391-392
よく分からんが、pFoo を否定したのは>385だぞ >>385
何故、ハンガリアン記法が支持され、否定されてきたか
PtrToReadやPointerToReadなんて記法は、そのオブジェクトのデザインとしての命名ではなく
ハンガリアン記法と同じくプログラマの都合のような命名でしょ
文章的にそれをやってしまうと、ハンガリアン記法よりも余計にウザったい命名規則になると思うがな
そのPointer(Ptr)って名前は、システムとしてのポインタ(型)なのか
デザインとしてのポインタ(指し示すもの)なのか、って分かりづらくなる >>395
何を言ってるのか意味が分からないよ
システムとかデザインとか何のこっちゃw
世の中いろんなプログラマがいるが、PtrToReadなんて命名をする奴は誰もいないだろうw
よく見てみ
ReadPtrって書いてあるでしょうw
これは例えばキューみたいなものを実装する時に次のデータの読み出し位置をポイントするポインタ(読み出しポインタ)だ
だからPtrToReadPtr は「読み出しポインタへのポインタ」だw >>396
>PtrToReadなんて命名をする奴は誰もいないだろう
「普通にPtrToXxxかXxxPtrでいい」って>>385に書いてあるじゃん
>だからPtrToReadPtr は「読み出しポインタへのポインタ」だw
意気揚々と説明しなくても、そんなことは分かってるよ
>システムとかデザインとか何のこっちゃw
意味分からんか?
本来デザインとしての名称にシステムとしての名称が加味される状態だろ(strFoo、iBarなどのシステムハンガリアンみたいに)
PtrToXXXでもXXXPtrでもそれと同じな上に変に文章的な書き方をしたことでデザイン上の名称なのか区別がつき難い
fooPointerって変数があった時、それがポインタ型を表すのか、デザインとして指し示すモノって意味でつけたのか、分からないだろ
そんなのなら、まだpFooのような無機質な記号の方がまだマシだよ
こんなの、Bool型を返すプロパティを命題にするとか、プロパティ名は名詞にするとかと同じように特殊ルールなんだからさ
>>397
システムハンガリアンだよ >>398
よっしゃ、今日はこれぐらいにしといたるワ、まで読んだ
しかし、前置詞のtoと不定詞のtoに区別が付かないって真面目にいう人初めて見たよw >>399
その区別の話をしていないよ
文章の書き方が悪かったら申し訳ないけど、何でそんなふうに捉えるんだ? よしじゃあMemoryAddressPointerToReadにしよう ドラゴンボール的なものを想像して欲しいんだけど
かめはめ波を撃つとして
(1)手首を合わせて腰の横に持っていく
(2)エネルギーを貯める「かめはめ〜」
(3)手首を前に突き出す、エネルギー放出開始。「波!」
(4)敵に命中
(5)「行けぇ!!」とか「うおおおお!」とか叫びながら攻撃力アップさせる
(6)耐えきれなくなった敵が吹っ飛ぶ
というシークエンスに分割するとき、それぞれどういう単語を選んだら良いだろうか。
とりあえず
(1)PreliminaryAction (2)ChargingEnergy (3)MainAction (4)Impact (6)BlowingAway
まではそれっぽいのを探したが、(5)が全然分からん。そもそも適切な日本語も分からん。 >>405
BoostActionとかでいいと思うけど個人的にはMainActionがイミフ >>406
なるほどboost。
(1)が予備動作だったので、対になる主動作かなあって >>405
prepare
charge
fire / discharge
hit
empower / inject power
blow away
一部微妙? それならfireとboostに一票
6段階あるシーケンスで主処理って命名は危うい
目的は相手にダメージを与えることだからむしろboostが主ともいえる
解釈に差が生まれる語は避けるが吉
アクションと状態が一緒くたになってるからアドバイスが名詞と動詞で割れてる
状態遷移図でいう丸印と矢印ね あんまりアニメみないが、あのシーンは単に揉み合ってるんじゃなくて攻撃力をアップさせてるのかw
その発想は俺にはなかった
あの世界ではそんなことが可能なのか >>405
(5) はreinforce とかどうか
こういうのは軍隊用語引っ張ってくるとそれっぽいのが見つかりそう
Reinforcements は「増援部隊」の意味 しかし>>405は何なんだろう
ゲームのキャラクターの内部状態ではないようだし、映像のカット割りともちょっと違うような
仮に映像のカット名前なら(5)は接触中(KamehameHaContacting)とかかなあ
余談だけど、ちょっと気になってググってみたら、映像業界ではカット(本来はショットというらしい)の集まりを
シーン、シーンの集まりをシーケンスと言うらしい。
https://ja.wikipedia.org/wiki/シーン
どっちにしても、断片のことをシーケンスというのは言葉の使い方としてちょっと変でしょうw fireいいな。適度に短いし
あとreinforceは俺の厨二心へ実に刺さるチョイスだ
>409後半
言われてみればそうかも
>>410
どうなんだろうな。プリキュアとかでもあるし
>>412
ゲームの方
ただ格闘ゲーム的なものではなくて、かめはめ派的な攻撃のシーンの流れそのものを
分割処理しようとしてたので、カット割りっぽくも見えたのかも
シーケンスという用語云々については分からん 揉み合って攻撃力が上がるアニメといえばヴァルキリードライヴ マーメイド >>412
シーケンスは意味が多くて、文脈依存。
つながってるものなら、なんでもシーケンス。
C#のIEnumerableとかも。 >>412
映像業界のカットはフィルム映画の名残で厳密にはシーンを表してはいないでしょ
フィルムをハサミで切るからカットだよ
>というシークエンスに分割するとき
「かめはめ波」という1つの塊を動作という解釈で断片の集まり(シーケンス)として捉えてって言っているように見えるけど?
この場合、連続的に分割する時って意味でしょ >>416
全体的に何を言ってるのかさっぱり意味分からんけどw
>映像業界のカットはフィルム映画の名残で厳密にはシーンを表してはいない
だれもそんなこと言ってませんw
自分で言ってるようにシーケンスとういのは断片を集めて一列につなげたもの。
だからシーケンス「を」分割するならわかるがシーケンス「に」分割なんて意味が分からない 名前にこだわるスレではあるものの、助詞1文字違いの言葉のあやにいちいち草生やすのもいやらしいな >>417
シーケンスって一定のルールに従って何かが順番に並んでいるモノでしょ
つまり、かめはめ波って1つのモノ「を」動作単位のシーケンス「に」分割したんだよ
例えば、配列もシーケンスでしょ
確保されたメモリの塊(シーケンスではない)を型というルールで分割して配列(シーケンスである)にしている
何で分からないかなあ ついでに言うとさあ、上でC#のシーケンスという用語が出てくるけど、
このシーケンスという言葉にはむしろ「かならずしも配列のようにメモリー上に要素を持つとは
限らない」からシーケンスと呼ばれる。
例えば単に乱数求めて都度吐き出すだけでもシーケンス。
用法的にはシーケンス制御のシーケンスと同じ かめはめ波という動作をもっと細かい動作のシーケンスに分割(シーケンスとして表現)
言ってること理解できるし全く問題なし。 結構面白いと思うけどね。
ゲームプログラミングなんかで実際ぶち当たりそうな場面だし。 >>423
マジでこういう思考回路の人間がいるから世の中面白いねw
こんな人が何でこういうスレに興味を持つのか疑問だが
こういう人はきっと「関数を処理に分割する」んだろうw
普通の人は「処理を関数に分割する」んだが >>425
ヒント。
細かい動作『の』シーケンスに分割
と
細かい動作『を』シーケンスに分割<-君が>>425で出した例
全然違うから。 >>425
君はこのニュアンスの違いを理解してないだけw >>425は分割するの目的語を見誤ってるw
細かい動作『の』シーケンスは
細かい動作のシーケンスになるようにかめはめ波(省略)を分割する
って意味だから。 >>425
お馬鹿さん日本語しっかりしてくださいww
『分割する』の目的語は省略されてるんですよw >>429
粗みじんに切る
とか
千々に乱れる
の「に」だと言いたいんだと思うし、そういう反論は予想してたが、
それだとしてもちょと無理あるよ
元々の話は>>405がたぶんシーケンスって言葉のニュアンスを誤解してだだけの話。
別に誰もそれをことさら馬鹿にしてやしないし、無理して擁護することないと思うけど 「分割」の目的語は「かめはめ波という動作」で「もっと細かい動作のシーケンスに」は「もっと細かい動作のシーケンスになるように」の「なるように」を
長いので省略
「分割」の目的語を見誤やまなければ全然問題ない。君は>>425の例を出したように完全に見誤ってた。
>馬鹿にしてやしないし、
>マジでこういう思考回路の人間がいるから世の中面白いねw
>こんな人が何でこういうスレに興味を持つのか疑問だが
これで十分馬鹿にした言い方だろw >>433
質問者の誤用(たぶんね)を馬鹿にしてないとは書いたが、
君を馬鹿にしてないとは言ってないよw
まあ、もういいでしょ >>425のおまえが最初に馬鹿にし出したから、同じ事されても文句言うなよ。
短い1行の文の目的語すら把握できない日本語できないおバカさんww >>434
おまえが原因のくせに何がもういいだろだよ。カスww
日本語できない馬鹿が混じると話へんな方にいくからロムってろボケww >>432
ID:G3jvy5HTは>>412かな?誤用でも誤解でも何でも無いよ
君が指摘する「断片はシーケンスである」とは誰も言っていないんだよ
1つの物体に対して「何かの一連の集まりである」という解釈で観測している
件の場合は「かめはめ波」という1つのモノを「動作」という単位でシーケンスに分割して観ている
こういう抽象的な思考ってプログラムで要求されると思うんだけども大丈夫? >>437
何度も言うけど、そういうのは「短いカットに分割する」って言うんだよ。
あるいは、「短いカットをつないだシーケンスとして映像を構成する」なら日本語として正しい。
シーケンスに分割なんて表現はありえない。
それは分割統治されたメソッドや変数の集合として構成されるクラスを書くときに
「クラスに分割する」なんて言わないのと同じだ >>438
だから、君の言ってることも正しいが君が唯一間違ってるのは、片方だけがあってるんじゃなくて表現として両方問題なし。
君は表現力が乏しくて片方しか想像できなかったら、ファビョリ続けてる。 俺はシーケンスに分割なんて表現はお初やな
シーケンシャルな処理やデータって基本的に順次データの完成品みたいなもんであって、
こいつを編集分割とかするんなら、それこそシーンやカットをピックアップコピーペーストカット(削除)ソート〜
ということはあっても、シーケンスに分割って考え方は出てこない
シーケンス(な処理やデータ)を再構成するってなら分かる だから,「Aに分割」っていったとき、
1.「Aという最小単位に分割」
2.「Aという集まりなるように分割」と言葉厳密に分けると2通りある。
>>440とほざいてるアホは1.しか想像できてない。 おっ、言葉遊びの論破合戦やったんやな
失敬失敬
どうぞ続けてくれ >>438
「1つの物体を分割してシーケンスにする」って表現でも分からない?
「シーケンスに1つの物体を分割する」の「に」は「へ」に置き換えてもいい
「シーケンスに分割」って思うからおかしくなるんだよ
>それは分割統治されたメソッドや変数の集合として構成されるクラスを書くときに
>「クラスに分割する」なんて言わないのと同じだ
そりゃ、こっちはクラス視点で話をしているからな
君はそのメソッドや変数などの構成物視点で話をしてる
>>441も言ってるけど、両方の視点を理解した上でこっちは言っているのよ >>443
だな。「シーケンスに分割」を「シーケンスという最小単位に分割」と捉えると、
分割した結果の断片が最小単位であるシーケンスだから、
>「断片のことをシーケンスというのは言葉の使い方としてちょっと変でしょうw 」とか言ってる。
となるのは事実。
でも、他の捉え方もできて、
「シーケンスに分割」を「結果がシーケンスなるように細かく分割」また、>>443の「1つの物体を分割してシーケンスにする」と捉えると
意味通じるし、何も問題なし。
1通りの解釈しかできなくて、それが意味が通じなかったから、「誤用」とかいってファビョってるだけ。
>>405はだから、誤用なんかしてない。
まぁ、数学じゃねぇから生き物のような言葉に100%正しいとかはないけど。 まあ、毎度おなじみバカの壁だね
>>438にも書いた通り、壁の向こう側の人たちはクラスを書くことを「クラスに分割する」と表現するんだろうw
壁の向こう側の人口が少ないことを祈るばかり
日本のIT産業の平和のためにも しかし、この彼>>443にしてもそうだけど、
>>438でクラスを書くことをクラスに分割すると表現するのかと問われて何も自問自答しなかったのかw >>445
相手とのやり取りで理解を示すために思考もせず
自分の意見が正しい、他は間違いって凝り固まっている君の方がその壁の向こう側じゃね?
こっちはそっちの言っていること「も」理解した上で言っているんだよ
何で視点の違いが分からないんだろう
よくそれでオブジェクト指向やってんね 「物体を分割して細かい何かのシーケンスにする」するのを「物体を細かい何かのシーケンスに分割する」って言っても意味が通じるのに、
この馬鹿重症すぎる。 迷ったけどちょっとだけ捕捉
上に書いた「(玉ねぎを)粗みじんに切る」という表現が成立するのは
たぶん粗みじんが切るという動詞の修飾として、切り方の説明として成立しているからだと思う。
ではシーケンスに分割する、と言った時、シーケンスは分割方法の説明になっているだろうか?
なってないね。
なぜならシーケンスというのは断片が一列に(文字通りシーケンシャルに)つながった状態
を表す抽象名詞だからだ。 >>446
>クラスを書くことをクラスに分割すると表現するのかと問われて何も自問自答しなかったのかw
君はそれが変だと分かっていても、どういうことだ?と思考していないんだよ
ただレコーダのように変だ変だって繰り返しているだけ
よくそれでプログラミングやってんね
君の解釈とは違うから、別の解釈であることをずっと説明しているじゃん
まず、そこに聞く耳を持とうよ >>448
この彼の書いたものを見ると、そもそもシーケンスという概念がよく分かってないんだろうなとは思う。
>>447
この彼は自分を疑うことを知らない。
自分の批判を自分自身に向けることを知らない。
話にならないね >>453
じゃあ君もそのバカの仲間入りってことだね 俺は詳しい文法までは知らんが、おまえも詳しく知らないならちょっと突っ込んだ文法的な説明は無駄すぎてやめたほうがいい。
お互い説得力なさすぎ。 >>452
え〜?こっちはそっちの言い分を理解した上で説明してきたんだけど>>447をちゃんと読んだよね
ちゃんと意思疎通できているよね、不安になってきたわ >>454
なんでや???生憎バカの理屈は理解できんのやwwww ほんと、これに尽きる。
>「物体を分割して細かい何かのシーケンスにする」するのを「物体を細かい何かのシーケンスに分割する」って言っても意味が通じるのに、
>この馬鹿重症すぎる。
もう、今日のまとめはこれで。 >>460
おまえもバカやからw
何調子にのっとるんやバカwwww >>459
敬ww語ww使wwえwwバwwカwww
バカにするつもりでバカに絡んでバカにされた先輩、チワっすwww そもそもカメハメ波の送出過程とプログラムとがどう関係あんのか
小時間問い詰めたい・・・。 小一時間のことを小時間というのは言葉の使い方としてちょっと変でしょう?(便乗) >>464
その「シーケンスを個別アクションに分割」して表示したいんじゃね >>464
ゲーム中で、状態やモーションの状態遷移系を考えるなら、ふつうに関係あるぞ。 普通の人はリングを連結して鎖を作り、鎖をリングに分割する
壁の向こう側の人間は「鎖に分割する」
普通の人は車両を連結して列車を作り、列車を車両に分割する
壁の向こう側の人間は「列車に分割する」
普通の人はプロジェクトを作業工程に分割する
壁の向こう側の人は「プロジェクトに分割する」
普通のプログラマはクラスの機能をメソッドに分割する
壁の向こう側のプログラマは「クラスに分割する」 …いや、てにをはを間違えるとおかしなことになるぞ!
というのを分かりやす〜く例示してくれてるだけだろ 悔しかったからってしつこすぎだろw
いつまで続ける気だよ >>470
てにをはを間違えるとおかしな奴に絡まれるぞ!の間違いでは? ■ このスレッドは過去ログ倉庫に格納されています