クラス名・変数名に迷ったら書き込むスレ。Part14
ozuieren
printGoodJobFor1
__ , ‐' ´ ``‐、 / ̄:三} . /,. -─‐- 、. ヽ / ,.=j _,.:_'______ヽ、 .! ./ _,ノ `‐、{ へ '゙⌒ `!~ヽ. ! /{. / `! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ . {.l '⌒ ゙ 6',! / :::::::::::::::/ __ そんなことよりTimeOfNowの話しようぜ! . 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、 . ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ ,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 / / / :::::::::::::::: ; '´ /´\ / r'\ . i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、 { {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \ . ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: / ヽ ヽ、 ,. ‐'" .ノ ,〈 > `'‐- ' > _,. ‐'´ / / `) ,ゝ _.⊥.-r┬:/ ヽ_,. -‐i"!´「L.=!┘ ヽ < / / | / 、i / __ ./
なんでドイツ語なんだよ
aktuelle Zeit
bless(1)
─┬─| . . _ /| . ._ . . _ . │ |⌒i /_) . / _|. レヽ. (__ | //_) レ⌒ │ | | ヽ_ / ̄ | | | ._).|/|/. ヽ_ | ... ─┬─ ・. . _ γ⌒ヽ ./ |\ | . │ | レγヽ /_) .| | ┼ | \ | /⌒ヽ| / │ | | | |. ヽ_ .ヽ___ノ. │ | \| ヽ__ノ.|/|/. /\___/ヽ (.`ヽ(`> 、 /'''''' ''''''::::::\ `'<`ゝr'フ\ + |(●), 、(●)、.:| + ⊂コ二Lフ^´ ノ, /⌒) | ,,,ノ(、_, )ヽ、,, .::::| ⊂l二L7_ / -ゝ-')´ + | `-=ニ=- ' .:::::::| + \_ 、__,.イ\ + \ `ニニ´ .:::/ + (T__ノ Tヽ , -r'⌒! ̄ `":::7ヽ.`- 、 ./| ヽ¬. / ノ`ー-、ヘ<ー1´| ヽ | :::::::::::::ト、 \ ( ./ヽ \l__,./ i l.ヽ! | .| ::::::::::::::l ヽ `7ー.、‐'´ |\-、
必死になってるのTimeOfNow本人だろw
「名前=値」形式の文字列を編集するフォームの名前と そのフォームを表示する関数の名前は何がいいかな?
formAssign showFormAssign みたいな。
>>14 いつも言うことだけど、その
>「名前=値」形式の文字列
の集合がどういう意味を持つのかがわからなきゃ命名なんてできないだろう。
普通はその「意味」を名前に盛り込むんだから。
いや特定の意味なんて持たない、汎用の“「名前=値」形式の文字列”を編集するための
フォームなんだ、ってことかもしれないけど、でもそうだとしたらそれって
ただのテキストエディタ以上の利便性があるのかね?
>>16 テーマを持ってテキストエディタを作っちゃいけないのかね?
>>16 答えられないなら取りあえず黙ってれば?
別にお前が聞かれたわけじゃないんだしさ。
例えば「名前=値」形式をPropertyなんて呼ぶことにしたとして、 PropertyEditor EditProperty
名前が用意されてて、それに対するフィールドを編集するフォームって普遍的にあるもんだと思うんだけど
>>16 は何を言いたかったんだろう
どういう意味を持つのかが具体的にわからなきゃ命名なんてできないっていうけれど、
どのレベルの抽象度を持たせたいのかわかんなきゃマズいだろ?
少なくとも
>>16 の文面から読み取れるようなデータを編集するような、
汎用的なソフトウェアがあるとは思えないけどね。
だって入力された名前と値をイコールで連結するだけなんでしょ?
それテキストエディタで編集するのと比べてどこが便利なの?
>>20 がどういうものを想像しているのか分からないし、
もちろん
>>16 の説明が要領を得てないだけかもしれないけどさ。
まあ「名前が用意されてて」とあるから、
>>20 は特定の用途向けのデータに
特化したものを想像しているのかもしれない。
それなら
>>16 で俺が言ってることと一緒じゃん
22 :
21 :2008/12/30(火) 11:14:15
まーたお前か
・設定ファイルをテキストエディタで修正してください
・設定画面を開いて設定してください
ではユーザに与える印象がずいぶん違う。
ライトユーザに対しては稚拙であっても設定画面を用意する方が間違いが起きにくい。
が、たぶん
>>21 が言いたいのは、果たしてそれは「設定項目」なのかどうかと。
テキストエディタと比べて云々がよけいなんじゃないかなー。
KeyValuePairEditor
>>21 お前の視野の狭さと実務経験の無さは十分わかったから
答えられないなら黙ってろよ
>>24 余計じゃないよ。
俺が言ってるのは単純かつごく当たり前のこと。
まず
>>14 の「フォーム」が(1)特定用途向けのデータのみを編集する画面である可能性と
(2)「名前=値」形式の文字列によるデータを編集するための汎用的な画面である可能性が
あることまではいいよね?
後者の場合、値だけでなくフィールド名もユーザーが入力する必要がある(というより、そのための画面)
のだから、だったらそれにはただのテキストエディタ以上の利便性は何もない。
ライトユーザ云々って、それをいうならフィールド名を入力させる時点でライトユーザ向きじゃないよ。
名前が思いつかないならレスしなくていいよ。
名前が思いつかないならレスしなくていいよ。
当たり前の事ならイチイチ言わなくていいよね。 名前が思いつかないならレスしなくていいよ。
名前が思いつかないならレスしなくていいよ。
bHasIdeaAboutName
このスレには
相手のバックグラウンドを斜め下に妄想してぶっ飛びセンスで名前を提案するTimeOfNowの人と
相手のバックグラウンドを根掘り葉掘り聞いた挙句結局何の提案もしない
>>27 の
二人のキチガイが居るでおk?
同一人物ってことは無いよね?
名前が思いつかないならレスしなくていいよ。
>>16 が至極当然のことを言っている気がして仕方がねえw
>>35 前スレ前々スレ読めばどれ程の基地外か分かるよ
このスレは俺の物宣言した兵
>>36 やれやれまだやってるのか。
言わせてもらえば、「このスレは俺の物宣言した兵」って、それって(君がそうかどうかは知らんが)
むしろ俺に妙な突っかかりかたしてたお馬鹿さんの方だろう。
俺はそいつに「お前(ら)は俺のやり方に従え」なんていってない。
だがそいつは「お前は俺と同じように振舞え」と、居丈高なことを言っている。
だから俺は「俺は俺であってお前じゃないから俺自身の考えに従う」と言っただけだろう。
いったいどっちが自我の肥大した自己中野郎なんだよ。
おまけに、言い負かされて腹が立てばAAや繰言を投稿しまくるこの幼稚さ。
なんども言ってるように、精神的に幼稚な上に目的合理的思考ができないからそういう風になる。
いったいどの口下げて「命名だけに限定して議論すべき」と言ってたんだ?
荒れることを防ぐために(目的)命名だけに限定して議論すべきだ(手段)と
ほざいてた奴が率先して荒らすってどういう了見だよ。
頭オカシイだろ。
お前が自覚の無い香ばしいかまってちゃんだから弄られてるだけじゃないの
で、マジレスするとだ
たとえば10人が10人ともルール(テンプレ
>>1 )に同意した上で一応の和をもって場(このスレ)を形成してる中に
お前が後から割り込んできて、
俺はこの場で俺の思うままに振舞う。元からあるルールなんざ糞食らえ、
俺はお前らに何も押し付けているつもりは無いんだから、お前らも俺のやり方に一切の口出しをするなと、
その場に居る全員に「お前のルール」を押し付けるのはいかがなものかな?
コミュニケーション不全を開き直るにも程がある
設問中の対象の意味を知るのは命名には必要だろ?
それが
>>1 にあるルールに反するとは思わないな。
質問者の意図や対象の意味を明らかにした後に、それの
「善し悪しについて議論」するのが禁止されてるのは妥当だとは思う。
つまり >16 は以下の二行だけなら妥当な書き込み。それ以外は蛇足。
> >「名前=値」形式の文字列
> の集合がどういう意味を持つのかがわからなきゃ命名なんてできないだろう。
>>39 >>37 の奴は毎回
>ただのテキストエディタ以上の利便性があるのかね?
みたいに良し悪しについて言及し、最終的にそちらが主題になるから問題視されてるんだよな
>>37 本人も「命名は手段であり、本来の目的は命名を通じて設計の良し悪しを語ることだ」と明言してたわけで
それにスレ違いと返されたら、発狂して俺は俺の信じるままに動く!口出し無用!とか言い出したんだわ
だからこのスレで基地外扱いされてるの
「俺は俺であってお前じゃないから俺自身の考えに従う」と言った方が自我の肥大した自己中野郎なんだと思いますです。 自虐芸は程々にした方がいいと思います。
つまり >16 にとって以下の二行は正当性を確保するための蛇足。それ以外が主題。 > >「名前=値」形式の文字列 > の集合がどういう意味を持つのかがわからなきゃ命名なんてできないだろう。
つまり>16の最初についてはみんな意識できてる訳ね。 その視点なしに名前考えてみても、ある意味ゴミの生産してるだけだからなあ。
まあこの際だから調子こいてるこのお馬鹿さんを徹底的に叩き潰すか。
>>40 そんなこと言ってないけど。
言ってるというのなら該当レスを引用してみ?
執念深く過去ログ持ってるらしいからできるよね?w
俺は以下ような意味のことしか言ってないはずだ。
つまり、命名とは「可読的なコードを書くこと」という上位目的の手段に過ぎず、
またこんなスレにいるのはプログラマに決まってるのだから、
(1) 「可読的なコードを書く」という上位目的に資する議論が
「困る」という人間はいないはずだ(もし、彼がプログラマならば)
(2) そもそも設計に無理があるから適切な命名がし難くなっているようなケースでは、
その無理な設計に固執して命名するのは手段と目的が倒錯した愚行だ。
(3) 設計議論をすると荒れる、と主張する人間がいるが、俺の知る限りそんな事実は今までない。
(というか、荒らしてるのはそう言ってるお前自身じゃないか馬鹿)
念のために付け加えるけど、俺は積極的に「命名だけでなく設計議論もさせろ」とか 「したっていいじゃないか」なんて言ってないから。 命名だけでは問題が解決しようがないケースでも盲目的に命名に固執するのは 愚かだって言ってるだけだからな。 当たり前だろこんなこと。 手段に過ぎんものに固執して目的が遂行できないんじゃなんの意味があるんだよ。
馬鹿が2人以上いると荒れるね
じゃあ僕が3人目のバカになる
名前を考えるにあたって、最初のお題だけではイメージわかないなと思うなら、 それを伝えて追加情報を求めれば良いだけの話。 ただそれだけなのに、毎回毎回偉そうに説教たれ始めるから話がややこしくなる。
TimeOfNowさんお久しぶりです。 相変わらず人間分析がお得意のようですね。 是非去年聞かれていた自己分析の結果をお聞きしたいのですが、あなた自身はどのような人間でしたか?
>>45 >手段に過ぎんものに固執して目的が遂行できないんじゃなんの意味があるんだよ。
ところが、まさにその「手段」に固執して
回答することこそがこのスレの用途。
納得がいかないからって、わざわざ主張
しに来るなよ。
ぐだぐだ言わずにどっかいけ。
なんなら新スレをたてたらいいよ。
何度も同じこと言わせるなよ。
>>50 >ところが、まさにその「手段」に固執して
>回答することこそがこのスレの用途。
それは「チミの勝手な解釈」、あるいは「チミの独りよがりな願望」に過ぎん。
もちろん、勝手で独りよがりであろうと君がこのスレの意義に関して
「どうあるべき」と考えるのも自由で、その信念に従って君が行動するのも自由だ。
(正直、俺的には「アンタ本物の馬鹿だね」としか思えんけれどもね)
だが、たかだか君の解釈だったり願望だったり過ぎないものを、居丈高に俺に
強制しないでくれる?
俺は俺であって君じゃないんだよわかる?
50の言うことも一理あるんじゃないかと思う人もいるかもしれんから、
愚かだと思うと書いた責任上一応理由つきで否定しとく。
問題設定が非現実的であっても意味をもつのは、
(1) それが何らかの能力向上のための
(2) 演習問題になるとき
だろう。
さて、命名以前の問題があるために命名が困難になってる「お題」(例えば
>>14 )は
この要件を満たすだろうか?
俺の考えでは答えはNo。
なぜなら、現実のプログラミングではそんな無理くり名前をつけるような「法外な」
命名能力なんて必要とされないからだ。
まともなプログラマなら横車を押して命名するよりも、名前が付けやすいような
別の視点を採用するなり(
>>14 なら、データのもつ意味から名前を付ければわかりやすい)、
設計を変更するなりすることを選択するからね。
ゲームで遊んだりクイズを解くのに「意味」なんかいらんと思うが
いっそ
>>16 前半をテンプレに書いておいて、
言及がなければ、例えば
>>19 の回答がほしいことにすればいいだろう。
いい加減不毛だからやめてよ。
>>53 もちろん、それはそう。
俺はそういう人がいてもいいと思うし、そういう回答をする人に
自分からケチつけたり突っかかったことは一度もない。
俺は自分と違う考えの人を一概に否定したりしないし、少なくとも消極的容認だよ。
「彼」は違うようだがね。
みんな真面目すぎる。 Q)この名前何がいい〜? ホニョニョ~ン A)こんな感じで良いんじゃね〜 ハニャニャ~ン という緩いスレじゃないのか。
無理くりw 道民かよ 通りで日本語が通じないわけだ 一部道民は本当に酷い思考回路を持ってるからな
>>52 > 俺の考えでは答えはNo。
そう思ったら、はじめからレスしないか、意図を聞くなどしながら
「設計見直したほうが良いんじゃないの?スレ違いになるから他所でやってもらうけど」
あたりで済ませておくのがこのスレの趣旨から考えて望ましいと思います。
Part12での出来事
585 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:13:15
>>572 そもそも弾の初期位置も初速度も各「砲台」が個別に知っていれば済むはずの情報で、
そんな情報を配列にまとめることが設計として間違ってる気がするんだが。
586 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:27:39
>>585 >>1 587 名前:585じゃないけど[sage] 投稿日:2008/08/30(土) 01:43:57
>>586 このスレのあり方を否定するようで悪いが、
「これ英語だとなんて言うの?」っていうレベルじゃなくて
「一体どんな名前を付けるのやら」なんてレベルで迷ってしまうのは、
ドメイン分析に失敗しているからだと思うんだよね。
ちゃんとした設計なら悩まずに命名できる。
ダメな命名になるのは設計からしてダメなんだよ。
名前を付けられないと思ったら設計から見直したほうがいい。
588 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:44:44
>>587 >>1 589 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 01:45:43
>>587 お前みたいなこと言い出す奴が過去に何人もいて、
その都度スレが荒れたから
>>1 に注意書きしてあるの。おk?
590 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 02:09:25
おk。すまない。
ただ俺なら、名前で悩むなら違う事で悩みたいな、って思っただけだ。
591 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 02:14:16
>>590 なんで名前で迷ったら書き込むスレに迷い込んでるのかが分からない
592 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 02:33:25
>>591 名前が無意味なものだとは考えてないからだよ。
デザパタなんかは「何かに名前をつけること」に意味を見いだしている例だよね。
このスレで言えば、
>>496-498 みたいに、
機能にぴたっと当てはまる名前が提示されることで、
496自身が「自分が何をしようとしていたか」が定まったと思うし、
さらに勉強してみようという前向きな気もちにもなっている。
名前を考える事は、考え方をみつめ直すことで、
良い方向に成長する入口になっていると思う。
名前に悩んで設計に悩まないのはもったいない。
余計なおせっかいかもしれないが。
593 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 04:34:27
言いたい事は分かるんだけど、その言い方は無いよ
このスレで泥臭いながらも行われてる事を、臭い物に蓋をして理想型で語ってるだけじゃん
設計の仕方までは口を出さずに、ただ名前を付けていけばそれがベターなの
594 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 07:06:39
>>592 > 名前に悩んで設計に悩まないのはもったいない。
>> そ の 都 度 ス レ が 荒 れ た か ら
そう言う議論がしたいなら、別にスレ立ててくれ。
多分収拾つかなくなると思うが。
597 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 14:58:18
>>593-594 俺的にはこういう連中こそ本末転倒の馬鹿に見えるよ。
たぶん物事ゼロベースで考える頭のない奴なんだろうな。
まあこんな馬鹿な連中が何いっても今後も設計に首を突っ込む姿勢は止めないけどねw
598 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 15:06:17
君が時と場合をわきまえてないだけ。
599 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/30(土) 15:34:30
命名の前提となるもの(例えば設計)を語らないと根本的な解決にならない場合であっても
あえて盲目的に命名限定の議論をしろ、などという物言いこそ「時と場所をわきまえない」
愚かなものだと思うが。
一般にはそういうのは「フェティシズム」と言うんだよ。
たまに方言で道民と認定してる人いるけど、今回の「無理くり」というのは別に北海道に限った言葉じゃないと思うんだけどなぁ。 なまら辺りでなら道民と決めていいと思うけどさ
615 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/31(日) 14:37:54
>>610 なんか命名以前にただ単にObserverパターンをちゃんと理解してないだけの気がする。
Observerパターンっていうのは、(当たり前だけど)通知者側が観測者の
特定のメソッドを(インターフェイスを介して)呼び出すパターンのはずだよね?
あなたの例で言えば、aはbでイベントがあったときにbから呼ばれるメソッド
b_ValueChanged()と、a自身のイベントを他に通知するOnValueChanged()を持ってるはずで、
だとすればb_ValueChanged()の中からOnValueChanged()を呼び出せば済むはずの
問題だと思うんだけど。
616 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/31(日) 14:57:16
> 命名規則や設計の善し悪しについて議論するのは基本的に禁止。
617 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/31(日) 15:01:11
悪いけど俺はそんなものに同意した覚えはないんでね。
この後突然独り言のようにセカイ系について講釈が始まってるけど、もういいや
かといって、質問の行間を読むのを競い合うクイズスレってのもノイズ多すぎてやだな
別に足りない情報を聞くってのは一切制限されて無いし、そもそも誰も咎めてなくね? 設計にまで口出しする事がスレ違いって言われてるだけで
66 :
50 :2009/01/07(水) 13:22:56
「彼」とかまるで特定一名のように言われても困る。 オレはその「彼」じゃないんで、そう思ってるのは 少なくとも2人いるってこと。たぶんもっといる。 まあ、もういいや。 TimeOfNow氏は酷く個性的な考えの持ち主だと 認識することにした。 死ねばいいのに。
class Buyer { void Sell(); }; class Seller { void Buy(); }; 名前にBuyと付くクラスのメソッドがSellで、名前にSellと付くクラスのメソッドがBuy。 一瞬違和感を感じたんですが、これで合ってますよね?
ドラマーがギターを弾いてもいいし ギタリストがトライアングル叩いてもいいと思うよ
>>68 このスレ的に言えば「ギターを弾くものにドラマーと命名するべきではない」ということになりませんか?
私が訊きたかったのは、買い手に対して物を売るメソッドの名前は、
「買い手が買う」という意味ではなく、「買い手に対して売る」という意味の命名で合っているか、ということです。
少なくとも俺は買い手が、買うで命名するけどな
「Buyerのメソッド」だからねぇ。 買い手の行動は「買う」ことだろう。 「買い手に対して物を売る」ということなら、 「売り手の売るメソッドの引数に買い手インスタンスを指定」って感じがするが。
>>67 BuyerとかSeller とかいうクラスはあくまでただの例えで言ってるのなら
>>70-71 の言うとおりだと思う。
ただの例えじゃなくて実用にするものなら、BuyerとかSellerにメソッドをもたせるより
製品クラス(ProductとかGoodsとか?)にTrade()とかSell()を持たせた方が賢い気がする。
>>70-72 レスありがとうございます。
ちょっと意外に感じました。
A.GetB()が「AがBを取得する」ではなく、「AからBを取得する」という意味なので、BuyerにSell、SellerからBuyと考えていました。
質問とは違うので答えも違うのかもしれませんが、1つのクラスがBuy/Sellを持っている場合にも同じ方法で命名すると、
shop.Sell(item, money);// 店に対してアイテムを売っているように見える?
shop.Buy(item, money);// 店からアイテムを買っているように見える?
この感覚は私だけなんでしょうか?
> 製品クラス(ProductとかGoodsとか?)にTrade()とかSell()を持たせた方が賢い気がする。
これはTradeの引数に買い手と売り手を渡すということになりますか?
商品は所有者が扱うものと思っていたので、こちらも意外に感じました。
>>74 「売られた」時に、製品が必ずその所有者への参照を内部に持つようにすれば、
Trade()の引数は買い手と売価だけでよくなるんじゃない?
>>74 A.GetB()は「Aが(自分の持つ)Bを取得する」って意味だ
AはBを取り出してくるが、その後どうされるかまでは知ったこっちゃ無い
>>75 なるほど。
>>76 そういう意味だったんですか。
今まで勘違いしていました。
>>74 ふつうは、主語.述語(目的語)とするものだと思う。
とくに、述語が他動詞の場合には。
下駄雪駄がそうじゃないというのは、今指摘されて
初めて感じた。w
たしかにそうかもしれないけど、むしろこっちが
パターンとしてはレアなのでは。
>>74 「AからBを取得する」は主体(主語)が抜けてね?
主体がメソッドのレシーヴァになるはずだよね。
主体がオブジェクト化されてないから混乱してるんじゃない?
>>78 たしかにgetter/setter以外は主語.述語で自然に読めるものばかりでした。
>>79 x = a.GetX();
xが主体ということですか?
ちなみにこういうケースではどちらの命名が自然に見えます?
item = shop.Buy(itemID, money); // アイテムの種類を示すIDと代金を渡しアイテムを得る
item = shop.Sell(itemID, money); // アイテムの種類を示すIDと代金を渡しアイテムを得る
>>80 どちらも虫唾が走るほど気持ち悪い
指摘するとなると完全に命名の範疇外の話になるんで、どっかOOP初心者スレにでも行って下さい
>>81 >>80 のメソッドにBuy/Sellを名付ける事自体が間違ってましたか。
どうもでした。
>>80 そういう系にしたいならこんなのは?
player.buy(shop,item,price)
オレ的にはかなり自然。
(new Transaction(buyer, seller, item)).commit()
>>80 真ん中
aだろ。
aが自分のXを取得する。
それをプログラマがxに渡してるだけ。
>>85 トランザクション処理というぴったりのものがあったんですね。
>>86 なるほど。
>>80 私の経験では
クラス名.メソッド名 で自然な英語になるようにメソッド名をつける場合もあるし、
クラス名を意識せず、メソッド名単独で意味を主張するようにメソッド名をつける場合もある。
両方あります。
例えば頻繁に使われる get なんかでも
shop.getItem
は意味の取りようによっては、
・店が得るのだから、アイテム引数をともなって、店にアイテムを設定する(メンバー変数に登録、setterのような意味)
・店のアイテムを得る。(メンバー変数をを得る、普通のgetterの意味)
などのように、2通りの解釈ができないこともない。
どのようにメソッド名をつけるかはコーダーのセンスよると思います。
したがって、自然に読めるのが一番ですが、限界があるのでどうしようもないというわけです。
一人で開発するときは、統一さえしておけばそんなに大きな問題ではありません。
しかしチームで開発するときは、
「これこれの動詞はbuyで統一しよう、getはこういう意味にしよう」
等のように、コーディング規約が必要になるでしょう。
なんか生活に物足りなさがあると思ったら、このスレが次スレになってて お気に漏れしてたのか
90 :
68 :2009/01/09(金) 02:22:29
今頃出てきてあれだが、アクセサについて。
あるオブジェクトに対してset/get指示をだすが、オブジェクトからみれば自身のメンバに対して
やはり同じようにset/getを行うので、逆になっているわけではないよ。
>>83 オレ的にもそんな感じ。
一点、priceが商品の値段を意図しているのであれば、buyメソッド内でshopに問い合わせを行うようにする。
今回の焦点ではないけどね。
91 :
83 :2009/01/09(金) 09:11:24
>>90 質問者が引数にmoneyって書いてたからな。
そこは値段だろうと思ってpriceにした。
個人的にも、priceは明示的なほうがいいと思う。
shop.getPrice(item)とか。
>>85 いわゆるトランザクションには、プログラム的に
ちょっと特定的な意味がありがちなので、念のため。
プログラマにそう言ったら混乱することもありそう。
>>91 >>80 のmoneyは商品の価格ではなく、購入者が提出するお金だと思う。
なので何らかの手段でおつり、不足エラーなどを通知する必要が出てくるものだろうと思った。
一方、buyer.buy(shop, item)とすれば、関数内で
if (所持金<shop.getPrice(item)) エラーリターン
this.money -= shop.getPrice(item)
のようにできる。
基本的に店って主体になりにくいよね。ザ・コンビニみたいなゲームなら別だろうけど。
93 :
質問者 :2009/01/09(金) 18:39:39
>>88 GetItem→BuyItemと置き換えると、
・店が(引数に指定された)アイテムを得る→店が(引数に指定された)アイテムを買う
・店が(保持している)アイテムを得る→店が(保持している)アイテムを買う
まさにここですね。
getterは後者の意味、Buyに関しては前者の意味が一般的というところに混乱しました。
>>90-92 moneyに関しては購入者が提出するお金のつもりで書きました。
トランザクション処理を勉強して
>>83 か
>>85 にしようと思います。
ありがとうございました。
94 :
95 :2009/01/09(金) 18:44:09
> 店が(保持している)アイテムを買う 書いてから気が付いたんですが、自分が保持してる物を買う?というのは変ですね。 ということは自然と前者になるということでしょうか。
↑95じゃなくて93でした。
>>94 あんまりヘンに考え込まないことを勧める。
命名は慣習的なところも多いので、だいたい
納得できたら、自分ルールにしてパクッと
飲み込め。
完全な名前を定義することが目的じゃないだろ?
>>94 あんたの目的は、命名法を究めることじゃないはずだ。
妥協も大切だ。
命名以前に、95は思考が絶望的にオブジェクト指向じゃないだけ ほんと、絶望的
100 :
デフォルトの名無しさん :2009/01/15(木) 13:10:27
100
101 :
デフォルトの名無しさん :2009/01/15(木) 13:11:00
101
sampleとexampleの違いって何ですか?
板違い
example は例として一般的な語。 sample は実例というか、ちゃんと動くようなもの。 境目は適当。
失せろボケ
TimeOfNowの人はまた逃げたのか
>>44 で偉そうにログ出せといってログ張られて逃げ出すとか
まね出来ない
>>107 本格的にアタマおかしいだろw
いや逃げてないし、君が望むなら君のような馬鹿は徹底的に叩き潰して差し上げるけど?
で、どこで
>>40 のようなことをこの俺が言ったと言うんだ、ん?
っていうかこの馬鹿、"time of now"っていう言い回しが英語として 成立してないと思ってるから、嘲笑のつもりで「TimeOfNowの人」とか言ってるんだろうが、 それが自分自身の馬鹿を曝け出しているに過ぎんことにすら気づかないんだから おめでたいとしか言いようがねえなw
>>107 スレが静かになったからって、
わざわざ悪魔召還すんな!
>>109 検索して引っ掛かるけど特殊な言い回しだよ。そこは蒸し返すなよ
Jetztzeit
>>111 別に「蒸し返す」つもりもないけど、別に特殊でもなんでもないよ。
前スレでそういうことを主張している人間がいたのは記憶しているが、
その人が何もわかってないだけだな。
前にも名詞的に使われてるnowを「倒置構文だ」とトンチンカンなことを
言ってる人がいたけど、このスレはそういうのが多い。
Now is the time. が特殊な使い方といっていた人を指してトンチンカンと?
>>114 相手が言ったことに反論する能力を身につけようよ。
俺は言った。
名詞的用法をさして「倒置構文だ」とトンチンカンなことを言っている人がいた、と。
君に問うが、
>>114 のそれは倒置構文ですか?
ああごめん、
>>114 のそれは確かに倒置構文ととることもできる、
というかそういう解釈の方が一般的かも知れんね。
でも俺の言っているのはそれじゃない。
俺がトンチンカンと言うのは、 "Now is the time to 〜." これを倒置構文と言った人がいたんだな。 これは倒置構文じゃないよ。ただnowを名詞的に使ってるだけ。
英語どうこうじゃなく、センスを笑われてる事にそろそろ気付いたら?
そういう物言いが「セカイ系」のそれだと言ってるんだけどね。 まあ頭悪いから言ってる意味が理解できないのだろうけど。 そのセンスっていってる奴の答えが「コインいっこ入れる」式のぎこちない命名だから なお笑わせてくれるんだがw
コインいっこ入れる
>>119 本格的にアタマおかしいだろw
いや言ってないし、君が望むなら君のような馬鹿は徹底的に叩き潰して差し上げるけど?
で、どこで
>>119 のようなことをこの俺が言ったと言うんだ、ん?
改変してて吐き気がしたわ 自分からやっといてなんだけどなw
名前が英語の文としてどれだけ自然かよりも、 同じプログラム内で一貫した名前の付け方をする事の方が重要だと思う。 接頭辞+名前みたいなのは自然な英語にはならないだろうし、 一貫して使うなら略記的な名前でもぜんぜん問題ない。 (母音を省略して書くとか普通にするし) コインに関するモジュールを書いていたら、 ・コイン_いっこ入れる ・コイン_いっこ取り出す とかもありそう。
>>109 「TimeOfNowの人」って呼ばれるのが嫌なのか?
そう呼ばれるとお前さんは嘲笑されてると感じるのか?なぜ?
まぁその点はどうでもいいけど
嫌なら自分でコテハン付けてくれよ
いい加減お前さんには固有名詞が必要なんだよ
TimeOfNowはなんか笑いがこみ上げて来るんだよな…。
lヽ ノ l l l l ヽ ヽ )'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l / T | | |/| ハ / / ,/ /|ノ /l / l l l| l T ヽ l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ / | o l トー-トヽ| |ノ ''"´` rー-/// | o | | ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ | | N | | l | ヽ, ― / | | l N | | !! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! | ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ / / ノ⌒ヾ、 ヽ ノハ, | ,/ ,イーf'´ /´ \ | ,/´ |ヽl | /-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l ,/ | ヽ \ _,ノーf' ´ ノノ ヽ | | 、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
また逃げてるw これはもう芸の領域だなw
荒らすなヴォケ
よろしく 以下、それぞれを文字列として格納する変数なんだけど、 半角文字全部→string 半角英字→alphabet 半角数字→num 半角記号→character 半角英数→symbol string とcharacterとsymbolがごっちゃになってわかりにくそうなんだけど、 他にいいアイデアがあるかな?
ごめんまちごうた 半角文字全部→string 半角英字→alphabet 半角数字→num 半角記号→symbol 半角英数→character だったorz
is系の関数に従ってみればどうだろう。 半角英数はalnum 半角文字全部はascii など。
なるほど、サンクス 半角文字全部→ascii 半角英字→alpha 半角英字大文字→upper 半角英字小文字→lower 半角数字→num 半角記号→symbol 半角英数→alNum 記号がなかったのでSymbolを流用して、全角の場合は修飾詞でWideをつければよさそうだ。 これでいってみるぜ
ctypeだとispunct(punctuation)ってのはあるね。 記号という意味じゃなく区切り記号という意味になってしまうが。 ASCIIの範囲では、印字可能な文字のうち、スペースと英数「以外」
>>133 区切り記号とは違うと思うのでsymbolにしてみた
半角全部-半角英字-半角数字-半角スペースというイメージなので。
んだが、半角文字全部asciiで、全角文字全部のとき
修飾詞つけてwideAsciiってなんか変な感じw
文字全部→ascii wideAscii
英字→alpha wideAlpha
英字大文字→upper wideUpper
英字小文字→lower wideLower
数字→num wideNum
記号→symbol wideSymbol
英数→alNum wideAlNum
カナ→katakana wideKatakana
ひらがな→none wideHiragana
漢字→none wideKanji
半角のほうに修飾詞singleをつけて、文字全部をsingle(半角全部)とwide(全角全部)にしようかしら。
つか、こんなの自分が理解してればどうだっていいよな・・・
privateなメンバだし・・
singleはない
ispunctの説明を見てくれば良かったのに。 半角英数、半角スペース以外の表示可能な文字なんだけどな
>>134 1バイト文字以外も考慮するのなら、
UNICODEの文字カテゴリの名前を参考に
したら?
多すぎてイヤになるかもしれんが。w
お題が来ないな・・・
じゃあTimeOfNowの話でもしようぜ
アメリカ旅行で時間聞きたいときは Excuse me, do you have the time? っていえばいいんよね
掘った芋いじくんな と聞いたけど……
掘った芋いじんな だよ
サンクス!
アメリカ人でも見ず知らず相手なら婉曲に
>>140 使うよ
変なジョークで返されるかもしれないけどね
Excuse me, do you have the time of now?
─┬─ ・. . _ γ⌒ヽ ./ |\ | . │ | レγヽ /_) .| | ┼ | \ | /⌒ヽ| / │ | | | |. ヽ_ .ヽ___ノ. │ | \| ヽ__ノ.|/|/. /\___/ヽ (.`ヽ(`> 、 /'''''' ''''''::::::\ `'<`ゝr'フ\ + |(●), 、(●)、.:| + ⊂コ二Lフ^´ ノ, /⌒) | ,,,ノ(、_, )ヽ、,, .::::| ⊂l二L7_ / -ゝ-')´ + | `-=ニ=- ' .:::::::| + \_ 、__,.イ\ + \ `ニニ´ .:::/ + (T__ノ Tヽ , -r'⌒! ̄ `":::7ヽ.`- 、 ./| ヽ¬. / ノ`ー-、ヘ<ー1´| ヽ | :::::::::::::ト、 \ ( ./ヽ \l__,./ i l.ヽ! | .| ::::::::::::::l ヽ `7ー.、‐'´ |\-、
はいはいわろすわろす
ちょっといいですか?だと思っていたが、時間を聞くための婉曲表現でもあったのは知らなかった。
と思って調べたらちょっといいですかはtheがいらないみたいだっていうかそれだけの違いで! メリケンこええ。
もう死ぬ もう死ね とか、日本も外人にとっては怖そうだぞ
TimePartOfNowならすんなり受け入れられるんだがな それ以前に定数に対してNow,Today,TimeOfNowと付けるんだから半端ないわ
だんだん慣れてきた
>>152 今頃になってネチネチいうって難儀な性格だねホント。
正直精神分析の対象に思える。
しかも言うことが素っ頓狂だし。
まず結論から言うとTimePartOfNowとTimeOfNowは同じ'Now'を使ってもそれの
意味しているものが違うだけで、どちらもお題の答えとして正しい。
君のいうTimePartOfNowの'Now'はNowという名前のデータ構造が存在していることを
前提とした命名だろ。
俺の言ったTimeOfNowの'Now'は文字通りのNowだから。
普通の英会話で"date of today"とは言っても"date part of today"なんて言ったら意味不明だろ。
それから、定数(というかマクロで定義された即値)を大文字をアンダースコアで区切りで
表現するのってC/C++の慣習だろ。
他の言語じゃあまりやらないよ。(そもそもマクロで即値定義なんて原始的なことやってるの
C/C++とアセンブラぐらいしかないし。)
つーか基本的に意味ない習慣だからCでも自分だけで完結するコードなら俺は従わない。
最後に肝心なことを言い忘れたが、キャメルかパスカルかアンダーバー区切りか、 なんて命名の本質と何も関係ねえだろw なんていうか、語るに落ちてるんだよな。 「命名以外の話題は禁止」と執拗にイチャモンをつける一方で、 同じ口で平気で命名の本質と何も関係ないことに固執する、この一貫性のなさ。 一貫してるのは、要するに「執拗に他人にケチをつけている」という一点においてのみ。
>>154 なにを言っているのだお前は。1行目からおかしいだろ
>>154 びっくりした。
本当に、びっくりした。
>>154 C++もマクロで即値定義なんてことはやらないよ。
やってると思った?
>>154 やっぱり期待通りに笑わせてくれるのなw
date part of today w
作為的なT.O.N.でもない例えでフイタw
>>154 馬鹿か。
慣習は情報伝達コストを大幅に下げる。
命名に拘る理由の大部分が伝わり易さを求めている以上、基本的に意味ない習慣とか厨二馬鹿にしか言えないわ。
お前が慣習に従うかなんて誰も興味ないっつーの。
お前の狭量自慢もいい加減にしてくれ。
そして自分だけで完結しないこのスレで俺ルールを撒き散らすな。
こうしてTONさんは芸風を磨いていくんだな。 エールをおくらせてもらうよ!!! T.O.N!!! T.O.N!!!
奥義!敵は全て一人の自演発動!
久しぶりにわろたw これは真性w
自演って。言葉の意味を気にする割には、これを見て自演って。
また神が降臨したよね!ね!
なにかホッとした。
>>161 君それに後続する人の話をちゃんと読んで突っかかってる?
俺は、キャメルとかアンダースコア区切りとか、その種のスタイルの違いは命名の本質と
関係がないから(つまりスレの趣旨に従えばどうでもいいことだから)自分の好きなスタイルで
書いただけで、別に「アンダースコアで区切る書き方をするのは無意味だから止めるべき」などとは
いってないから。
わけのわからんことで突っかからないでくれる?
こんな頭悪い奴に馬鹿呼ばわりされたくないよまったくw
まあ、言いがかりに目をつぶってあえて君の話にのっかかると、
>慣習は情報伝達コストを大幅に下げる。
これはまったく同意なんだが、件の即値を大文字でアンダースコア区切りで
表現する慣習に関して言えば、これによって伝達される情報が本当に
必要不可欠な情報かどうかは俺は大いに疑問を持ってる。
他人が書いたコードを読むとき、たいがいの場合は「それ」が即値か定数か変更可能な変数か、
なんてことはどうでもいい場合が多いからね。
システムハンガリアン的な無意味で時代遅れな偏執に過ぎないでしょ。
言い合いは英語でお願いします 加えて簡潔な単語でお願いします
誰だよ召還したやつは
煽ると必ず面白い反応するから癖になる
くど過ぎワロタ TONでもなくウザい人種だなw
>>170 で、C++でも#define HOGE 5とか書いちゃうの?
まだまだいくよー!
>>176 余り虐めるなよw
Java以外の経験があるわけが無い
#define FiveOfNumbers 5
FiveOfNumだな
ちょっとかっこよくFifthNumberにしようぜ!
それって4?
>>170 このスレで最上級に偉そうな君の言語経験を教えては貰えまいか?
それぞれ実務何年で頼みます。
そんなの知りたくないし
もうお前ら大好きw
俺はお前が嫌いだ
TimeOfNowって何? ぐぐっても、2chのスレくらいいしか見つからないけど、それって面白い話題?
実をいうと馬鹿馬鹿しくて真面目に読んでなかったので どんなネタなのか俺にも分からない
時々現れるアホのニックネーム
訳してみるか まさに今の時間 みたいな強調表現かもな
凡人並の知能は持ち合わせている様なんだけど 何故かとても あたまがわるい それがTimeOfNow
セカイ系とか自演とかに特殊な俺定義を行っているのも特徴 簡潔に表すなら、重度の中二病患者
今進行中の世界の時間っても訳せる
301リダイレクトされた場合に、正しいURLを求める関数名は何がいいかな? 暫定的に、getResolvedURLとしているけど、これは相対パスから絶対URLを 作成するときに使うような名前だよね?
getRedirectedURL
197 :
デフォルトの名無しさん :2009/02/07(土) 15:44:51
質問です。 いわゆるフラグという言葉は、本来は2値のみを意味するときに使う言葉でしょうか。 例えば1変数のビットごとに定数を当ててオプション指定するなんて例があったとして ビットごとに見れば(アリかナシかの)フラグだし、変数としてみれば2値ではないし こういう場合に変数名にフラグと入れるのは変でしょうか
flagsにすればいいじゃん。
>>197 ありがとうございます。
こういうビット演算によって複数のオプション指定したりする手法にあつらえ向きの名前なんてのはないんでしょうか。
ビットフィールド?
なんか検索したらビットフラグとかビット配列(これは多分違うかも)とか出てきました。
>>201 ビットフィールドはC/C++のイメージがあるのでニュアンスが違う気もします・・・
>>199 普通は「その値の特殊な扱い方」、つまりビットマスクを使ってビットごとに
情報を格納したり取得したりする必要がある、なんてことを変数の名前に
盛り込む必要はないはずだと思う。
そんなことより、そのビットごとの値の集合であるその変数の「意味」に注目して名前をつけるべき。
hogeOptionsとかhogeMethodとかhogeModeとかhogeSettingsでいいじゃん。
>>203 なるほど!確かにそうですね・・・
変なところにこだわっておりました。どうも。
__ , ‐' ´ ``‐、 / ̄:三} . /,. -─‐- 、. ヽ / ,.=j _,.:_'______ヽ、 .! ./ _,ノ `‐、{ へ '゙⌒ `!~ヽ. ! /{. / `! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ . {.l '⌒ ゙ 6',! / :::::::::::::::/ __ そんなことよりTimeOfNowの話しようぜ! . 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、 . ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ ,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 / / / :::::::::::::::: ; '´ /´\ / r'\ . i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、 { {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \ . ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: / ヽ ヽ、 ,. ‐'" .ノ ,〈 > `'‐- ' > _,. ‐'´ / / `) ,ゝ _.⊥.-r┬:/ ヽ_,. -‐i"!´「L.=!┘ ヽ < / / | / 、i / __ ./
爽やかだなw
フラグと聞いて真っ先に頭に浮かんだのがツンデレ オレって…
死亡フラグ
画像のサイズを2のn乗にするプログラムを書いてるのですが、 int xを与えられたときに、xより小さくない2の乗数を返す関数の名前はどういうのがよいでしょうか。 自分で考えたのはint up_to_pow2(int x);といった具合ですが、WEB辞書を見てみると、up to というのが どうやら思っていたのと違う意味のようでした。
? 条件をもっとはっきり。 x以下の2の乗数のうち最大のものを返すのか、x以上の2の乗数のうち最小のものを返すのか、 どっちだ?
ceil
逃げのような気もするが、normalize_image_sizeとか。
すいません。xより小さくない、最小の2の乗数 です。
up to じゃなくて、round up to じゃないかね?
いろいろ出してくれてありがとうございます。 cの数学関数にちなんでceilにしようかとも思いましたが、 ceil_pow2, ceil_to_pow2で意図した意味を成すのか不安なのでround_up_to_pow2にします。
汎用的に使う関数なら、round_up_to_power_of_2()かなあ。
画像サイズの正規化にしか使わないと決まっているものなら、
>>212 でいいんじゃね。
ぐぐると、 power of two round up とか rounding up an int to a power of two とか 出てくるからそれでいいとおもう。
実験屋さんとかが使うMATLABだとnextpow2らしい。 俺ならとりあえずGetMinPowerOf2()とかGetMinPow2()とかしておいて、 必要ならオプションでFloorかCeilingを指定できるオーバーロードを追加するとかすると思う。 というか、過去にそんなの作った気がする。
まてよfloor指定するのなら名前にMinとか入ってると矛盾するのか。。
この際func001()で
1度になぜ2つのことをする
はぁ???????・・・・・・
Part11にて。
265 :デフォルトの名無しさん[sage]:2007/11/22(木) 17:48:28
ある整数値を引数として与えて、その値以上の2のべき乗の数のうち、
最小のものを返す関数の名前は何が相応しいですか?
266 :デフォルトの名無しさん[sage]:2007/11/22(木) 17:52:58
least2PowerGreaterThan(int i)
267 :デフォルトの名無しさん[sage]:2007/11/22(木) 18:03:56
>>265 clp2
268 :デフォルトの名無しさん[sage]:2007/11/22(木) 18:29:21
2Power よりは Power2 の方がいい気が。
power of 2 の of を省略したもの。
昔、自分が使ったのは、CeilPower2 と FloorPower2 でそれぞれ
「x 以上の最小の2のべき」、「x 未満の最大の2のべき」にした。
>>267 も、ceiling power of 2 の略よね?
269 :デフォルトの名無しさん[sage]:2007/11/22(木) 19:02:30
>>
>>267 も、ceiling power of 2 の略よね?
Exactly.
See Hacker's Delight
http://www.informit.com/content/images/0201914654/samplechapter/warrench03.pdf 270 :265[sage]:2007/11/22(木) 21:09:54
どうもありがとうございました。
CeilPowerOf2にします。
質問です。 3Dモデルのボーンマトリクス等で親を継承する前のマトリクスをLocalMatrix、 継承後のマトリクスをGlobalMatrixと表していますが、 頂点カラー等はライトが当たる前の元の色をLocalColor、ライトの色を適応した 最終的なカラーを保持するメンバ名をGlobalColorと言うものなんでしょうか? より適切な名前があるような気がしてなりません。 どなたかより良い名前があればご指摘お願いします。
225 :
224 :2009/02/11(水) 01:44:12
すいません、質問を変更します。 上記の、元データLocalに対して親を継承したものをGlobalとつけていますが、 マトリクス以外の親を継承したデータの名前に対してGlobal〜とつけるのは適切でしょうか? 継承したデータ、の内容は、色加算等の描画フラグ、ソートの補正値等が含まれます。
ロシアンパブはパブから派生だお( ^ω^)おっおっ
「TimeOfNow」って命名がセンスないっていうのが、 正直理解できてない…。 もしかしたら言葉にしづらい感覚的なことなのかもしれないが、 そこんところ、教えてもらえないかな
前置詞っツーのは、前置詞っツーのは
よろしくおねがいします 「入力必須であることを設定、取得するプロバティ名」と、 「入力必須なのに入力されていない事を示すプロパティ名」に悩んでいるんだが、 何かいいアイデアないかな? 例えば、Requireと、IsRequireとか付けてみたんだが、 これじゃどっちがどっちだかわからないので、他のを考えてるんだけど思いつかない。
Required Missing
SetRequired IsRequired IsRequiredButNotFilledIn
IsRequired IsMissing
なるほど参考させてもらって IsRequiredとIsFilledがわかりやすそうなので、これにしました。 ありがとうございました
In...
(・∀・)インポ!!
それは Im... ぢゃ
しかし、「入力必須であることを設定、取得するプロバティ名」ってのはどういうことかのう。。 そのクラスは、文字列か何かの別のプロパティを一つだけ持っていて、 そのプロパティが必須かどうかを表すプロパティ、って意味なのか? だとしたらなんだか無駄な気がするんだけどな。 「それ」が必須かどうかを表現するためだけに、ただの文字列をラップするのか。 「それ」が必須かどうかなんてことは、そのデータを持つクラスが知ってればいいことだと思うけど。
入力で未入力を許容するかどうかを確認する例はよくあるだろ
ToNじゃ!ToNがでたぞ! ま、開発経験の無いでっかちド馬鹿に一つだけ教えてやるけど よくある入力フォームでの話だろ お前は何の経験も無いから知らないだろうけど そんな理想論掲げるだけ無駄だし無意味だし金にもならないし社会活動として破綻してる
>>239 それはそうなんだが、俺(
>>238 )の言ってる意味わかってる?
普通は
>>230 みたいな変な実装しないと思うよ。
これじゃたわざわざ述する手間を増やして可読性を落としてるだけじゃん。
だからバリデータを自分で実装するからだろ
必須は、mandatoryともいうな。
設定するのが義務的な意味で。
>>241 例えばTextBoxの派生クラスを作るのに、
Require属性がなかったら、いちいち項目ごとに異なる派生クラスを作って、
いちいち入力必須かどうか記述しなくちゃいけないじゃん。
そのほうが手間だし可読性は最悪だろ
Require属性があればプロパティを設定するだけですべてに応用ができる。
UserやらNameから派生したテキストボックスとかあったら爆笑しちゃう
>>246 バリデートもそれぞれ別にやらなきゃいけないしな
User.IsMissing
Name.IsMissing
MailAddress.IsMissing
・・・・・
Address.IsMissing
とか、いちいち全部チェックするのかしら。
手間だし可読性も最悪。
>>245 その入力欄が必須かどうかを表す値をGUI部品に持たせるって
普通は変な設計だと思うけどなw
もちろん必須かどうかをユーザーに対して表示する機能を持たせるため、
というような事情はありうるだろうけど。
それ以前に、それって
>>230 の話と違うことない?
>>230 はGUI部品の話をしてたんだろうか?
>>230 は「入力」の話をしてるのに
GUIで入力しないで何で入力するんだ?念力?
ユーザーオブジェクトの必須フィールドについてとかなら
全然違う書き方で質問してくると思うが
>>248 インターフェースでIsRequire属性を、それぞれのクラスに継承させ、
ファクトリークラスからインスタンスを生成する。
ファクトリークラスでは
foreach(IInterface object in ObjectList)
boolValue = boolValue & Object.IsMissing;
これだけですべての項目のバリデートができる
user、name、mailAddress、birthDay、age等すべてでValidateするのとどちらが可読性が上かい?
そして、こんな設計は変なのかい?
なんか書いていてむなしいぜ。
>>249 例えば、Customerクラスに氏を表すFamilyNameというメンバがあるとする。
そのFamilyNameが「入力必須」であることを表現するためだけに、
IsMissingをプロパティに持つ新たな型を導入するのは無駄だということ。
素直にFamilyNameは単純に文字列で持てばいい。
それが必須かどうかの情報はCustomerが持っている方が直感的だ。
>>252 そりゃ無駄だわw
そして、当たり前の事だわw
最後に、ただのお前の勘違いだわw
>>252 逆
その理屈だと、どんな属性もそれを抱えるクラスが持てばいいことになる。
Formに貼り付けたUI部品のVisibleをすべてFormで管理するなんて煩雑過ぎる
そのオブジェクトの属性は、そのオブジェクトが持つのが常識
かつ
>>251 の書いているとおりインターフェースを利用した場合のほうが、
拡張すべき実装(例えば誰が入力したか)がでた場合に簡単に拡張できる。
インターフェースにUserを追加するだけだからな。
>>254 そうでもないよ。
例えばnullを許容するかどうかの場合を考えるとわかりやすいよ。
これは空文字とは別にnullなんだという情報をCustomerクラスに持つなんてしないでしょ。
その属性は、そのオブジェクトに持たせるのが常識。
そのCustomerオブジェクトがValidであるかどうかのチェックが必要な場合はCustomerクラスに記述すべきじゃない? 今回のお題とは全く別件だけどさ
>>255 >その理屈だと、どんな属性もそれを抱えるクラスが持てばいいことになる。
いや、そうは言ってないよ。
「そのオブジェクトの属性は、そのオブジェクトが持つのが常識」には完全に同意するけど、
FamilyNameが入力必須かどうかは普通に考えれば「Customerクラスの都合」であって
FamilyNameの属性ではない。
ただ、
>>251 の言うことが正しい(少なくとも一理ある)のは理解した。
>>251 の言う利点は正直あまり同意できないけど、確かに、例えば
ある値に「不正な入力がされている」ことをUIに反映するようなことを考えるときには
プロパティから取得したデータ自身が「自分が不正な値かどうか」を知っている方が便利だ。
言い訳がましいけど、俺は普段(「入力」ボタンが押されたときまとめて、ではなく)
個別のコントロールに入力された時点でプロパティの値を設定して、プロパティのセッタの中で
バリデーションを行って結果はイベントで通知してUIに反映する、というコードを書く場合が多いので
>>251 の発想はなかった。
「変」とか言ったのが気に障ったらそれは謝る。
ここは属性プログラミングの出番だと思うね。 まあ、 >命名規則や設計の善し悪しについて議論するのは基本的に禁止。 なんで、ほどほどに。
>>258 Webアプリじゃそんな贅沢な事出来ないしな
TONさんさー 今回は出なくていいよ。 正直これはどうでもいい。
>>258 それだとコントロールが追加されるごとに、
・新たなプロパティ値を設定する部分
・バリデーションをする部分
・イベント通知をする部分
・そのコントロールが未入力を許容するかどうか
という項目をCustomerクラスに追加していかなきゃいけなくなるでしょ
ファクトリークラスとインターフェースを利用すれば、
インスタンスを生成するだけで、それが自動的にできる。
そのためには、それぞれのコントロールにRequired属性が必要になるってこと。
>>259 これで最後にするよ。
T.O.N.さんは質問者が解決って言った後に愚痴り出すのが趣味だから、しょうがないよ
>>262 >インスタンスを生成するだけで、それが自動的にできる。
それはちょっとミスリードな言い方だな。
単にそれらの処理が書かれる場所がデータを所有するクラスからデータ自身のクラスに
変わるだけ、でしょ?
もちろん、
>>251 のコードのように列挙してチェックする必要がある項目が
多数になる可能性があるのなら、(1)データ自身に、(2)同じインターフェイスとして実装する
ことによるポリモーフィズムの利点が利いてくるのは確か。
でも
>>230 のような用途でそんな可能性があるのかなあ。
やっぱり正直、一見エレガントに見えて「策士策に溺れる」的に思える。
>そのためには、それぞれのコントロールにRequired属性が必要になるってこと。
ごめんこれは何を言っているのかよくわからん。
最後に、確かにこれはスレ違いと言われても仕方がない話題だねすまんかった。
>>258 解決済みの件を無駄だの変だのと蒸し返した挙句、
今日一番の長文が殆ど全部言い訳で占められてるってどうよ?
本当に性格悪いな、あんた。
>>264 何で質問者がいるうちに言わないの?
何で質問者が居なくなった頃を見計らって「ぼくのかんがえたしつもんしゃがいいたかったこと」を語りだすの?
何で質問者がそこまで間抜けな質問をしていると仮定するの?
>>264 >単にそれらの処理が書かれる場所がデータを所有するクラスからデータ自身のクラスに変わるだけ、でしょ?
「単に」ではなく、それが最も重要な利点。
Validateする内容が文字列だけだと勝手に決めてないか?
stringだけなら、配列にいれた文字をstring == ""ですべてチェックできるが、
intやstringが混在する場合だと、その都度、異なるメソッドに割り振ってチェックしなきゃいけないから効率が悪い。
データ自身が処理を持っていれば、インターフェースで指定したValidateの返値を得るだけでチェックできる。
そしてユーザ指定型を追加して拡張したい場合でも、インターフェースさえ設定すれば、
所有クラスは何も変えずに使い続けることができる。
>でも
>>230 のような用途でそんな可能性があるのかなあ。
十分にある。
・Webアプリのコントロール→ボタン押下時に一斉にチェックする必要がある
・入力をチェックする再利用可能なValidationクラスの設計→メアド、数値など、
入力値をチェックするコントロールを再利用可能なクラスとして設計し、一斉にチェックする場合
・データベースへInsertするための汎用クラスの設計→DateTime値、int値、nullかどうかなど、
それぞれの入力値を一斉にチェックする場合
>ごめんこれは何を言っているのかよくわからん。
これを理解できないのに、なんでインターフェースを語れるんだ?
経験値不足な彼相手によくそこまで付き合ってあげられるなぁ。 ちょっと涙が出てきた。
>>264 >それはちょっとミスリードな言い方だな。
いや自動にできる
>単にそれらの処理が書かれる場所がデータを所有するクラスからデータ自身のクラスに
>変わるだけ、でしょ?
データ自身のクラスに、そんな処理を書くわけないだろ
処理はデータ自身の基底クラスに記述
データ自身はそれを継承しているだけ
だから自動でできる
案の定いつも通りの流れでワロタ
そろそろTONさんバックレます また2週間くらい
>>230 読んでクラスのメンバフィールドの話をしてると思った人ってTimeOfNowの人意外にいるの?
俺は入力フォームみたいのを作って実行する、データ自体には依存しない一般的な仕掛けを実装したいのかなと思った。
とりあえずTONのひとはコテハンかトリップでもつけてくれねぇかなぁ。
トリ付けました。
>>274 フルボッコされると自演乙とか言っちゃう人だから、まぁ無理でしょ
TONが「ました」 なんて言う訳が無い
年度末、年度初めって何かある? startNendoOfYearとかベタなのしかおもいつかんw
280 :
279 :2009/02/13(金) 13:49:40
ああ、ごめん年度開始月と、年度末月でした。 startMonthOfNendoとか、endMonthOfNendoとかしか思い浮かばない・・
Nendo -> FiscalYear (会計年度) Nendo -> BusinessYear (事業年度) Nendo -> AcademicYear, SchoolYear (学校年度)
of yearっているの? ToN!
>>267 いや、「<コントロールに>Required属性が必要」というのはやはり意味不明に聞こえる。
コントロール、に?
前半の話は理念的に美しいのは認めるが、現実解としてはやはり間違いだと思う。
>>230 のような話は、ベタにやった方がずっと早くわかりやすく書ける。
>>269 それ自分で言ってることの意味がわかって言ってるの?
>>284 >前半の話は理念的に美しいのは認めるが、現実解としてはやはり間違いだと思う。
なら汚いスパゲッティコードしか書けてないんだろ
object指向ならあらゆる処理を行うコードが、それぞれまとまっているわけだが?
int.ToString();
string.Substring(0, 0);
datetime.AddDays(0);
そしてintなどには未入力であることを示すプロパティが無いから、
自前で実装しておきたい需要は普通にあるだろ。
それこそ機能を作っておいて
>>269 の言うとおり継承するだけでいいんだから
そのほうが簡単で確実だし可読性も良い。
お前の言う方法だと、いちいちその都度、Customerクラスを専用に作り直さなければ
ならないので遅いし、クラスによって実装が異なるから分かりにくく可動性に欠ける。
>>286 いきなりお前呼ばわり?
まあいいけど、既に書いたとおり、
>>230 のような情報は本来「データを所有しているクラス」
が知っているべきことであって、データそのものに属する情報じゃない。
OOP云々いうのなら、こういう「意味論的なおかしさ」にも敏感になってよ。
それだけでなく、年齢(普通ただの数値であることを期待するだろう)が、「必須項目かどうか」
を年齢自体に持たせるために、本来ただの数値で済むものに専用型を導入するわけ?
int age = Customer.Age.Value;
みたいなまどろっこしいことを強制されるわけ?
策に溺れてるじゃん。
それと、その継承の使い方はおかしいと思うよ。
継承って「見たくないコード」を隠すために使うものなの?
違うと思うけど。
>287 継承の使われ方は結果論であって、 親クラスがその責務をもつのが妥当かって話で その観点からは個人的にはアリだと思うけど。 まどろっこしいかどうかは言語によっても変わるだろうし。 でもお二人ともスレ違いだしそろそろやめたら?
>>287 そこで暗黙の型変換使わないでどうするの?
もう少し知識を揃えようね。
それにオブジェクト指向の根本が見たくないものを隠すからなってるだろが。
o(・_・= ・_・)o キョロキョロ
Webアプリだと普通にベストプラクティスの一つだと思うけどな。 それを「少なくとも一理ある」だの「正直あまり同意できない」だの、どんだけ言い訳まみれの人生なんですかw
>>1 >命名規則や設計の善し悪しについて議論するのは基本的に禁止。
>>238 の時点でブッチギリにスレ違いなのに、何をいまさらw
所持数とか使用数みたいな 変数名はいまだに悩む
結局残るのはTimeOfNowを肯定する人間は一人も現れないと言う事実のみ
いまはこーのばしょで〜TimeOf Now〜
>>287 >OOP云々いうのなら、こういう「意味論的なおかしさ」にも敏感になってよ。
なるほど組み込み型の変数以外は、どんなクラスであれ、データそのものでなく、
データを所有するクラスだから、未入力属性が存在することは認めるということね。
つまり、バリデーションを受け持つクラスや、GUI部品が
未入力であることを示すプロパティを持ってる事には納得したってことだな。
じゃなんで、
>>238 のような質問をするんだ?
>>230 はどう考えても、お前の言うところのデータを所有しているクラスのプロパティだろ。
>int age = Customer.Age.Value; みたいなまどろっこしいことを強制されるわけ?
暗黙の型変換、拡張メソッドがあるじゃん
>継承って「見たくないコード」を隠すために使うものなの?
すべてではないが、一つの機能だろ。
継承とカプセル化が無縁のものなら、なんでprivateとprotectedの違いがそもそもあるんだ?
>>298 だからいきなり人をお前呼ばわりするなって。
最低限の礼儀も弁えない糞ガキなの?(まあ、やってることは疑念の余地なくそう。)
悪いけど前半は何を言ってるのかさっぱり理解できん。
最後の三行について言えば、
>>269 ,
>>286 が言っているような目的、
つまり、例えばEMailAddrクラスがあるとして、そのクラスの中に直接Validateメソッドを
書くことを避けるためだけに無理に(つまり何の「汎化」にもなってない!)
ベースクラスEMailAddrBaseクラスを作る、なんていう継承の使い方を良しとする
まともなプログラマって見たことないよ。
それって、例えばCで、「関数の行数が長すぎるからもっと短くしろ」と叱られた
馬鹿な新米プログラマが、
int hogeFunc(int x, int y)
{
#include "hogeFuncの中身.h"
}
とやってるのと何が違うの?
ついでに言えば、こういう愚行を「カプセル化」と呼ぶ人間も見たことない。
(まあこれは普通そんな頭の悪いことはしないから当たり前だけど。)
俺が設計してやろうか?
2chでお前って言われてブチ切れるやつ始めて見たwwww
ひょっとして40過ぎのおっちゃん?
>298,299 お前らもう最低だな。早く死ねや
老害すぎる
つかNullable型のような物を自前で実装するってだけだろ 何そのEMailAddrBaseってw ダサすぎw
つまりやっぱりTONの人なの?
>>299 は総称型も暗黙の型変換もない言語を使ってるんだよ…
IsMissingだけをサポートするMyStringって型作ってEMailAddrやらFirstNameやらPostalCodeやらがそれを継承するだけじゃん なんでEMailAddrBaseやらFirstNameBaseやらPostalCodeBaseまでつくらにゃならんの?
EMailAddrBaseさん、落ち着いてくださいよ 糞ガキ呼ばわりも十分に無礼っすよ 無礼者同士、仲良くしたらいいじゃないっすか
議論も仲良くもここでやんな。
荒らしにはスルーが基本。読む価値なし
だれかToNさんに鏡を渡してあげないと
質問ですが、ToNとTONとT.O.Nとどれが一番いいと思いますか?
ToNがいいと思うけど顔文字に見えてしまう
>>313 もういっこピリオドを付けてT.O.N.にする
>>299 >クラスの中に直接Validateメソッドを書くことを避けるためだけに無理にベースクラスEMailAddrBaseクラスを作る
お前バカだろ。電子メールアドレスの基底クラスを作って、それを派生させるのはメアド入力だけかよw
個々のオブジェクトに普遍、共通な機能をクラスに記述し、それを継承できるとこにobject指向の意味があるんだよ。
例えばメアドでも住所でも、バリデートが必要なデータは、すべて使用者が入力するデータなんだから、
入力値とIsMissiongプロパティを所有するValidateStringとか言う自作クラスを作って、それを継承するだけだろ。
ついでに入力値を設やりとりするプロパティとか、文字数とか、nullかどうかをチェックする機能も
基底クラスに記述すればいいわけだ。
>(つまり何の「汎化」にもなってない!)
お前の脳内で汎化してないだけだろ。
EMailAddressでも、ZipCodeでも、Addressでも、FaxNumberでも、
すべて未入力を許容する可能性があるんだからValidateStringを継承すればいいだけ。
いちいち未入力であるかどうかを個々に記述してたらばからしいだろ。
>こういう愚行を「カプセル化」と呼ぶ人間も見たことない。
お前、継承の機能を全然理解してないだろ。
customerクラスが、未入力を許可するかどうかを所持していたら、
項目が増えるごとにメンバを増やさなければいけないから、
入力するフォームが増えるだけ異なる別個のクラスができて非効率的だろ。
データが所有クラスが、自分自身に未入力を許容するかどうかを持っていれば
Customerクラスを改変せずに利用できるから非常に便利。
317 :
デフォルトの名無しさん :2009/02/16(月) 00:44:03
>>299 もう面倒だから俺が設計してやんよ
public class MyString //入力関連の基底クラス
private string mData = "";
private bool mIsRequire = false;
public string Data //入力データを格納するプロパティ
public bool IsRequire //入力必須かどうか
public bool IsMissing //入力必須であるのに入力がない
public interface ICheck
public virtual bool IsCheck() //入力データをチェックするメソッド
public class MailAddress : MyString, ICheck //メアドチェック
public bool IsCheck()
return IsMissing && IsMailAddress
public bool IsMailAddress //メアドかどうか
public class PostalCode : MyString, ICheck //メアドチェック
public bool IsCheck()
return IsMissing && IsPostalCode
public bool IsPostalCode //郵便番号かどうか
public class Tel : MyString, ICheck //電話番号チェック
public bool IsCheck()
return IsMissing && IsTel;
public bool IsTel //電話番号かどうか
汎用化できるじゃん。しかも継承させたほうがすっきりして可読性が良い。
>>316 ここでもいつも言ってることだが、人が言ったことに反論してもらえるかな?
人が言ってもいない、ただの君自身の被害妄想的な妄想に対して一生懸命反論して
何か意味あるの?
いつも思うんだが、こういう人間ってどういう思考回路してんだろ意味がわからない。
>>317 一応反論(と言っていいかわからんが…)しとくけど、俺が使った言葉は「汎化」ね。
>>269 ,
>>286 が言っているような継承の使い方は、なんの汎化にもなってない愚行だ、
と言ったんだよ俺は。
しかし、君に言ってもしょうがないけど
>>269 がどういう意味で自動って言ってるのか
さっぱり意味がわからんな。
この人継承って魔法か何かとでも思ってるのかしらん。
まあIsRequiredのようにメンバ変数の値を返すだけプロパティやメソッドなら
コンストラクタでメンバ変数に適切な値を入れるとかで見かけ上「自動」にできるけど
(でも普通はそんなことせず、素直に派生クラスでオーバライドする作りにした方が早いよな)
Validateのようなメソッドがどう「自動」にできるのか聞いてみたいもんだ。
コンパイラの中の小人さんが適当にValidateの中身を書いてくれるのかw
あと、一つ思ったんだが、
>>230 がいうような情報をデータ自身に持たせることが
意味論的におかしいことは既に書いたけど、そのことの帰結として、
例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが
違ってたらどうするの?
もちろん、例えば入力必須かどうかで別の型にするとか、いろいろ技巧的に解決法があろうとは
思うけど、それって本当に直感的と言える?
むしろそんな技巧を凝らさなければならなくなるのは、最初の考え方に無理があるからじゃないの?
もちろん物事何でもトレードオフだから、多少意味的におかしくてもコードが簡潔になるとか、
それ以上のメリットがあれば良いとは思うんだけど、
>>251 が提案しているような方法は
ある種エレガントではあっても冗長なだけにしかならんよ。
まるで庭の焚き火用の穴を掘るのにユンボ使ってるようだ。
>ある種エレガントではあっても冗長なだけにしかならんよ。
設計の話か。俺になんか聞きたいことある?
\(ToN)/設計オワタ
>>264 でスレ違いを謝罪してるのに何故未だに続けてるの?
「確かにこれはスレ違いと言われても仕方がない話題」であり、
「紛らわしい事については認めるが、スレ違いでは無い」からです。
「スレ違いな話題だと勘違いする馬鹿」に対して「お気の毒に」と言っているのが
>>264 です。
これを「TimeOfNowメソッド」と呼びます。
>>319 >
>>269 ,
>>286 が言っているような継承の使い方は、なんの汎化にもなってない愚行だ、と言ったんだよ俺は。
>>317 に書いてるじゃん
>しかし、君に言ってもしょうがないけど
>>269 がどういう意味で自動って言ってるのかさっぱり意味がわからんな。
MailAddress mailAddress = Factory.CreateMailAddress;
PostalCode postalCode = Factory.CreatePostalCode;
Tel tel = Factory.CreateTel;
foreach (ICheck object in Factory.ObjectList)
icCheck = isCheck && object.IsCheck;
いろんな手法はあるが、わかる安くかけば、こんなふうに自動でできたよ
>Validateのようなメソッドがどう「自動」にできるのか聞いてみたいもんだ。
>>317 に書いてるじゃん
>>321 >
>>230 がいうような情報をデータ自身に持たせることが意味論的におかしい
おかしくないよ 例 JAVAのString.isEmpty()
>例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが違ってたらどうするの?
その型を格納するクラスが二つになるだけだよ。
メールアドレスを格納するクラス
MailAddress mailAddress1 = new MailAddress();
MailAddress mailAddress2 = new MailAddress();
とするだけだよ。参照渡しと値渡し理解してる?
>例えば入力必須かどうかで別の型にするとか、いろいろ技巧的に解決法があろうとは
>思うけど、それって本当に直感的と言える?
オブジェクトにそのプロパティがあるほうが直感的だよ。
どんな入力内容にも、入力必須が入力必須でないかの二つしかないよ。
入力必須でなければ、入力必須をfalseにして普通に使えばいいだけだよ。
一般化できる昨日をスーパークラスに記述するobjectの仕組み理解してる?
329 :
デフォルトの名無しさん :2009/02/17(火) 02:02:00
>>321 >あと、一つ思ったんだが、
>>230 がいうような情報をデータ自身に持たせることが
>意味論的におかしいことは既に書いたけど、そのことの帰結として、
>例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが
>違ってたらどうするの?
異なるインスタンスを生成するだけじゃねーか
なにいってんだ?
>>318 お前も人の言ったことに反論してねーじゃねーかw
おかしくないよ 例 C#のNullable<string>
>>328 彼はそれだけじゃ理解できないからもう少し書いてあげないと
MailAddress mailAddress1 = new MailAddress();
MailAddress mailAddress2 = new MailAddress();
mailAddress1.IsRequire = true; //mailAddress1.IsMissing ⇒ true & mailAddress1.IsCheck ⇒ false
mailAddress2.IsRequire = false; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true
mailAddress1 = "hoge1"; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ false
mailAddress2 = "hoge2"; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ false
mailAddress1 = "
[email protected] "; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ true
mailAddress2 = "
[email protected] "; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true
ほんと、書いててむなしくなるな・・・
>>330 >>318 はどこかの誰かのアンカミスで、ToNに宛てて言ってるんだろ?
そうとしか思えない。いや、それ以外ありえない。
>>318 、ミ川川川彡 ,ィr彡'";;;;;;;;;;;;;;;
ミ 彡 ,.ィi彡',.=从i、;;;;;;;;;;;;
三 ギ そ 三 ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
三. ャ れ 三 ,. -‐==- 、, /!li/'/ l'' l', ',ヾ,ヽ;
三 グ は 三 ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
三 で 三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
三. 言 ひ 三 .,,__/ . ,' ン′  ̄
三 っ ょ 三 / i l,
三. て っ 三 ノ ..::.:... ,_ i ! `´' J
三 る と 三 iェァメ`'7rェ、,ー' i }エ=、
三 の し 三 ノ "'  ̄ ! '';;;;;;;
三 か て 三. iヽ,_ン J l
三 !? 三 !し=、 ヽ i ,.
彡 ミ ! "'' `'′ ヽ、,,__,,..,_ィ,..r,',",
彡川川川ミ. l _, , | ` ー、≡=,ン _,,,
ヽ、 _,,,,,ィニ三"'" ,,.'ヘ rー‐ ''''''"
`, i'''ニ'" ,. -‐'" `/
ヽ ! i´ /
ノレ'ー'! / O
>>332 その結果、入力内容が正しい(IsValidate ⇒ true)かどうかってのも必要かも
入力必須でなく(IsRequire ⇒ false)、未入力の場合、メアド判定はfalseでも入力結果は正しいからね。
まとめるとこんなんになるのかな?
mailAddress1.IsRequire = true; //mailAddress1.IsMissing ⇒ true & mailAddress1.IsCheck ⇒ false & mailAddress.IsValidate ⇒ false
mailAddress2.IsRequire = false; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true & mailAddress.IsValidate ⇒ true
mailAddress1 = "hoge1"; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ false & mailAddress.IsValidate ⇒ false
mailAddress2 = "hoge2"; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ false & mailAddress.IsValidate ⇒ false
mailAddress1 = "
[email protected] "; //mailAddress1.IsMissing ⇒ false & mailAddress1.IsCheck ⇒ true & mailAddress.IsValidate ⇒ true
mailAddress2 = "
[email protected] "; //mailAddress2.IsMissing ⇒ false & mailAddress2.IsCheck ⇒ true & mailAddress.IsValidate ⇒ true
つか、そう考えると入力判定にIsRequire属性必須だよな
空文字はメアドチェックにははじかれるけど、入力必須でなければバリデート結果はtrueだからな。
まさに書いててむなしくなるな・・・
>>335 IsCheck==IsValidate
俺ならIsValidプロパティかValidateメソッドで実装するな
TONさん議論の入り口にも立ててなくてワロス ワザとやってるんだろうか
IsValidate はまず品詞がおかしい
IsCheked IsValid
論旨に影響しない瑣末な違いだ
このスレにとっての本題だがな
いつの間にか設計の話するスレになってたんだな
設計の話と言うか おぶじぇくとしこういちねんせいのToNに虚しさを感じながらも無駄な説明を繰り返すスレ
トンはもう秋田
さぁTONさんタイムがやってまいりますた!!
>>327 さすがに頭おかしくないか?
>>317 とかそれのどこが「自動」なんだ。
>>264 で指摘しているように、ただ判定処理が書かれるコードの場所が変わってるだけだろ。
>>328 ,
>>332 >>335 君ら(複数人だよね?)それ本気で書いてるのか?
こんなこと一々説明しなくても当然分かるだろうと思って書かなかったが、
IsRequiredはゲッタのみかつ定数を返すようにしないとマズいだろう。
IsRequiredをインスタンスメンバとして実装しちまったら
外からMailAddressをセットできなくなるだろ。
言ってる意味分かる?
なんていうか、まともなコード書いたことない奴が本読んだだけで
物を言ってるのがバレバレだなw
>>346 >
>>264 で指摘しているように、ただ判定処理が書かれるコードの場所が変わってるだけだろ。
それがobject指向の目的だよ。
データと判定処理をクラスが持っていたら、クラスの所有するデータが増えるたびに、
そのデータの判定処理をするプログラムを書かなければいけないよ。
データそのものが判定処理を持っていれば、データを持つ所有クラスは何も改変せず、
自動的に処理されるよ。
>IsRequiredはゲッタのみかつ定数を返すようにしないとマズいだろう。
別にまずくないよ。設定するのが嫌だったら、初期値でfalseにしといて使いまわせばいいだけだよ。
>IsRequiredをインスタンスメンバとして実装しちまったら
>外からMailAddressをセットできなくなるだろ。
MilAddressは、IsRequiredを所有するクラスなんだから、セットも糞もないよ。
何が困るのか実際のコードで示してくれよ。
>>347 ではCustomer.MailAddress1のIsRequiredはtrueであって欲しいとして、
Customerの外のクラスから
MailAddress ma = new MailAddress();
ma.IsRequired = true;
Customer.MailAddress = ma;
とかされた場合、どうするの?
ごめん ma.IsRequired = false; に訂正
っていうか、ここまで言ってまだ分からんかなあ。。
横に長いコード書くなよ。うちの専ブラの使い方で見づらい
>>348 trueであって欲しいのに、
ma.IsRequired = true;
をし、さらに
Customer.MailAddress = ma;
をすることが間違い
じゃあ、
Form.TextBox1のVisibleはtrueであって欲しいとして、
Formの外のクラスから
TextBox tb = new TextBox();
tb.Visible = false;
Form.TextBox = tb;
とかされる可能性は問題ないの?
むしろ、そんな設定をするほうが悪いんじゃないの?
>>348 IsRequiredをtrueなりfalseと設定したいから、そう記述するんだろ?
お前はいちいちプロパティが改変されることを予見してすべてプログラムするのか?
>>352 おいおい何を言ってるんだよトチ狂ったかw
そもそも外(UI)から操作される値の話をしてるのに、
外から操作してはダメな値を操作するのがおかしい、ってどういう意味だよ。
もう一度
>>230 から読んで話の文脈をちゃんと理解して何かいってよ。
>>353 それこそOOPを理解してる?
普通に考えれば、IsRequiredは外から操作されたくない値だろう。
>>230 の意図はそうじゃないよ、って言いたいの?
じゃあまあ
>>230 の意図はおくとして、IsRequiredが外から操作されたくない
値だったら(普通にありふれたシナリオだと思うが)どうするの・
>>354 おいおい、お前頭がおかしいんじゃないか?
なら、絶対に表示しなければならないGUI部品のTextBoxがあったとして、
そのTextBox.Visibleを絶対に変更されないような仕組みをわざわざ作る必要なんてないだろ?
使う本人が分かればいいんだから。IsRequiredも同じだろ。
>>355 >普通に考えれば、IsRequiredは外から操作されたくない値だろう。
いや、汎用のクラスライブラリとしては、普通に操作できて当たり前だろ。
っていうか、正直
>>230 のような目的で
>>251 式にデータ自身に
メソッドやプロパティを持たせるかどうかは意見が分かれるところだとは思うけど、
IsRequiredはクラスメンバの値を公開するようにすべき、ってのは
まともなプログラマが100人いたら100人が同意する話だと思うぜ。
359 :
デフォルトの名無しさん :2009/02/17(火) 20:19:25
質問 bool値を返す関数ってよくIs〜って名前付けるよね? でも『A君はB君の方を見ていますか?』みたいな文の場合、 英語にするとDoes〜で始まると思うんだけど、 こういうときの関数名はどうするべき?
>>360 それ可能・不可能の意味合いに変わってるじゃないですか
>>356 外から変更されたくない値は変更できないようにしておくのが当たり前。
君は「アクセス修飾なんてぜんぶpublicでいいじゃん」っていう初心者様?
>>357 汎用クラスライブラリの話なんかしてないの。
ベタベタに特定用途専用のクラスの話をしてるんでしょ。
だいじょうぶかよ。
CustomerクラスのMailAddress1プロパティが必須かどうか、なんて値を
外から操作できてどうするんだよw
もちろんそういう用途が皆無とはいえないはずだが、普通はないよ。
>>362 変更されたくない値かどうかは、設計者次第
汎用クラスとして設定できるようにしておいて、その継承クラスで隠蔽しておけばいいだけでしょ。
>>230 の使い方もわからないのに、勝手に変更されたくないと決めつけて意見するほうが間違い。
とはいえ、汎用的に利用するために、IsRequireのようなプロパティは公開しとくのが当たり前だろな。
>汎用クラスライブラリの話なんかしてないの。
>ベタベタに特定用途専用のクラスの話をしてるんでしょ。
ユーザが入力した文字列のバリデーションなら汎用だろ。
勝手に特定用途専用なんて決めつけるほうがおかしい。
>CustomerクラスのMailAddress1プロパティが必須かどうか、なんて値を
>外から操作できてどうするんだよw
CustomerクラスのMailAddressプロパティなんて
>>230 は話してないだろ?
何で勝手に自分の都合のいい解釈してんの?
それに
>>317 をみれば、それぞれのデータにIsRequiredプロパティがあるほうが
わかりやすいだろ?
>>359 A.IsLook( B );
でいーんじゃないかなぁ。もしくは
A.IsLooking( B );
これで伝わると思うんだけど。。。
365 :
デフォルトの名無しさん :2009/02/17(火) 20:44:00
>>362 業務ソフトは入力値のvalidationばかりだから
それにリソースを取られないようにクラスライブラリ化するのは当たり前でしょ
mailaddressの未入力を許可するみたいなのこそベタベタの汎用処理だと思うぞ
366 :
デフォルトの名無しさん :2009/02/17(火) 21:02:15
ToN敗走
>>363 んもー鳥頭さん?
>それに
>>317 をみれば、それぞれのデータにIsRequiredプロパティがあるほうが
>わかりやすいだろ?
まず最初に、そこは異論ないよ。
何度も言うように、意味論的にはオカシイんだけど。(正直これに違和感感じない人間にOOP論じる資格なし)
ただ、何度も言うようにデータにIsRequiredがあるのは意味論的には間違ってるから、
(それは本来Customerクラスが知っているべきことだ)その当然の帰結として、IsRequiredを
フールプルーフに出来なくなっちゃうよ、これって問題じゃないのかい、と言ってるの。
フールプルーフに出来なくなっちゃ、とは
Customer.MailAddress1に触るコードを書くときは、MailAddress.IsRequiredの値を間違って
破壊しないようにCustomerクラスを使う人が注意を払わなきゃならんということ。
どっかのトンマがIsRequiredを間違って破壊しちゃう可能性が機構的に排除できないってこと。
>>365 自分で自分の足を(撃とうと思えば)撃てるのはかまわないが、
安全装置を(組み込もうと思っても)組み込めないようなライブラリなんかに価値はないよ。
つーか、だからそもそもライブラリの話してないしさ。
>>367 >何度も言うように、意味論的にはオカシイんだけど。
おかしくないよ。これをおかしいと思うひとにオブジェクト指向を語る資格なし。
>どっかのトンマがIsRequiredを間違って破壊しちゃう可能性が機構的に排除できないってこと。
だからフールプルーフについては既に記述してるじゃん。
お前は絶対に表示しなければ成り立たないGUI部品があったとして、
そのVisibleをfalseにできないようわざわざ設定しているのか?
>安全装置を(組み込もうと思っても)組み込めないようなライブラリなんかに価値はないよ。
継承して隠蔽すればいいじゃん。
汎用的に使えないライブラリなんかに価値はないよ。
はいはい、そうだねお前らが正しいよ お前ら釣られまくりでバカじゃねーの?wwwwww しねばいいよwwwwwwwwwwwwwwww
230は foreach(inputField in Fields){ if(inputField.IsRequired && inputField.IsMissin){ // なんかする。メッセージのappendとか。 } } ってことだろうとふつーに思った。ふつーに思った。(IsRequiredは冗長かもしらんが。) 238を読んで、あーこういう脳みそがななめってるうざいやつってうちの現場にもいるなーって オレも思ったし、お前も思っただろう。そいつは多分今も仕事中ww
>>372 >>238 は
bool tmpBool = false;
tmpBool = MailAddressCheck(mailText);
tmpBool = MailAddressCheck(mailText1);
tmpBool = PostalCodeCheck(postalText);
tmpBool = PostalCodeCheck(postalText1);
tmpBool = TelCheck(telText);
とか、オブジェクト指向がわからず、いちいち関数で処理しちゃう奴だろ?
しかも、tmpBoolが最後のTelCheck()だけで決定されてしまってバグに気づかず大慌てするタイプ。
もっというと、tmpBoolとか死ねって感じのタイプ。
いくらバカでもせいぜいflagとかにしちゃうぐらいだと思うがなぁ
IsRequiredプロパティ設定可否だの、定数での設定だの、 方法論はいろいろあるけど、変更できる人には、変更できちゃうんだから、 定数値でも意味がないだろ。 変更したくなければプロパティを隠蔽すりゃいいんだから。
なんかへそ茶だな。
2chで(馬鹿な)君に賛同してる奴なんて君と同じレベルの馬鹿なのに。
「オブジェクト指向が分からない」とは、
>>230 のいうIsRequiredのような値は
データの所有者に属する情報であってデータ自身に属する情報ではないことが
理解できない人間の事を言う。
>>377 隠蔽する方法の言語仕様を知りたいの?
private new string MethodName();
で隠蔽できるじゃん
言い争ってるやつらは経験不足なんじゃないかな。決め付け多いし。 いつの世も理想主義と現実主義の話は平行線。 極論ばかりだと現実社会では生きていけないように プログラマーとしても成長できませんよ。 ここから上から目線のやつが現れてもっと解説 ↓↓
___ /::::::::::::::::\ /:::::─三三─\ /:::::::::(○)三(○).\ /⌒)⌒)⌒.:::::::::: (__人__) :::::: \ /⌒)⌒)⌒) | / / /.. ` ⌒´ | (⌒)/ / / /,,-''ヽ、 | :::::::::::(⌒) / ゝ ::::::.,,-''" \ | ノ \ /_,-'" \ ヽ / ヽ /\ \ | | __ //\\ \ /|[]::::::|_ / \/\\ / ./| ̄ ̄ ̄ ̄ //\ \/ \ // ___ | |:::「「「「「「 / \/\ /\\ /:::/ ./| |__ _..| |:::LLLLL//\ \/ \/\\/::::::/ / | ロ .|lllllllllllll / llllll| |:::「「「「 / \/\ /\ .\/ ./::::::::/ / ./ .| |lllllllllllll __ llllll| |:::LLL.//\ \/ \/\ /::::::::/ | / .| ロ .|lllllllllllll | |:::「./ .\/\ /\ \/ /::::::::/⌒ヽ、| ||/ ..| | |:::l//\ \/ \/\_, -― 、 ''"⌒ヽ,_ (⌒ヽ、_,ノ⌒Y" Y .....⌒) (⌒ヽー゙ ....::( ..::....... .__人.....::::::::::::::::::::
>>376 データ所有者が欲しいから、データそのものと、IsRequiredプロパティを同時に所有しているんだろ
「オブジェクト指向が分からない」とは、データが様様な属性を所有していることを理解できない人のことを言う。
382 :
デフォルトの名無しさん :2009/02/17(火) 22:33:12
>>379 ToNさんお疲れ
決めつけじゃなくて言語仕様そのものの理解が間違ってるんですよ。
それを他人のせいにしたら、一生、オブジェクト指向が理解できないっすよ?
この手の話は結局、どっちのオブジェクト指向論が正しいのかニュートン法で収束
>>379 極論ばかりだと生きていけない=ToNみたいな存在も許容しろ
言い争ってる=喧嘩両成敗=ToNみたいな無理難題な喧嘩を売られても認めろ
っていいたいのか?
お前こそ人間として最低だろう
C#って日本語のプロパティ名使えたのな。結構いいかもしれんわ。 大体「中途受任日」って英語でなんていうねん。
>>383 いやオブジェクト指向論にすらなってない
>>321 >例えば同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが
>違ってたらどうするの?
を読めばオブジェクト指向すら理解できていないことがわかる。
>>386 あのさあw
なんか本当に鳥頭の人がいるな。
どうして「同じ型のデータが2つ以上必要で、それぞれ入力必須かどうかが違ってたら」
問題かさっき説明したでしょ。
それは、IsRequiredをデータ自身に持たせて、かつフールプルーフに実装しようと思ったら
クラスメンバの値を返すようにする必要があるから(すくなくともそれが一番簡単で
標準的なやり方だから)だよ。
こんな馬鹿にOOP云々言われたくないわまったく。
>>387 >それは、IsRequiredをデータ自身に持たせて、かつフールプルーフに実装しようと思ったら
>クラスメンバの値を返すようにする必要があるから
隠蔽できるから返されないって言ってるじゃん。
メアド交換して当事者同士でやってくれよ。たまらん。
>>388 ごめんどういう意味?
真面目にわかりません。
具体的なコードで説明してくれると助かるかも。
>>384 そんなんだからお前はいつも底辺で働いているんだろ
まぁがんばれよ
>>392 そんなんだからお前はいつも底辺で働いているんだろ
まぁがんばれよ
>>393 言うことなくなったか。責めてごめんな。
みんな怒ってるから空気読んで、もうやめとこうな?
>>393 相手のレスが無くなるまでレスしたほうが勝ちですか?w
396 :
デフォルトの名無しさん :2009/02/17(火) 23:05:45
そうとう口惜しかったんだろ許してやれよ
>>359 if (aHash.containsKey(aKey)) { ... } みたいな例が一杯あるし、
a.looksAt(b) みたく、三単現の動詞を使えばいいと思うよ。
さっきから意味論意味論恥ずかしい奴が居るなw
意味論=自分が理解できる範囲の論
汎化とか、意味論とか言うところをみると、 情報処理関連の専門、短大、大学を出たが実際に設計をしたこともない池沼という感じだな
>>398 すまんこのレスで既出な上に、Atまできっちり付いてたアル
オブジェクトが主語にならないときに、O.SIsCとするかO.IsSCとするか悩む。 例えば「Oの髪が金色か否か?」みたいな。 あー、もちろん「髪が金色」に相当する1単語の形容詞があるのは知ってるぜ。 ただ「そもそもOが主語にならないようなプロパティはおかしい」とか言ってしっちゃかめっちゃかにされるのを避けてみた。
「値」から「ユーザーの入力した値」が派生しているだけの話なのに、意味論的におかしいの?
値←ユーザの入力した値←ユーザの入力した文字列値←ユーザの入力した文字列であるメアドの値 というクラス階層が大真面目に書いてあったら 絶対笑うか泣く。
局所的にバリデートの手間をすっ飛ばせればそれで良いリーマンと 意味論を重要視し、体系的に完璧でなければ許し難い無収入者の戦い
>>405 まったくおかしくないよ
ユーザが入力できる値は基本的に文字列だからな
基本的に文字列から派生することになる
直接に数値として得られるのは配列の要素だけ。
>>367 包丁も車も完璧な安全装置を組み込めないから価値は無いよね。
マグカップでも人が死ぬ事もあるから使えないよね。
どこかのトンマがPC投げつけてきたら危ないからPCも捨てようね。
TONの定義するTONMAが空想上の動物で無いとすると PI=3.14159って定数が勝手にPI=3に書き換えられてもおかしくないな さて、これをフールプルーフするには一体どうすれば良いのだろうか
>>359 A is looking at B
A.isLookingAt(B)
this.AisLookingAtB()
好きにしろ。
Webアプリなんですが、 仮登録中のユーザー(users)を格納しておくテーブル名、 あるユーザーのプロフィールを見たユーザーの「足あと」を格納しておくテーブル名、 ある記事を見た人(ユーザーに限らない)の日時やIPを格納しておくテーブル名。 それぞれ、なんかいいのないですか?
>>385 いちいち変換しないといけないからめんどくさい事この上ないよ。
>>416 Pre Signup Users
Profile Footprints :: user_id -> footprint
Article Viewer Infomations :: article_id -> viewer_info
てきと。
419 :
416 :2009/02/18(水) 15:23:36
>>418 おおぉ、いい感じです!
ありがとうございます!
お題を出した人が満足してからが本番!
さあ、TONさんの出番です
>>419 まちがえた。
infomationじゃねえ、
informationだ。
恥ずかしい。
>>423 あー。そういやWebはVisitだなー。
もう質問者いないだろうけどw
そりゃ違うだろう。
visitor or not: (ウェブサイトの)中に入ったかどうかの違い
viewer or not: (記事を)見たかどうかの違い
>>416 が求めているものがどちらか言うまでもない。
visitor or not (笑) viewer or not (笑)
>>425 英語圏のソースを片っ端から見てきた方がいいよ
間違ってるから
428 :
デフォルトの名無しさん :2009/02/19(木) 22:02:05
ToN改めVoNさんキタ━━━━(゚∀゚)━━━━!!
失せろゴミ
VoNw w ww wwww さすがにネタだろ
>>425 具体的に例えばどのコード?
というか、もし仮に記事を見た人間のことをvisitorと呼ぶのなら(どう考えても変過ぎるが…)
ウェブサイトの訪問者はそれと区別してなんと呼ぶの?
アンカミス?
ToNさん お疲れ また来たの?
みんなTONに優しいな
TONさんのプロフィール ・40過ぎ ・英語は苦手 ・リーダークラスSE
>・リーダークラスSE オブジェクト指向しらなくて、それはない VB6しか触ったことないならあり得るが
>>438 ×Leader
○Reader
ソースは読んだ事しかありません
連鎖あぼーんって便利だなwwwwwwwww
441 :
234 :2009/02/21(土) 00:34:22
参考にさせてもらおうと、またきてみたのですが、 なんか私のせいで荒れてしまったみたいですいません。 あれから、設計をいろいろ見直しまして、そこそこのものができたかなぁと思っています。 まだ足りない部分があるので、考えているのですが、また迷ったらよろしくお願いします。
誰がどんなお題を出してもその後の流れは決まってるからまったく気にする必要なす
443 :
デフォルトの名無しさん :2009/02/23(月) 20:36:08
送信したパケット群でACKが受信できていない最初のパケットを返す関数 の名前を募集中です
FirstPacketAtCantRecvACKOfSendedPacket
NACK、ではなくて「ACKではない」なのか。 Packet FindNotAcknoledged(Packet[] packetsSent) とか。 二つ目以降を探すときは、 Packet FindNotAcknoledged(Packet[] packetsSent, int startIndex)
NAKは今のところ存在しません。 判りやすいところでFindNotACKにします。 ありがとうございました。
いちおう訂正 Acknoledged ⇒ Acknowledged
448 :
416 :2009/02/24(火) 10:29:03
たくさんレスが付いててびっくりしました! みなさんありがとうございます。勉強になります。 またWebアプリで考えて欲しい名前があるのですが・・・ ・ユーザーがメールアドレスを変更するときに、 アドレスの存在確認のために、一時的にそのアドレスとランダムな文字列、期限を保存しておくテーブルの名前。 (そのアドレスに確認メールを出して、記載されているURLをクリックすると変更完了というやつです。) ・プライベートメッセージ機能で、拒否したいユーザーを記録しておくテーブル名。 blacklistとかだと複数・単数の扱いがややこしいので・・・ (block_usersとかでいいのかな。reject_users?) こういうの、さらっと考えられるようになりたいです; よろしくお願いします!
てきと。 interim registration information メアドにこだわる必要ないかなと。 新規登録時にも使えそうだし。 private blacklist とりあえずprivateを付けてみるメソッド。
- tempUsers, provisionals, moratoriums, unapprovedProfiles - ignoreList, denyList, uceList, ignorables, rejects
451 :
416 :2009/02/25(水) 11:48:52
>>449 >>450 ありがとうございます。
新規登録時にはプロフィールの入力などもあるので、
テーブルは分けようと思ってます。
なので、もう少しメールアドレス変更用というニュアンスが欲しいです。
個人的に、名詞の複数形がいいです。
拒否ユーザーの方は、
テーブルに入っているのは、あくまで個々のユーザーなので
〜listというのは避けたいです。
blacklist_itemsなどとすればよいのかもしれませんが、くどいですし・・・
ignorables、rejectsはいいかもしれませんね!
もう少しいろいろなネーミングが知りたいです。
よろしくお願いします。
正規化できるときはしといたほうがいいけど、 1対1の時は一つのテーブルのほうが便利だけどね
C++で座標を扱うクラス名についてです 基底は2軸、その派生で3軸の座標のみのクラス(構造体?)、 それらにアクセッサ等を加えたクラス、 さらにベクトル計算のメンバ関数を持つ派生クラス を作るところです 基底クラスとその次のアクセッサを持つクラスで 上下関係が持てそうな名前はないでしょうか coordinate,position,point,vertex、どれもis a なイメージなんですが・・・ ちなみに上記3種のクラスで、親子関係を持たせる場合 2軸なら2軸だけで、(基底除く)3軸は3軸だけで親子関係を結んだ方がいいのか それとも3軸の上に、1軸アクセッサをprivateにした2軸派生、さらに3軸派生、と1本の線にしたほうがいいのか、 はたまた多重継承がいいのか、アドバイスもできればお願いします
>>451 難しいなあ。じゃああとxxxMailInfosとか。
unverifiedMailInfos, unapprovedMailInfos
>>453 個人的には次元が違えば基本的に完全に別物だと思う。
そっち方面やったことないんで自信はないけど。
あと、単純な座標クラスをベースクラスにするのはいいとして、
「その次のアクセッサを持つ」の必要性がよくわからない。
いや、必要なのかもしれんけどどういう機能をもたせるつもりかわからないと
名前の付けようが・・・
>>454 基底クラスの2軸と3軸を親子関係を結んで、
それ以降2軸は2軸、3軸は3軸と派生させたとして、
3軸の子・孫から2軸の子・孫へdynamic_cast、という手段を確保するつもりでこうなりました
その際、基底クラスには仮想関数も持たせず
単純なデータ群としてやり取りできるようにし、
普段扱う際は子クラスを、と思ったのですが…
今作ってるのは箱庭空間?の基本的な環境を目指しているところです
ですので、基底は座標として、ベクトルとして、等
とにかく2要素・3要素まとまった箱が欲しいな、と
>個人的には次元が違えば基本的に完全に別物だと思う。
確かにそんな気もしますが、こっち方面どころか全方面において経験がないので
設計で四苦八苦しています(ノ∀`)
ねみい
>>455 単純な値クラスはむやみに継承関係に
しないほうが一般に望ましい。
継承というものを知り、金槌を持って
何でも釘に見えてるような状態かも?
ちょっと考え直したほうがいい。
もちろん、スレの趣旨的には、一切
考え直さずに突っ張って、命名を
求め続けてもかまわないけど。w
>>455 三次元から二次元に変換するときは、基本的に写像が必要になるから、
dynamic_castでなんとかしようとすると後で困るよ。
写像、つまりは変換関数
変数じゃなくてテーブル名なんですが。 予約テーブルがあって、そのうち、(実際の来店などで)受付した物を保持するテーブルで、 受付済みテーブルってのを作ろうとしたんですが、 ACCEPT APPOINTMENT_ACCEPT ACCEPTED_APPOINTMENT どれが良いと思います? もっとよいのがあれば教えてください。
>>460 普通にorderじゃ駄目なの?
order_historyとか
>>461 ありがとう。
だけど、Orderだと「注文」的な意味が強くないですかね?
>>451 じゃあ名前を変えずに解釈を変えて、
新規のほうはSignupXXXInfoとかにすれば区別はつくんじゃない。
>>455 キャストはそんなことに使うべきではないと思うぞ。
>>460 受付したものってなんよ。人なの?物なの?
人を受け付けるなら Reception
>>460 reserved
ひょっとすると誤解されやすいかも。
>>465 ,464
ありがとうございました。
Receptionにしようと思います。
468 :
デフォルトの名無しさん :2009/02/27(金) 01:02:28
汎用的な質問でごめんなさい 例えば、関数 f を呼び出すための条件を関数 n に渡し、 その関数 n から True が返ってきたら f を呼び出したいんですが、 そういう、条件を判定させる関数の名称でいい感じのがないんです。 if (p (v1, v2, v3) == TRUE){ f(); } のような、この関数「p」の名前を模索しております。
469 :
468 :2009/02/27(金) 01:03:45
しまったーorz
>>468 の「p」、コード上の p (v1... の p は、文中の n の意味です。
すみません。
>>468 predicate (述語) が一般的だと思う。
あとは condition (条件) とか criterion (基準) とか。
〜かどうかを判定する関数に、「〜p」ってつけるのはLISPの常識。ってのはもう古いのか?
その条件が何かによって変わると思う。 is条件()みたいなメソッド名ってjavaとかじゃよくあるけど。
キューにたまったメールに名前をつけるとしたら、どんな感じになりますか? 行列(キュー)全体ではなく、行列に並んでる個々のメールに命名したいのですが・・・ queued_mails みたいな感じでしょうか?
そのアホな名前を誰が読むのか知らないけど 通し番号でいいと思わないか
>>468 批判されてるのに追い討ちかけるようだけど、
そんなあいまいな条件だけで命名しようとか命名できるはずだか考えてるのなら
そのセンスはヤバ過ぎると思う。
>>473 perlのforeachで$_の代わりに使う変数かな?
ならフォーカスドメールとかでいいんじゃね
478 :
476 :2009/02/28(土) 02:18:52
あー通すのは引値か… trap_whithout(条件)とかは?
>>473 個々のメールに命名したいのになんで複数形なんだろう?
どうでもいいけどmailはuncountableな名詞なのでふつうはmailsって書かないらしいよ。
emailsはアリらしいけど。
480 :
473 :2009/02/28(土) 17:10:36
説明が足りずすみません。 キューからメールを取り出して、 foreach ($queued_mails as $queued_mail) { みたいな処理をしたいのです。 そのときに、行列待ちのメールであることを分かりやすくしたかったのです。 mailsと書かないというのは知りませんでした;
>>480 普通に考えれば特に「行列待ちの〜」なんて意味を名前にこめる必要はないと思う。
処理待ち用のキューの中から取り出したんだから処理待ちに決まってる。
処理の文脈をみればそんなの自明かと。
どうしてもって事情があるのならbacklogとか?
$mailとか$iで十分じゃね。 わかんなくなるならブロックがメソッドが長すぎる。
483 :
473 :2009/03/02(月) 07:45:44
メールキューをデータベースのテーブルに格納しているので、 そこでの命名にも使いたくて・・・ backlogというのはいいですね。 mailをどうしても複数・単数で扱いたい場合は、 message(s)とかにするのが普通なのでしょうか?
mqueueとくればmessageに一票。 ただ、そのメールで何を送るか、例えば注文を送るんだったらorderとかでもいいわけでしょ。
485 :
473 :2009/03/02(月) 08:25:39
なるほど。 たしかに、内容に即した名前の方がわかりやすくていいですね。 ただ今回は、オーダーやお知らせなどのあらゆるメールを一箇所に集約するので、 もっと普遍的なネーミングが欲しいのです。 となると、やっぱりmessageになるんでしょうかね・・・ 英語うまくなりたい;
486 :
デフォルトの名無しさん :2009/03/06(金) 07:30:53
C++で型FooをBarに変換する関数を Bar ConvFooToBar(Foo foo); のように書いています。 変換する型が複雑になると Hoge ConvFooBarToHoge(FooBar foobar); のようにToが見つけにくくなり、読みにくく感じます。 が、読めないこともないのでこれで妥協すべきでしょうか。
hoge = ToHogeFrom(fooBar)
Toを2にしてみるとか駄目?
オーバーロード可なら 元の型を関数名に含める意味なくね?
490 :
486 :2009/03/06(金) 08:35:26
>>489 あ、たしかにそうですね。いわれてみれば冗長。
>>487 みたいに、
引数を関数名の一部にするようなアイデアは考え付きませんでした。
残る問題は、自分が
>>486 のスタイルになれきっていることなので、
それから脱却できるようがんばります。
どうも朝早くありがとうございました。
キャスト用の1引数コンストラクタじゃだめなん?
>>491 Barクラスに手を入れるのは普通いやじゃない?
そもそもその権限がないかもしれないし。
便乗質問。
487の "Hoge ToHogeFrom(const FooBar &)"の.hファイルと.cppファイルの名前って
どうするのが一般的?
ToHogeFrom_FooBar.cpp あたりかと思うんだけど…
一関数、一コンパイルにするのか。 別にダメだとは言わんが。
そもそも、(どうしてこれまで誰も指摘しないのか不思議でならないんだけど) なんでC++なのにそんなユーティリティ関数みたいな書き方するんだろう。 Foo ⇒ BarなのにどうしてFooのインスタンスメソッドとして書かないの? 意味わかんない。
>>494 > どうしてこれまで誰も指摘しないのか不思議でならないんだけど
>>1 > 設計の善し悪しについて議論するのは基本的に禁止。
>>494 クラスのメンバ関数は最小限のインターフェースにとどめ、
メンバ関数を使って可能なことは大域関数で実現するのがよろしい、という考え方がある
cf. C++ Coding Standards 44項 「非メンバーかつ非friendの関数を書くようにしよう」
Javaに慣れてると何でもかんでもインスタンスメソッドにしたくなるんだけどね
>>496 なんらかの深い考察が背景にあるのかわからんけど、
ぱっと聞き同意しがたい考え方だな。
>>496 > Javaに慣れてると何でもかんでもインスタンスメソッドにしたくなるんだけどね
最近のJavaは知らないけど、Javaはグローバル関数が作れないから仕方ないのかな。
C#を最近勉強し始めたけど、C#も同じらしいのでちょっとがっかり。
staticでいいじゃん
C++なら foo_cast<Bar>(foo) だろ 変換先が一つだけならBarのコンストラクタでFooを受け取る それが無理ならto_bar(foo) barが一般的なクラスならbar(foo)でもいい 変換処理がFooの内部構造に依存したり仮想関数にする場合 Fooに変換メンバ関数bar()を作ってフリー関数bar(foo)から呼び出させることもよくある
>なんでC++なのにそんなユーティリティ関数みたいな書き方するんだろう。 >Foo ⇒ BarなのにどうしてFooのインスタンスメソッドとして書かないの? なわけで、やり方はいくらでもあるだろうが、委譲という考え方がある限り そういうメソッドを作ることは何ら不思議じゃないが結論だろ
はいはい あれないうちにやめてくれよ。
C++なら bar = foo;
506 :
デフォルトの名無しさん :2009/03/14(土) 08:54:31
よし、こんどのプロジェクトの変数は、 Nobunaga Hideyosi Ieyasu Masamune 武将シリーズでいくぞ。
>Masamune 惣無事令に反して蘆名領に攻め込んだり、葛西大崎一揆を扇動して天下人を困らせた つまり、管理者の意図に反した入力を受け入れるわけですね、分かります
平気で2chジャゴンを使える、使う気になる奴の神経が理解できん。 自分で自分が気持ち悪いと思わないんだろうか。 ひょっとしてこういう奴のアイデンティティって「2ちゃんねら」なのか?w まともな精神構造してたら耐えられないよな。
ジャゴンなんて初めて見る単語だな
双頭怪獣 ジャゴン
ほらあの人魚伝説の元になった海獣
ダゴンか
それジュゴン
それ古代パレスチナにおいてペリシテ人が信奉していた神。 名前の由来はヘブライ語のダーグ(魚)ともダーガーン(穀物)ともいわれる。 父親はエル。 伝承によってはバアルの父とされる。魚の頭をもつ海神と考えられてきたが、近年の研究では農耕神であった可能性も強い。 ガザとアシトドに大きな神殿があった。
jargon
RGM-89 ジェガン
>>517 それterminology which has been especially defined in relationship to a specific activity
>>518 それモビルスーツ GMの後継
520 :
デフォルトの名無しさん :2009/03/14(土) 20:16:53
SQLでカラム名を変更する際に前のカラム名と変更後のカラム名を変数に保持したいんですが、こういうと時って変数名どうすればいいでしょうか? pre_column modified_colomun ? 何かいいアドバイスあったらいただきたく。。
suffixで_oldと_newを付けるとか。
522 :
デフォルトの名無しさん :2009/03/14(土) 22:04:45
そーか、old&new良いですね。 ありがとうございましたm(__)m
523 :
デフォルトの名無しさん :2009/03/16(月) 11:27:12
たとえばRPGなんかで敵味方のデータの基底になるクラスの名前って、なんか定番ある? Character や CharaObject では、なんかしっくりこない。
524 :
デフォルトの名無しさん :2009/03/16(月) 13:10:21
和英辞書との一致 (1〜1件目 / 1件) 検索辞書:プログレッシブ和英中辞典 提供:JapanKnowledge じんぶつ【人物】 1〔人〕a person,((口)) a character; 〔重要な人〕a figure; 〔小説などに描かれた人間〕a character 危険人物 a dangerous person [char... [さらに]
char
526 :
523 :2009/03/16(月) 13:59:01
>>525 いちおC++なんで、予約語は勘弁してください
>>524-525 ありがとう。
とりあえずだけど、personで進めていくことにしまふ
出演者は人物だけなのか? はぐれメタルとか登場予定なし?
じゃあ「生物」はどうかなと思ったけど、はぐれメタルは「無生物」に近いよね・・・「神霊」ってタイプのキャラもいるかもしれないし 「化身」ってどうだろう?avatar、ちょっと違和感ある?
object
actor
じゃあunit
actorいいね!次からそれ使う
533 :
デフォルトの名無しさん :2009/03/16(月) 19:35:33
creature
534 :
デフォルトの名無しさん :2009/03/16(月) 19:57:33
無理矢理英語にする 無理矢理日本語にする どっちも嫌なので難しい。 Get_User_Inputs_4_Process_that_DA_First_Pass User_no_Key_nyuuryoku_wo_Uketoru 見てるだけでムカつく。 特に4とか2とかDAとか
535 :
デフォルトの名無しさん :2009/03/16(月) 20:02:08
なんでこう、英語をちょっとくさ知るとDAとか黒人スラング使いたがるのか。 おなじ「だ」でもTHEでいいじゃん。 THE・埼玉はTHE・埼玉だからいいのであって、 DA・埼玉だとヒネリも何もなく、したがって味わいも何もないではないか。 THEが付いてるから、「並ぶもののない」「他に2つとない」というポジティブな意味と 「ダサイ」というネガティブな意味両方あるからTHE・埼玉という表記がすぐれているのに DAにしたら英語知らない奴からするとストレートな悪口にしか見えん。
坊やだからさ
// get user inputs for process that the first pass // ユーザーのキー入力を受けとる 完璧にコメントの形式ですね
意味が変わっとる
意味もなく冠詞とか接続詞とか前置詞とかは付けないものだと思ってた
Levensteinのアルゴリズムに手を加えて、 二つの配列間の挿入、置換、置換、移動による最短編集距離を求めて それぞれ変更のあった位置と類似度も返す関数を作ったんだけど なんて名前にすればいいだろう。
changeset
自分の名前つけとけば
543 :
540 :2009/03/20(金) 00:17:50
>>541 順序も考慮するからsetは違う気がする。
圧縮ファイルの中身を比較するのに作った関数だけど
一応他の用途でも使いまわせるような感じにしたいので
汎用性がある名前にしたいなぁとか。
>>542 機能に即した名前がいい。
>>543 function_that_returns_position_and_degree_of_similarity_it_arranges_ones_verbs_and_objects_to_algorithm_of_Levenstein_and_with_each_change_for_the_shortest_edit_distance_by_the_insertion_between_two_arrays_substitution_substitution_and_movement()
MyLevensteinDistance()
マイクロソフトに倣ってLevensteinDistanceExでいいじゃん。
549 :
デフォルトの名無しさん :2009/03/20(金) 17:26:10
non_power_of_2 「なんで2の力なんですかね?」 って聞いてきた奴もいたものである。
>>540 まず、そのアルゴリズムを論文発表して、自分の名前を定着させるんだ。
551 :
デフォルトの名無しさん :2009/03/21(土) 18:17:00
XMLで <a>hoge</a> <b length="10"> みたいなを読んで処理をしたいのですが a...tag hoge...value length...attribute 10...parameter でいいですか? 2つ目と4つ目が何か違う気がして・・・
>>551 DOMやSAXパーサのソースコードを見て、使われている用語を参考に
すればいいんじゃないだろうか。
tag→a は要素(名)(element (name))
<a> は開始タグ(start tag)
</a> は終了タグ(end tag)
名前空間を考慮する場合、local name とか qualified nameという言い方も目にする。
value→(要素のネストを考慮して)content もしくは (inner) text
attribute→これはOK
parameter→(attributeの)value
あたりじゃないかな。
>>552 ありがとうございます。
そんな感じでやってみます
ブログツール作ってるんですけど 記事一つがEntryクラスで それの集合がEntryListクラスなんですが 記事を追加したり削除したり 条件を指定してEntryクラスやEntryListクラスを返す みたいなものを一括するクラスの名前はどうしたらいいでしょうか?
EntryManager
EntryRepository
>>554 EntlyList.add
EntlyList.delete
EntlyList.find
EntlyList.filter
メソッドじゃね?
スレ違い
EntryStore
560 :
デフォルトの名無しさん :2009/03/23(月) 11:20:29
ビットマップの透過色を指定して32ビットのビットマップにする関数
create transparent image(source image, transparent color) とか。 新しいビットマップを返すのか、所与のビットマップを変換するのか で多少変わるだろうけど。 alpha値を変更するという観点での命名もありえるかもね。
562 :
デフォルトの名無しさん :2009/03/25(水) 12:32:57
新人にありがちな例 クラスなに? ↓ 1年のときはAでした。
vipでやれ
おお、こんなスレあったんだな 今度困ったときに相談するよ 余談だが俺の後輩は全部ローマ字読みで命名するんだよね・・・ でも意外だが一部では肯定派もいるらしいね
後輩に和英辞書をプレゼントしてあげてください
でも勘定科目の英訳とか、普通の辞書には載ってないよね……
コボラは、英単語が多数予約語になってるので、ローマ字日本語で命名する 習慣が定着しているそうだ。英語が母語な人はどうしてるんだろう。
プレフィクスにFUCKIN_つける。
イギリス人はBLOODY_をつけるんですね。わかります。
FUCKIN_MIHARAI BLOODY_URIKAKE
なんでそこでローマ字なんだよwww
血塗られた売掛金
洗えよ
std::stringで key1=value1\nkey2=value2\n... みたいな文字列をとって map<std::string,std::string>で返す関数の名前
parse_key_value_pairs
プログラマ的ネーミングセンスってどうやって身につけるんだろう
他人のコードを読むとか、語彙を増やすとか
あるキーワードを思いついたらgoogle codeで検索して他人がどういう変数名やクラス名をつけているか調べまくる。
英語版googleでネイティブがどんな言い回しをしてるのか調べる。
とにかくググる癖をつけないと、TimeOfNowとか付けちゃう酷いネーミングセンスになるから気を付けるんだぞ
SIMDを使うようになってから、今までとは全然違う概念の変数を使うようになって、名前がつけにくいったら。
google code... そんなんもあるのか....
goodle code searchな。 google codeは、google提供ツールのソース開示とOSSプロジェクトのホスティング。
キャンバス上に配置されてるオブジェクトってなんて言えばいいかな arrangedObjects?
「配置されてる」とは? 「配置されていないオブジェクト」という概念もあるのか?
>>585 偉そうに馬鹿な事言うなよ
恥ずかしいw
positioned object placed object object on canvas
言語によっては、canvas.objects() とか canvas->getObjects() とか。 componentsかもしれんが。 585でも訊かれているけど、管理してるけど配置していないオブジェクト ってのもあるの?
589 :
デフォルトの名無しさん :2009/04/03(金) 11:10:12
.NETのSystem.Drawing.Bitmapの全ピクセルを高速にループしてforeach的に各ピクセルに対して処理するメソッド
void Hoge(Bitmap bmp, PixelProc proc);
と
System.Drawing.Imageを上記のメソッドに渡せる形式のBitmapにして返すメソッド
(具体的にはPixelFormat=PixelFormat.Format32bppArgbなBitmap)
Bitmap Fuga(Image img);
上記2つのメソッドを持つクラス。
PixelProcの定義は
delegate Color PixelProc(Color color);
GetPixel、SetPixelを使った処理よりも高速であることを強調した名前にしたいです。
宜しくお願いします。
てゆーかぶっちゃけこれに名前が欲しい。
http://www.k4.dion.ne.jp/~anis7742/codevault/00180.html
590 :
デフォルトの名無しさん :2009/04/03(金) 11:33:40
TurboRgbaPixelFilter
FastFiltering GetRegularizedBitmap
592 :
589 :2009/04/03(金) 11:47:58
超THX。使わせて頂きます。
フィルタ処理用のLanczos3関数で、引数がゼロかどうかのチェックを省略したものの名称を どうしようか迷っています。とりあえず Lanczos3_NonZero としているんですが、 チェックを省略している、というニュアンスが出てないので……
普通に checkNonZero じゃぁいかんの?
NoArgumentValidatedLanczos3
Lanczos3WithoutArgumentCheck
ふと昔の自分のソースを見てて思ったんだけど、 変数名などに、同じ単語の単数形と複数形を共存させることってある? 例えば、 file ← ファイル名を格納 files ← 配列など、複数のファイル名を格納 みたいな感じで。
foreachがある処理系なら
前処理行程で出てきた 16進数の文字列データを10進数の文字列に変換するクラスの名前 このクラスから桁揃えや値の範囲の判定を追加した子クラスに派生させる予定です 宜しくお願いします
Javaでメンバ変数(フィールド変数?)にアンダースコア付けるのって微妙なの? マーチン・ファウラー先生のオススメ命名規則らしいんだが
>>599 それだけ聞くと「単純な話をわざわざ複雑にするだけ」に聞こえる。
hex⇒intもint⇒decimalもintの機能であるんじゃないの?
2行の処理が一行にまとまる「嬉しさ」と、
何を抽象化したクラスか理解する「面倒臭さ」のどっちが勝るかよく考えるべきだと思うな。
struct XMLtree_t { string name; children_t* children; attribute_t* attributes; } struct children_t { std::vector X; } struct attribute_t { std::map Y } みたいなのを書いてみました。XとYはどんな名前がいいでしょうか? ちなみにXとYをわざわざ別の構造体にしてるのは「存在しないとき」の方が多そうだから NULLポインタ1個で済ませられればという理由です
>>599 BaseConvert
RadixConvert
とかかのう。
10進と16進には固定できないが。
>>602 struct XMLtree_t
{
string name;
std::vector* children;
std::map* attributes;
}
>>601 TONさんちーっす
相変わらずですね^^;;;
(605の内心)
>>601 ようTON
お前また設計に口出しするのか。
テンプレ読めないっぷりは相変わらずだな。
そんなんじゃ実生活でも相当使えないやつだろうなwwwwwww
おちょくってるだけの君らも邪魔 どっか行ってくれ
オマエモナ
オマエモナ
>>600 フィールド変数にアンダースコアを付けるのは
一見でフィールド変数とローカル変数を見分けられる利点がある。
その一方、リファクタリングによって
フィールド変数とローカル変数が入れ替わることは少なくない。
この命名規則を維持するのは多少なりとも労力を必要とするが、
中断すると読み手をミスリードすることになるので
そのコードを保守する限り未来永劫、その労力を必要とする。
さて、近年のIDEでは、フィールド変数とローカル変数を
自動的に視覚的に区別できるように表示してくれるものが多く、
このような開発環境を前提とした場合、先に挙げた利点が必要なくなるため
この命名規則は欠点を残すだけになるだろう。
以上自論
メンバ変数へは絶対にthis経由でアクセスすべき 命名はどうでも良い
フィールドとメソッド内ローカルを入れ替えるようなリファクタリングなんて 一度もしたことないけどなあ。 どんな状況でそんな必要に駆られるのか煽り抜きで想像ができない。 ちなみに俺はフィールドにはそれと識別可能なプリフィクスを付ける派。 ただしアンダースコアは視覚的に見難いし醜いしタイプしにくい(少なくともJISキーボードだと) から小文字のmでプリフィクスすることにしてる。
>>610 ハンガリアンも似たような理由で嫌われるよな
いまどきフィールド変数なんて色変えたりボールドにしたり 一見して判別可能にすることができるんだから全然気にする必要ない。 変なプレフィクス付けるとかマゾ以外の何者でもない。 異論は認める。
>>615 むしろ色分けや書体による区別の乱用の方がマゾ的に感じるけどな。
シンタックスカラーまで否定しないけど、スコープの区別までそれでやるのは
関心しないね。
視覚的に「騒々しい」というのもあるけど、人間のパターン認識機能の特性に
あまり適合的じゃないよ。
いみふめい
まあ白黒テレビで頑張ってますってことだろ
へいへい
ここはヌルー
ポ
ガッ
(俺にとっては)視覚的に「騒々しい」から(お前が)それでやるのは関心しないね。 いみふ
スレ違いだが色覚異常は男性に多いらしい。 そういう人は色だけで区別するのは嫌がるだろうな。
音なんかどうだろうか
世の中耳の悪い人もいるよな 触覚でどうだろうか
視覚だけでいいよ
マジレスすんな低脳w
つまんねえよクズ
キーワードは何色で表示してる? 俺は緑だが VSのデフォはコメントが緑だから困る
目に優しい色で他と区別ができるのなら何でもいいと思うな。 少なくと俺は色から、これはキーワードだとか、これはクラスメンバだとかいう 情報を積極的に読み取るってことはしない。 俺じゃなくても、シンタクックスカラー主目的はタイプミスとか''""{}[]/**/ のアンバランスを逐次的に見つける一手段ってことなんじゃないの? まあ、慣れた配色と違うと確かに最初は違和感あるが・・・
javaでeclipseだと普通に色で読み取れちゃうしそれを使わない手もないとおもうけど スレ違い。
Win32APIのLPCTSTRとかわけのわからんのに触れて以来、 システムハンガリアンを受け付けない体になってしまったんだが、 Visual Studio C++でもメンバ変数の色分けってできないだろうか?
>>613 ローカル引数のスコープの狭さは、メソッドの分割などで支障をきたすことが少なくない。
無理に分割しようとうると、金太郎飴のように似た様な引数の並びのメソッドを
次々にコールすることになる。
この状態でこれらのメソッドを複数のクラスに分割すると
金太郎飴引数をクラス間でずりずり引き回すという
なんちゃってオブジェクト指向のスパゲティコードを読まされている俺負組み誰か助けてorz
くそう最後で笑ってしまったw
「リファクタリング」に出てくる「コードの不吉な臭い」のうち 「多すぎる引数」とか「データの群れ」というやつだな。
引数は常にデータセット1個に決まってるだろjk・・・
1箇所弄ると連鎖的に全部変えなきゃならない構造体地獄の現場を思い出した
構造体なんて論外だろw
なんでも格納できる辞書かデフォルト引数でもあればまだマシなんだけどなあ
ごめん。 ○キーワード引数(Pythonとかにあるやつ) ×デフォルト引数
そんな引数が数十個ある関数をアセンブリ言語から呼ぶ羽目になったぜ。 しかもなぜかfastcall。かえってややこしいわw
レコードの数を表す変数として、 recordsとnRecordsならどちらがよいのでしょうか。 recordsだと何かrecordの集合のような物を想像してしまうのですが、 かといって要素数を表す接頭辞をつけるのも不格好な気がします。 records.lengthのように参照できるようにできれば一番いいと思うのですが、 現に手元にrecordがあるわけでないのでそうはできません。 みなさんはどうされていますか。 キャピタライゼーションなどの見た目上の規則ではなく、 意味論的な観点からご意見ください。
だから迷ったらまず素直に直訳してみようといつも・・・ 自分で「レコードの数」って言ってるじゃん。 古い人ほど「直訳みたいな変数名はダメ」という間違った強迫観念に支配されてるけど、 時代錯誤だから考え直した方がいいと思うよ。
recordCount
なぜ比較するのにその二つを選んだのか
何となくだが、records は配列とかそういう印象がある。 >645 そういうレベルの話じゃないっしょ。たぶん。 >647 nXXXsで個数っていうのは、よく見かけるけどな。
システムハンガリアンと違って、 きちんと意味付けされた上で接頭辞をつけるのは悪くないと思うんだけどな。 もちろん周りが -Count とか numberOf- とか使ってるならそっちを使うべきだけど。
あるある
651 :
デフォルトの名無しさん :2009/04/20(月) 17:52:55
MakeSureDirectoryPathExists的な関数名を付けては顰蹙を買うおいら。 でもオーバーロードの無いC言語だと仕方ないと思うんだ。
オーバーロードっていうかインスタンスメソッドじゃない。 bool CPathString::Exists()
make sureということは存在するか否かを返すのではなく、 「存在すれば何もしない。しなければ作る」という処理なのかな。
>>654 「ディレクトリの存在を確認する」んだろ。
オレだったらconfirmにするが。
ensure
技術系の洋書に沢山出てくる言い回しじゃん。
make sure directory path exists establish directory path existence without doubt 処理の後に指定されたディレクトリが存在するという事後条件がある と解釈するのか、make sureに対してそういう見方をしたことはなかった これからはもっと英英辞典も使うとしよう
Let's make sure he's dead. のジョーク思い出した
こういう言い回しは、こんな感じの意味みたいな読み方しかしないから、 ちゃんとした解釈なんて考えた事もないわ。 だから技術系の本しか読めないんだなきっとw
>>660 死んでるかどうか確認して! と 確実に死んだ状態にして!
の勘違いのアレか。
処理内容と事後条件が混ざって嫌。 だいたい事後条件を満たせなかったら どうすんの?死ぬの? makeDirectoryIfNotExist とかのがよくね?
満たせなかったら例外とかエラーだろ。
>>665 お前みたいな頭の悪いガキが生まれても、
親は別に死んだりしない。
名前変えても何も変わらなくね?って言ってるだけなんだけど。
この思い込み具合、またTONくさいな。。。。。
MakeSureDirectoryPathExists makeDirectoryIfNotExist 俺はどっちも同じ動作を思い浮かべるけどな
>>669 それほど変わらんかもしれんが、
>MakeSureDirectoryPathExists
はsureに、
>makeDirectoryIfNotExist
はmakeに主旨がある気がしない?
感覚的にはけっこう違うような。
TONさんがこんなボンクラセンスなわけねぇだろw
2-3個くらいの文字列変数をルールに従って1つの文字列に合成・生成してOutputする関数を命名したいのですが composeかそれともgenerateどちらがいいでしょうか? 〜OutputStr()と言うような感じで考えています
手段が重要ならcomposeあるいはsynthesize 目的が重要ならgenerate
〜にcomposeやgenerateが入るのが、outputする関数の名前としては既におかしい。 OutputComposedStringとかならまだ分かるが。
IN: 引数 OUT: 戻り値
ルールとかOutputとかが何を意味するのかわかんないけど joinとかそういうのとは違うの?
やはりTONさんのネーミングセンスは一味違うな
やっぱTONさんパネェっす
浮動小数点数が非数でも無限でもないことを判定する関数の 名前は何にしたらよいでしょう? IsRealNumber にしようとおもったら、実数は無限を含むらしいので。
IsFinite
真偽を逆にしてIsNaNOrInfinite
>>679 正負の零、非正規化数、正規化数をあわせて、finiteとよぶ。
683 :
676 :2009/04/23(木) 20:04:42
>>677 >>678 それもしかして俺に言ってるの?
joinはセパレータ使って文字列結合するときには普通に使う関数名だよ?
スクリプト言語とかboost.string_algoとか使ったことない?
ちなみにセパレータじゃなくて意味のある文字列ならformatXXXのほうがいいかな
composeとかのほうが意味がわからない
疑心暗鬼に陥っているなw
>>683 このスレの住人のTON検出力を甘く見んなw
683:(674に言ってるように見える・・・俺がTONなんだが・・・)
TONさんは頑なにTONが含まれるレスを無視するからアリエネ
ワロタ
質問者はトンさんに絡まれたくない時は冒頭にTONって入れときゃいいのか
じゃあsageの代わりにTONって入れればいいんじゃね。
まじぱねえっす
マイコンに接続されてるセンサー(今は温度センサーをつけてる)からデータを受けてviewクラスに値を渡したいのですが 項目名(温度センサーなら温度)とその値を持つ構造体の名前、どうしたらいいでしょうか 単純そうに思えてしっくり来る名前が思いつかないです
NameValuePair
SensorData
SensedData SensedValue
DetectedParameter
SensorEntry
項目名と構造体名がお互いに愛し合っているなら、最も単純なものを。 そうではないが、刺激を与え合う関係であれば、中程度に複雑なものを。 誰もが気流に乗れていない状況であれば、いっその事名前をつけない。 客に媚びたいならば、可能であればジェネリクスを使う(同時に、客にはキッシュでも食わせておく)。
書き込む前にもう一度だけ読み返してさえいれば、こんな事にはならなかったのにな
むちゃしやがって・・・
703 :
ムモー :2009/05/10(日) 22:17:00
ClassName みたいな方法で名前を書くときって、 頭文字語を入れると読みにくくなるよね。 たとえば、「ABC法」という方法があって、 それをクラス化する場合、ABCMethod とすると読みにくくない? AbcMethod にすべき?それだと頭文字であることが分かりにくいよね。
キャメル法って言うんでしたっけか。 _使うっていう俺は素人
InitializeAclとか。
>>703 俺はマイクロソフトのガイドラインに則って2文字か3文字以上かで分けてる。
IOMode ioMode;
XmlDocument xmlDocument;
707 :
ムモー :2009/05/10(日) 22:50:28
>>706 うーん。でも、「AB法」とそれを拡張した「ABC法」というのがあって、
一方は ABMethod でもう一方は AbcMethod っていうのは、よくないかなーって。
実際、今の仕事でそういうのがあるんだけど。
708 :
706 :2009/05/10(日) 22:54:43
>>707 それはさすがにきもいな。
どっちかにそろえるべきだと思う。
可読性も重要だが、名前の衝突が深刻
710 :
709 :2009/05/11(月) 01:07:27
いみふなので付けたし その言語の標準の命名規則に盲目的に従っておけば その言語仕様における名前の解決の方法・順番に纏わる トラブルに巻き込まれることが少なくなることを期待 なので、AbcMethodに一票 ABMethodは、作った人を殴りに行こう
711 :
709 :2009/05/11(月) 01:10:21
よく読んでなかった。マイクロソフトな言語だったら殴んなくていいのね
Pythonならacronymのケースは全部大文字だな
709が恥ずかしすぎる件について
JavaScriptでボタンのonclickにセットする関数として、 押される度にあるdivの表示非表示を切り替える関数は なんて命名したらいいですか? switch~~とかchange~~とか付けてたけど、ふと気になった。
Toggle***Visibilityとか
>>710 命名規則に従わないとコンパイル通らないプログラミング言語でもない限り、
トラブルに巻き込まれるわけがないだろ……
つかコーディング規約ってものは「周囲に合わせる」のが常識だろ?
C++ Coding Standards の冒頭にも書いてるけど、
重要なのはルールに従うことじゃなく、一貫した書き方をしていること。
ABMethodがあるなら当然ABCMethodを期待するだろ。
名前の問題より、期待を裏切られるほうが深刻。
命名規則に盲目的に従うとかそれこそいみふだろ、常識的に考えて
709はもんのっすっごい馬鹿なTONさんて感じだな
>>716 一貫した書き方をするために、盲目的にルールに従う必要があるの。
大体「周囲」って何なんだよ。
命名規約に従うとABMethod、AbcMethodという状況で、
ABCMethodなんて規約に反した命名するのは俺からしたら思いっきり
「期待を裏切る」行為だけどね。
途中から関わる場合は周囲に合わせる。 最初から関わる場合は途中で変えない。
Java だと、名前が衝突したときに、obscure とか hiding とか shadow とか (あと一つあったような)いろいろ面倒な概念が必要になるんだわ。 マイクロソフトは知らね
命名規約に従うなら、そもそも ABC なんて略語を使うのが規則違反なワケで AnyBasicChannel とかナントカ(意味フ)みたいに、略さなければいいこと。 そうすれば ABC なのか Abc なのかで悩む必要はない。 ところで便乗質問。 ラクダ法で名前を付けるとき、最初の1文字は小文字にすべし。たとえば inputOutputMethod みたいになるわけだが、頭にアンダースコアを付けると _InputOutputMethod でいいの?i は2文字目だから大文字でいいの?
C/C++ の標準規格に従うなら、そもそも _Input なんて頭にアンダースコアをつけるのが規則違反なワケで inputOutputMethod とかナントカ(意味フ)みたいに、つけなければいいこと。 そうすれば _input なのか _Input なのかで悩む必要は無い。
知らないならレスしないでください
>>721 所詮コーディング規約なんだから、
規約を知らない人間が理不尽だと思うようなルールには従わんでいいだろ。
「ハイフンの次は先頭じゃないから大文字でいいよ!」なんて
馬鹿げた規約が仮にあったとしたら、その規約を10部くらい印刷して全部破り捨てるね。
あとラクダ法 = CamelCaseは厳密には先頭大文字。
先頭小文字は mixedCase。あえて区別しない時もあるけど。
つかコーディング規約にやたら拘る人多いけど釣りなの?
>>720 その概念は知らなかったが、
見る限り普通にコード書いてりゃわかりそうな概念だったぜ。
shadow: インスタンス変数とパラメータが被るときのルール
hiding: 継承関係でstaticメソッドが被ったときのルール (多態が起こらない)
obscure: パッケージ名、クラス名と変数名が被るときのルール
ABCMethodをAbcMethodにしないと面倒という意味がわからないし、
そもそもこれが面倒になるようなコード書くなよとしか言えない。this.x = x;はよくやるが。
ついでにC++とかのADLとかtypedef typename とかと比べるとだいぶ簡単な気がするぞ。
>724 キャメルは先頭小文字で、先頭大文字はPascalだと思うが。
途中の大文字をラクダのコブに見たててのcamel caseだから、先頭は小文字であれかし。
728 :
726 :2009/05/12(火) 23:09:45
wikipediaによれば総称camel caseで先頭大文字のものをupper camel caseまたはpascal case、 先頭小文字のものをlower camel caseまたは単にcamel caseと呼ぶ、だそうな。
オレの亀は頭がデカい
文中でも文頭でもcamelCase, PascalCaseとかけば誰も間違えないよ。
パスカルは天才だから頭がデカイ
頭を上げた状態のラクダがいてもいいんではないだろうか
チェザーレにお世話になってるんですね、わかります。
これから作るクラス名、"RewindableIterator" と "MementoIterator" のどっちにしようか悩んでるんだけど 分かりやすいのはどっちだと思いますか?
何作るのか知らんが 名前だけ見て動作が多少想像できるのは前者
MementoというとMementoパターンに関連したものをイメージするのだが、 IteratorがMementoパターンにどう関連するかわからない。
Mesomesoパターン
738 :
736 :2009/05/14(木) 04:19:18
名前だけでだいたい通じるかなーと思って敢えて詳細は書かなかったんだけど、 普通のイテレーターの機能に加えて、 ・saveState⇒現在のindexをスタックに追加(Push)する ・backState⇒スタックの先頭を取り出して(Pop)、現在のindexをそれに置き換える ていう機能がついてる感じです。 個人的にはやっぱ前者かなーと。セーブ地点に「戻せる」ようにすることが目的であって、 状態のスナップショットを記録するっていうのはちょっと違うかなぁと。
あ、734だったw
restoreState
rewindableって反復の途中で逆方向に巻き戻せるもののように聞こえる iteration ex) 0->1->2->3->4->5 rewindable iteration ex) 0->1->2->3->2->1->0
StickableIterator RestorableIterator
UnwindableIterator
>>741 つ bidirectional iterator
>>738 だったら、いっそ以下。
StackableIterator
pushState()
popState()
746 :
デフォルトの名無しさん :2009/05/17(日) 14:12:52
ハンガリアンについての質問です。 int nIndex; のポインタ変数を、 int* lpnIndex; にしました。 この場合、int** のポインタ変数のプリフィックスは何にするのが一般的でしょうか。
俺はハンガリアン使わないけど、なんでlp(= long pointer)なんだ Win32APIとあわせてるの?
748 :
デフォルトの名無しさん :2009/05/17(日) 14:57:36
lplpn
749 :
746 :2009/05/17(日) 15:29:51
>>747 16bit 時代からプログラミングしてると、どうしても p は 16bit、lp は 32bit って意識が強いから、
lp にしちゃうんだよね
>>748 lplpn しかないか〜。thx!
システムハンガリアンなんか使うな
ハンガリアンについての質問だからいいだろ。
8bit時代からプログラミングしてるが別にそんなこだわりない
__ , ‐' ´ ``‐、 / ̄:三} . /,. -─‐- 、. ヽ / ,.=j _,.:_'______ヽ、 .! ./ _,ノ `‐、{ へ '゙⌒ `!~ヽ. ! /{. / `! し゚ ( ゚j `v‐冫 , '::::::::ヽ、/ . {.l '⌒ ゙ 6',! / :::::::::::::::/ __ そんなことよりTimeOfNowの話しようぜ! . 〈 < ´ ̄,フ .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、 . ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠. ヽ_} ゙ヽ ,.r` "´ /:::::::::::::::::::ィ´ `ゝ !、 / / / :::::::::::::::: ; '´ /´\ / r'\ . i ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、 { {:::::::::::;:イ / ‖i:::::::/:::::::::::::/ \ . ヽ ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: / ヽ ヽ、 ,. ‐'" .ノ ,〈 > `'‐- ' > _,. ‐'´ / / `) ,ゝ _.⊥.-r┬:/ ヽ_,. -‐i"!´「L.=!┘ ヽ < / / | / 、i / __ ./
通知機能(Yahoo!とかのアラート機能のようなもの)の通知条件を入れておく変数なのですが、 ・subscriptions とかでもおかしくないでしょうか? それとも ・notificationSettings みたいな感じのほうがよいでしょうか? アドバイスお願いします。
condition
notificationTrigger
外部に接続してる計器からの値を受けて出力するPresentationに相当する基底クラスと クライアント領域へ出力する派生クラスとファイルへ出力する派生クラス命名をお願いします。
Presentation ClientPresentation FilePresentation
なんという直球 だがそれがいい
今何番目か?を表す変数と 何個あるか?を表す変数 が紛らわしくていつも困る。 なんたらnumとか言われてもどっちを指しているのかわからん。
個数はcount、順序はnumber。
あれ?そういうもんなの普通は。 countってなんかループカウントみたいで使ったことないな…
困るねぇ index と length に持ってければ length にしちゃう
個数は先頭にnもしくはnumberOfをつける 順序はi, j, kもしくはindex,id
>>760 Code Completeではnumberはさけて、indexとcountを使うとあったよ。
>>762 ループカウンタはi, j, kしか使わない、ってことにすればすっきりするよ。
今更なんだが、4方向をつけるとしたらrightとleftは迷わないんだが、 上と下ってup,above,under,lowのそれぞれどれがいいんだ? 辞書で調べたんだが、今一どれが一般的なのか分からん。
一般的にはupとdownでは
>>767 単純に(矢印で表されるような)方向のことならupとdownを使ってる。
上辺とか下辺という意味が強いならRECTにならってtopとbottomにしてる。
やっぱupとdownか。 ありがとう。
javaとCです、ユークリッド互助法で使う 除算の余りを表す変数名に相応しいものを、それぞれについてお願いします。
>>772 thx
java、cともにgcdと命名します
えっ…?
えっ
キーワードを列挙するテキストフィールドの名前はkeywordFieldか、keywordsFieldか…
>>773 関数名ならgcdでいいが局所変数は(ry
>>776 英語的には textfield (that) Enumerates Keywords とか?
textfiledEnumKeywords
とかなんとか。
変ですかすいません。
それはネタで言ってるのか
えっ
>>776 キーワードってのが既に曖昧じゃない?改めた方がいい気がする
列挙する機能がそれに付いてるのなら〜sFieldでいいと思う
keywordEnumerationField
数値をKBとかGBとかの単位に変換する 処理(関数)の名前をお願いします。
toSIPrefix
785 :
デフォルトの名無しさん :2009/05/25(月) 19:24:02
C++を使ったゲームのプログラムで、 指定されたボタンが押されたかどうかをチェックする関数名をお願いします。 ●監視対象はゲームパッド、キーボード、マウスを想定しています。 デバイス名に依存しない名前が好ましいです。 ●戻り値は、基本的に真/偽の2値として利用しますが、 整数型で受け取った場合は、同じ状態が何フレーム連続で続いたかを返せるようにします。 ●オーバーロードまたはデフォルト引数の機能を使って、第2引数に「より詳細な状態(トリガ)」を指定することが出来る。 例: Func( MOUSE_R ) ; //マウスの右ボタンが押されていれば真 Func( MOUSE_R , PUSH_DOWN ) ; //押した瞬間のみ真
PollButton
上の関数をIsPressed 下の関数をIsTriggeredと命名してる 俺の場合
>786 ネットワーク用語のポーリングと同じ意味? >787 現状だと僕も同じような名前で使っています。 ただ、関数名を共通にして、引数の違いだけで区別できないかな?と思いまして。
引数で機能をスイッチする万能関数って俺は好きじゃないな スレチだが
ちょっとMS臭するけどQueryInputStateとか 機能が複雑なのでIs〜とかGet〜とかは付けたくない感じ
792 :
783 :2009/05/26(火) 02:11:38
>>784 ども。
toSIPrefixだと、なんかおちつかない気分になります。
SI接頭辞はK/M/Gとかいうことですよね?ちょっとあわないような。
4,668,327→4.45Mというような、SI接頭辞を含む変換を行う
処理(関数)を明確にあらわす名前はないでしょうか?
有効数字3桁くらいになるように、適当に接頭辞を付けたものを human readable と表現することがあるが、そういうこと?
ls --human-readableか。
>>783 toBinaryPrefixNotation
BinaryPrefixというのがIEEEで定められてるので、そっからとってみた。
BinaryPrefixは違うだろ。
あってるだろ。 SI prefixだと 10^3, 10^6 の意味だからむしろ間違い。
KiBとかMiBに変換するならあってる
Cのマクロについてお願いします。 (1) 通常のassertマクロはリリース時には削除されるが、リリース時でも削除されないassertマクロの名前。 ASSSERT_ナントカみたいな名前が良さそうかな?と思っています。 (2) 与えられた文字列をエラーメッセージとして、強制終了するマクロの名前。 EXIT? DIE? HALT? 別スレに誤爆したけどくじけないぞ。
(1) ASSERT_PRECAUTION ASSERT_IN_PRODUCTION_RELEASE ASSERT_BETA_TEST ASSERT_BETA_FOREVER ASSERT_PARANOIA (2) perlにならってDIE
手元の本を見てみたら、ASSERT_STRONGとHALTだった
HALTってCPUが止まりそうでイヤンだな
(2)は FATAL ってのをよくつかう。
>>799 (1) 強制assertっぽいので、FORCE_ASSERT。
(2) 「強制終了」のイメージがありそうなHALT。
805 :
783 :2009/05/27(水) 02:15:08
>>793 ,794
>有効数字3桁くらいになるように、適当に接頭辞を付けたものを
>human readable と表現することがあるが、そういうこと?
気持ちとしては、まさにそのとおりです。
処理の名前として納得できるものがないようでしたら、そういう
雰囲気重視の名前がいいかもしれないです。
>>795 >toBinaryPrefixNotation
Notationがつくとまた印象がかわりますね。
また、Binary Prefixというのも参考になります。
ただ、名前の結論を待たずに、とりあえず関数を実装したのですが、
ちょっと雰囲気が変わりましたので、あらためてうかがいます。
変換したい値と、1000とか1024とか12とか(基数?)を引数で指定して、
それに基づく変換を行う処理はどんな名前がいいでしょうか?
たとえば :
f(1500,1000) => 1.5 (K)
f(2560,1024) => 2.5 (Ki)
f( 504, 12) => 3.5 (グロス)
1回割ったとか2回割ったとかいう情報は失っていいの?
英語としての ASSERT の意味をわかってないやつがいるようだ。
>>799 1. CHECK, VALIDATE
2. FATAL_ERROR
>807 具体的にどれさ >808 ASSERT関係なくね?
関数名なのですが、 引数に名前($name)を受け取って、 その名前がDBのテーブル内に存在すればそのIDを、 存在しなければ、新規に保存して、挿入したIDを返す というような関数は、どんな名前が考えられますでしょうか? findIdByNameでは可笑しいでしょうか? よろしくお願いします。
intern
関数を使う側から見れば 既にDBにあろうが無かろうが関係なく、指定した名前に対するIDを貰ってくるという見た目は変わらないんじゃない?
813 :
810 :2009/05/27(水) 21:23:13
>>811 これは私宛でしょうか?
もう少しnameを渡してidを得るというニュアンスが欲しいのですが。
>>812 そうなんです。
というか、それを意識しないでいいようにするための関数なので、
上にも書いたように「nameを渡してidを得る」という意味だけでいいのですが・・・
こういう場合はfindじゃなくてgetのようがいいのでしょうかね・・・
getIdByName??
fetchIdByName
>>813 lispとかのinternはまさにそんな感じの動きするから。
コレクションのメソッド名についてお願いします。 1. コレクションからランダムに要素を取得するが削除しないメソッド 2. コレクションからランダムに要素を取得し削除するメソッド 3. コレクションのランダムな要素と引数に指定した要素を置き換えるメソッド
Cみたいに、仮引数に名前をつけられるなら、関数名にNameをつけないで そのまま GetId ( name ) というパターンもありそう。 Perlなら GetId( 'name' => $name ) とか出来た気がするし。
>>816 ランダムって、適当にどれでもいいから一つって意味?
それとも呼ぶ側が指定した任意のアイテムって意味?
>>816 1. getRandomItem()
2. getRandomItem_remove()
3. getRandomItem_swap()
>>818 「ランダム」といえば乱数的だろ。jk
820 :
783 :2009/05/27(水) 23:45:55
>>806 >1回割ったとか2回割ったとかいう情報は失っていいの?
ダメです。w
>>805 の例では省いちゃったんですが、より詳しくは次のような感じ。
f(変換したい値,基数) => (変換された値,基数の乗数)
f(1500,1000) => (1.5,1) # 1500=1.5K
f(2560,1024) => (2.5,1) # 2560=2.5Ki
f(2097152,1024) => (2,2) # 2097152=2Mi
f(504,12) => (3.5,2) # 504=3.5グロス
なんか処理が具体的でもあり抽象的でもあり、しっかりした名前を
与えるには中途半端な印象なんですよねー。
>>816 random_sample
random_pop
random_swap
でもメソッド?
randomな自然数を決めて添字アクセスができればどんなコンテナでもいいし、
関数でいいような気がするけどなー
>>819 > 「ランダム」といえば乱数的だろ。jk
random access memory って別に乱数的じゃないわけで。ま、どうでもいいけど。
>>822 ランダムとランダムアクセスをいっしょくたにするやつはいないだろ。
>>821 >>816 の2は「要素の削除」をするようなので、コンテナオブジェクトの
メソッドにするのは当然なんでは。
それとも、まさかstd::remove()みたいな仕様にするのか?
それよりも、
>>820 の1つ目の例がケルビンなのが気になる
827 :
799 :2009/05/28(木) 02:12:43
ごめんなさい、お礼言い忘れてました。 ありがとうございます。
そういうときは各回答への感想とかどれを採用したとか書くとなおもりあがるぞ
「ASSERTはリリース時に全部削ることにしたから」 「製品版で強制終了させるなら、きちんと別処理にしたほうがいいんじゃね」 なんてやりとりがあったことは秘密ですよ?
要素を参照するとその要素が削除されるハッシュを作っているのですが どんな名前が適切でしょうか?
831 :
830 :2009/05/28(木) 14:26:47
自己レス 要素がすぐ消えてなくなるから VolatileHash とかどうでしょうかね わかりにくいか……
ハッシュとはハッシュテーブルの集合か? DestructiveReadoutHashSetかな まあpop(set, key)関数でも作って使わせた方が良いと思うけど
すっごく特殊なプライオリティキューみたい。
VerySpecialPriorityQueueLikeHash
メソッドでSQL文の要素(カラム名とか検索キーとか)を指定してSQL文を構築するクラスのフィールドで カラムが固定されたかどうか(それ以上カラムを設定できない)を判定するフラグ変数の名前で迷ってます。 fixedはどうもバグフィックスのイメージが強いので他のキーワードってないでしょうか
>>835 freezeしてfrozenになる、という話かと思ったら違うね。
必要な要素をいくつか指定していき、指定し終えた、よってさらなる指定は
できない、という判定をするものなら fulfilled はどうだろうか。
>>836 freezeもいいですね。凍結するって感じで
でもfulfilledの方が「追加できない」って意味で合ってる感じがするので
fulfilledの方を使わせてもらいます。(fullfilledって間違えそう・・・)
ありがとうございました。
命名とはちょっと違うかもしれないのですが、 foreachで変数を回すときに itemsとかなら foreach ($items as $item) としているのですが、 seriesとかequipmentのように、 複数形と単数形の区別がない名詞の場合、 みなさんならどうしてますか? かっこいい方法が知りたいです。
ごく狭いスコープ内だけの変数は1〜2文字程度の 短い名前にした方が、ぱっと見で区別できて読みやすい。 局所的なのは短く、大域的になるにつれて長く。 自分の場合はね。
なるべく使わないか、複数を表すならuncountな名詞でもあえてs付けたりするな。 どうような理由でbooleanを返すメソッドでareで始まるのが文法上ただしくても あえてisで始めたりする。
馬鹿が辞書ひっくり返して見つけたアレな単語の変数名とか見るともうゲンナリ
842 :
838 :2009/05/30(土) 12:49:44
>>839 foreach ($series as $s)
foreach ($equipment as $e)
こんなかんじですかね?
でもループが入れ子になると衝突する可能性がありますね。
$s1、$s2、$e1、$e2なんてのも、あとで手直しするときにめんどくさそうですし・・・
>>局所的なのは短く、大域的になるにつれて長く。
というのは、それを考慮してのことでしょうか?
>>840 foreach ($series as $serie)
foreach ($equipments as $equipment)
みたいに、無理やり複数or単数にするかんじでしょうか?
ここらへん、ネイティブの人がどうしてるのか気になるところですね・・・
後者は
isAdmin()、isAllow()
みたいなのは、全部isで統一するということですね。
自分はareにすべき、というのに出くわしたことがないのですが・・・
(気づいてないだけかも;)
>>842 >$s1、$s2、$e1、$e2なんてのも、あとで手直しするときにめんどくさそうですし・・・
長かったらもっとめんどくさいんじゃね?
そもそも、混乱するほど何重にもネストしてるのは
ループの中を別の関数にわけた方が良いことを示してるのでは。
>>>局所的なのは短く、大域的になるにつれて長く。
>というのは、それを考慮してのことでしょうか?
局所的なのは、使われてる場所自体が、説明的な長い名前の代わりになる。
大域的になるにつれてそういう情報が少なくなるから、説明的な長い名前にする。
部屋にものが2個しかなければ、「あれ」と「それ」で事足りるみたいな感じね。
一文字違いの変数名を使うのは、泣きそうな間違いをする可能性がある
javaで今時のideだとそんなに大きな問題じゃないよ
eclipse で リファクタリングすればいいしね
「it」と呼ばれた変数
$_ でいいやん
itとかアナフォリックなマクロみたいだな
穴掘りっ苦
オナホ立国
ある変数にprefixを適用した後の名前って、どんなのがいいですかね?
855 :
855 :2009/05/31(日) 08:23:42
fixed〜とかかな?
日付形式の画面入力項目(txtCloseDate)を受け取るstring型変数と、それを変換したDateTime型変数。 型のプレフィックスを付けない場合はどう名付ければいいでしょうか?
in_str date 型のプリフィックじゃなくて、入力を示すアプリケーションハンガリアン
構造体のメンバ変数名なんだけど、hogeCountってhogeCntみたいに省略します?
俺は省略しない派
俺は省略する派
どっちだよw 誰か論理的に語ってくれよ
省略する必要がなければ省略しなきゃいい
>>863 ハンガリアンとか関係ないだろw
略すか略さないかの問題なんだよ
Count消えてるじゃねえか
じゃ cHoge
変数名では省略 メソッド名では省略しない。
原則省略しない。 自分も含めてチームの全ての人が一見して即わかるなら省略して良い。
msgとかresとかは? どっかでこういうのの一覧みたことあるんだけど、どこだったかなぁ?
msg=マッサージ
privateなシンボルならそれ程気にしないで略称使う。 忘れても最悪1ファイル分解読すれば済むし。 publicなら意味が曖昧にならないよう念入りに推敲する。
状況によるってのが結論っすね。
str,msg,cntくらいなら略しても意味が伝わらないことは無いんじゃないかなあ。
initとか全部書きたくないっすよ。
やっぱりここは国際化 Internationalizationのように美しく略さないと
一つのモジュールの中にinitとinitialize(cntとcount、msgとmessage)の両方が定義してあるとか勘弁してくれ
privateなinitなんちゃらがいくつかあって、それらの親玉のinitializeが1個publicになってるのとかよく書いてる。
今時の補完って結構かしこいから単語は必要なだけ長くてもいい。 で、英語が多くなってくるとプロポーショナルフォントの方が読みやすかったりする。
880 :
デフォルトの名無しさん :2009/06/03(水) 22:39:39
>>879 読みやすさだけに限ればなんとか理解できなくもないが、
プログラムにプロポーショナルフォントなんて虫唾が走る
そう思ってたことが僕ry
プロポーショナルで満足できるって よっぽどひどいディスプレイとIDEとフォントと・・・全部だめなの使ってるんだろうな
わざわざやらないけど、タブでちゃんとインデントさえ出来れば意外と我慢できるよ。
我慢なんてやだね
インデントが破綻しないなら プロポーショナルもありかもなぁ
行頭だけならタブの個数で制御できるけど、 行中のコメント位置を揃えたいとかなると、 フォントが変われば即破綻だな。 つか、スレチだぜ。
このスレチェックするの忘れてた。 お気に入り登録し過ぎたか
俺も最近はプロポーショナルだわ。 行頭以外でカラムはそろえないようにしたから、特に不自由はない。
C++だけどメンバ変数にm_って付ける? void setHoge(int hoge){ m_hoge = hoge; } void setHoge(int hoge){ this->hoge = hoge; } どっちが主流なんだろ? メンバ変数、引数、ローカル変数名が紛らわしいときいつも困る
俺は尻に_付ける。 引数やローカル変数と被ると言うよりはメンバメソッドとの重複を避けるためだが。
メンバ変数の尻に_ってのは初耳だなぁ 結構一般的な方法なのかな あと メソッドって動詞にしかならないイメージだから メンバ変数と被るケースってのがちょっと自分には想像できないな…
そお? ケツに _ は、わりとメジャーだと思うけどなぁ m_ はなんか重くて this-> はどっかにやるなって書いてなかったっけ?
>>891 うちではアクセサにget/setを付けないことになってるから。
void count(size_t value) { this->value_ = value; }
size_t count() const { return this->value_; }
末尾_はインテリセンスと相性がいいから、結構使われてると思うよ。
俺も末尾_派
結構一般的なのね。
ありがと。
自分もなるべく一般性の高いやり方にしたいから末尾_使うようにする。
>>893 >末尾_はインテリセンスと相性がいいから、
これちょっとわからないんだけど
インテリセンスの候補から視覚的に探しやすいってこと?
―って質問文を書いたら今気付いた。
先頭m_だと候補から選ぶとき最低3文字入力しないといけないからか。
末尾にアンダースコアはunix系で良く見る。
メンバ変数は mHoge 視認性が末尾_より高く、インテリセンスもm_よりはshift不要で入力が楽な上に メンバ変数だけを候補に絞れるから楽 これ最強 あんまし見ないけど
視認性つっても色変えればいいだけじゃん。 色弱対応?
エディターの機能が充実してくると要らなくなるよね
そりゃVSでメンバだけ色替えできたら助かるけど
m_はVC使いに多い(MFCとかで一般的だから)。_を前につけるのがC/C++標準で非推奨になったので 後ろにつけるのが最近の流行。
MFCで作るときだけはm_の慣習に従うな。 クラスの頭にCとかも。
m_ は古めなイメージ
土下座AAみたいだ
>>897 mHogeでも大文字にするためにシフト必要じゃね?
MetrowerksのPowerPlantがそれを採用していた。
>>905 VC2003で確かめてみたがshiftは不要。mhと入力するだけでmHが候補に挙がる。
万が一mhで始まるメンバが他にあるなら小文字のh側が優先されるが、まずないだろうし。
まずないと言い切れる根拠が判らんが、お前がそう言うんならそうなんだろう。
C#だと付ける場合は先頭に_が主流かな。
javaも付けるなら前だな。付けないけど。
m_H_m 前後に付けるのが流行る
for (; ;) { m_OoO_m ; ; }
>>907 mAppleというメンバがあって
maxというメソッドがあったり
mIciroというメンバがあって
mixというメソッドがあったり
mUntanというメンバがあって
muteというメソッドがあったり
mEnemyというメンバがあって
mesというメソッドがあったり
mOrangeというメンバがあって
moveというメソッドがあったり
>>913 命名規約がなかったり無視されたりしがちな社内製作、社内利用の
アプリケーションなんかだと良くあるよね。
とりあえずRubyみたいにメンバ変数は"@"で始まるとか
文法で決めてしまってくれたほうがすっきりして良いと思うんだけど、
Java改良版(と個人的に思っている)のC#でも採用されないところをみると、
みんなあんまり好きじゃないのかな?
いっそのことJSやらPythonやらみたいにthis強制でいいと思う
916 :
デフォルトの名無しさん :2009/06/06(土) 04:45:29
DAOのメソッド名を考えています。 命名規約のようなものが見つからないので、 とりあえず自分では以下のように考えているのですが、 何か駄目出しがあったら教えて下さい。 find(一覧取得)とget(一行取得)の使い分けが 微妙かなーと思っているのですが... count() - レコードの総件数を取得 countByFoo - 条件指定の件数取得 countByFooAndBar - 条件が複数ある場合の件数取得 countByCondition - 条件が多数ある場合の件数取得 findAll() - レコード全て取得 findByFoo - 条件指定の一覧取得 findByFooAndBar - 条件が複数ある場合の一覧取得 findByCondition - 条件が多数ある場合の一覧取得 getByFoo - 条件指定の一行取得 getByFooAndBar - 条件が複数ある場合の一行取得 getByCondition - 条件が多数ある場合の一行取得 insert - 追加 update - 全件更新 updateByFoo - 更新 delete - 全件削除 deleteByFoo - 条件指定の削除
917 :
デフォルトの名無しさん :2009/06/06(土) 07:07:58
「最後にHogeを○○した時刻」を示す変数は、どういう名前にしたら良さげかな? ○○には、実行、更新、取得などの動詞が入る予定。ちなみに保持する時刻の単位はミリ秒。 last_time_when_do_hoge? last_time_when_did_hoge? なんか長いよ…。 >908 言われてみれば、プリフィクス以外で、mhで始まる単語はパッとは思いつかない…気もする。 >914 Perlは前に付ける記号で意味が変わってくるからなあ。 @$hogeみたいに複数くっつく場合とか、もうね……。
一番要らないものを順に省いてってよさげなところでとめてみる when time hoge ↓ last_XXXed last_YYYed
XXXed_at
latest_XXed_msec
ありがとうございます。参考にしてやってみます。 >919さんの方法はちょっと目ウロコでした。
必要な語を全部入れなければいけないなら長くはなるだろうな。 time whenのかわりに最後にatを付けるなどして、 last hoge update at (最後にhogeを更新した時刻)などとしては?
りろー(ry
MS的にはLastWriteTime, LastAccessTime
どれくらいのスコープで使うの? 大きいスコープなら長めの変数名でいいと思うけど
>925 10行くらいの関数の中。ごめんなさい。
.NETでフォームアプリケーションを作っているのですが、 コンボボックスに日付を入れるようなメソッドのプレフィックスは何がいいでしょうか。 今はsetXXXXToComboBox1のようにsetを付けています。 addやappendはなんとなく違うような気がして。 また、引数でbool値を渡して、それによって動作が変わるような変数は どのような名前が良いでしょうか。 動作自体を切り変えるような場合はshouldXXXX、 戻り値を切り変えるような場合はrequiredXXXXにしています。
shouldもrequiredも無くしてXXXXだけの方がいい つか「戻り値を切り替える→required」てのが意味わからん
booleanを与えて動作自体を切り替えるがshouldていうのもわけわからん。
Addがいいよ。 bXxxxでええよ
>bool値を渡して、それによって動作が変わるような変数 引数の形式でどうやって命名するんだ。 機能を言ってくれんとなんともいえん。
cmd というプリフィクスも、ないことはない
ここは定石通りにhogehogeflagという方向でですね
>>929 ,930,932
混乱させてしまい、すみません。説明が不明瞭でした。
「○○が必要か否かを示すフラグ」の名前を悩んでいたのです。
shouldXXXXの方は例えば以下です
void addCurrentDateToComboBox1(bool 現在の内容を消すフラグ)
requiredXXXXの例は以下
string convertStringToDate(bool 不正時にNULLを返すフラグ)
定石であるisやcan, hasで置き換えられなく、
といってEnumを作るまでもないような…というような場合です。
個人的には
>>929 さんの案でいいような気がしてきました。
変に接頭辞つけない方が返って分かりやすそうです。
>>931 いったん初期化してしまうような場合は何がよいでしょうか。
例えばLabelに新しい文言をセットするような場合です。
上 discardPreviousState 下 returnNullOnError みたいにその変数がフラグであるとか意識せずに 単に振舞いの内容を使ってそのまま命名したらいいんじゃないのでしょうか?
>void addCurrentDateToComboBox1(bool 現在の内容を消すフラグ) →2つに分ける。 void ComboBox1::addCurrentDate() void ComboBox1::replaceToCurrentDate() or ComboBox1::setCurrentDate() >string convertStringToDate(bool 不正時にNULLを返すフラグ) →falseを与えたとして不正時にどうするつもりだ?
>falseを与えたとして 例外が飛んできます(例: emacsのre-search-xxx)
isToBeDeleted
>>935 なるほど。
想像できんかったのでてっきり
hoge.do(false); //海を泳ぐ
hoge.do(ture); //空を飛ぶ
↑こんなのかと思った。
自分なら
isCurrentDelete
isNullReturn
英語的にはおかしいが意味が明瞭なので
>英語的にはおかしいが意味が明瞭なので 意味不明でしょ。
clearContent exceptionDisabled
動作が切り替わるのも、戻り値が切り替わるのも、 メソッドを使う側から見れば等価じゃないのかな? あと、.NETはよく分からないんだけど、もし複数の戻り値を設定できるなら(Cのポインタ渡しみたいに)、 いっそのこと全パターン返して、呼び出し側に好きなように使ってもらうとかどうだろうか。 本物の戻り値は、常にエラーや例外があったかどうかを返すようにして。 >941 >英語的にはおかしい 複数形が単数形になってるとか、一部の単語が抜けてるとか、単語の順番が逆とかならよくある……あるよね?
946 :
デフォルトの名無しさん :2009/06/07(日) 17:26:00
ループで使う処理があり、その初期化を行う関数 Func1、Func2 の名前をお願いします。 Cを前提としています。 Func1( ); //ループの前に一度だけ行われる初期化 while ( 1 ) { Func2 (); //ループの先頭で行われる初期化 /* メイン処理 */ }
947 :
デフォルトの名無しさん :2009/06/07(日) 17:33:31
具体的にナニを処理すんの?それによって変わる。 それともどんな処理にも適合する汎用的な名前がほしいってこと?
汎用的な方で。 実際にはfooとかbarとか付くことになると思う。
具体的な処理の内容次第 例えばファイルを列挙するなら if(FindFirstFile()) do{ ... }while(FindNextFile()) 無理やりつけるならinit, poll/main〜/executeとかか
InitializeFoo InitializeBar
>949 First/Nextみたいなのは面白いなあ。 >950 それ、どっちがどっちだか分かんない。
ループの前だとか先頭だとかいう情報は名前に要らない
InitializeBeforeLoop InitializeInsideLoop
initialize_1 initialize_2
>>944 .NET だと普通は、
Hoge メソッド ― 戻り値は処理の結果、エラー時は例外発生。
TryHoge メソッド ― 戻り値は処理の成否、出力パラメータ(参照渡しみたいなもの)で結果を返す。エラー時は型のデフォルト値。
という使い分けが定石。
どうしても引数で挙動を変えたい場合は throwOnError が鉄板。
>>935 addCurrentDateToComboBox1(bReset)
convertStringToDate(bPermitNull;Ret)
劣化したな
おや余計なところに「;」入ってら
begin〜/end〜みたいなのはよく見かける。
coefficientって略すならどう略します? ローカル変数なので短くしたいと思ってます。
何かの「履歴」(たとえば、値段の推移履歴など)を格納するテーブル名の場合、 historyとhistories、どちらが妥当でしょうか? それとも、old_pricesなどのほうが分かりやすいでしょうか? よろしくお願いします。
enumの値をswitchに入れてサブクラスをnewするという処理で、enumの名前に迷ってます allocate(CInterface *&pInterface, enum EXxx eXxx); みたいな感じにしたいんですが、何かいい名前はありますでしょうか? サブクラスの名札という意味でEHogeTagとかEHogeIDを候補に考えてるんですがなんか違うような気がします
>>964 クラス内enumで被らないようにしてtypeとかでいいんじゃね?
>>965 1文字にまでするとさすがに分かりにくそうで・・・。
>>967 これにします。
ありがとうございました。
ショッピングカートで、 実際に購入できる、商品の最小単位(色、サイズなどの組み合わせなど)を表したいのですが、 なにかよいネーミングはないですか? Skuじゃかっこわるいし・・・ Variation? ProductInstanceじゃ変かな・・・
skuってかっこわるいの?
971 :
969 :2009/06/09(火) 10:18:25
>>970 かっこわるいというか、
SKUって、名前というより、概念というかんじがするので・・・
もうちょっとcountableな(?)感じにしたいんです。
Variantとか、AttributeCombinationとかも考えたのですが、
そもそも色やサイズが存在しない商品もあるので、ちょっと違うかなと・・・うまく説明できませんが;
skuってカウンタブルじゃないの?
SellableUnit
よしわかった。 StockKeepingUnit だ!
なぁ、プログラミング始めた始めたばかりなんだが ちゃんとしたURLかチェックするクラスを作っているんだが、どんな名前がいい? 無難にCheckUrlとかしてみたんだが、似たような事をするメソッドが多くて
isGoodURL
IsURLFormatValid
ValidateURL
979 :
975 :2009/06/11(木) 20:41:10
>>976-977 がisから始まっていたから、Java SE6 API リファレンスを見てみたけど、
戻り値がboolean&何かをチェックするメソッドなら、普通はisから始まるわけ?
質問ばっかりでスマソ
メソッドは動詞で初める、という習慣はよくある だから状態を調べるメソッドだとisになりやすいね
981 :
975 :2009/06/11(木) 20:55:57
>>980 なるほ、そうだったのか
ありがとうございます
isValidURL
今日見たサンプルソースにrioとmihiroが居た 公衆トイレの落書き並みにコメントが盛り上がっててわらた
クラス名ならURLValidatorだな。 で、Validation関連のインタフェース(なければ作成)で定義された isValidメソッドを実装する、と。
>>984 お題がクラスっていってるのに何いってんの。
987 :
975 :2009/06/11(木) 22:30:02
なんか、ム板は他の板とは違ってみんな熱心に考えてくれるね ありがとうよ〜
性格悪そうなやつばっかりだけど答えはくれるんだよな。マ板はツンデレのすくつだよ
どういたしまして
>>987 聞きたかったのはメソッド名?クラス名?
991 :
975 :2009/06/11(木) 22:41:05
>>990 メソッドです
紛らわしいレスして、すいません
ワロタ
ウィンドウのクライアント領域への出力やコンソール出力、ファイルへの書き出し この手の出力クラスの基本クラスの名称はどうしたらよいでしょうか?
OutputStream
.NET的にはサフィックスにBaseを付けるのもありか。 しかし、そんなクラスが必要なのだろうか。 ちょっと用途が見えない感がある。
Screen Canvas ReportArea TextBaseCanvas
StreamWriter/TextWriter
クラスの定義:未定義、有効:無効を調べるメソッドを持ったインターフェースとそのメソッドの名前は何がいい? 例えば行列の行がゼロや負だと未定義 配列の確保に失敗してたら無効 みたいな感じで
Maybe, isJust
質問の意味が分からない
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。