トップページ⇒tech
1001コメント266KB

クラス名・変数名に迷ったら書き込むスレ。Part20

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/07/29(金) 21:32:01.00
クラス名、変数名のつけ方に悩んだら書き込むスレです。

命名規則や設計の善し悪しについて議論するのは基本的に禁止。

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part19
http://hibari.2ch.net/test/read.cgi/tech/1293201229/
0306デフォルトの名無しさん2011/11/12(土) 11:08:47.58
>>305
でも、「bool変数やboolを返す関数は、疑問形で命名してね」
ってガイドラインはちらほらあるのが現実なんだよね(´・ω・`)

ところで、notしたときってのは !isHoge がおかしいってこと?
まさか isNotHoge じゃないよね?
0307デフォルトの名無しさん2011/11/12(土) 11:19:20.11
?が入れられない時点でくだらない話題だ
0308デフォルトの名無しさん2011/11/12(土) 11:24:06.83
isXXXは引数の値が単数のときだよね
配列とか渡してそこからXXXの場合だったらhasXXX?
0309デフォルトの名無しさん2011/11/12(土) 11:27:48.19
Isn't object valid ?
に対して
有効ならyes
そうでないならno
直感的にはyesはtrue、noはfalseだ

if(!obj.isValid()) { homuhomu(obj); }

と書いた時に、!obj.isValid()を否定疑問文(つまりIsn't obj valid ?)であるとすると
英語圏の人間はobjが有効(yes)ならhomuhomu(obj)すると認識してしまう
ところが!obj.isValid()をたんなる否定命題(Obj isn't valid.)で返り値がその真偽であるとすれば直感との齟齬は生じない
英語圏の人間でもobjが無効の場合にhomuhomu(obj)するのだと直ちに理解できる

03103002011/11/12(土) 11:30:54.14
>>306-309
ttp://www.aerith.net/design/bool-j.html
0311デフォルトの名無しさん2011/11/12(土) 11:39:02.53
>>309
ああ、そういうことか。
確かにそうだな。

で、何故HogeじゃなくHomuになってるか釈明を。
0312デフォルトの名無しさん2011/11/12(土) 12:02:42.14
一連すべてちょっと何を言っているかわからない
0313デフォルトの名無しさん2011/11/12(土) 12:23:51.20
ではお引き取りを
0314デフォルトの名無しさん2011/11/12(土) 12:34:11.30
>>313
中学英語をやり直せば理解は深まると思います
0315デフォルトの名無しさん2011/11/12(土) 12:34:42.76
>>312 でした

>>313 さんごめんなさい
0316デフォルトの名無しさん2011/11/12(土) 12:49:45.93
やり直せるとは限らん



やり直すためには既に一度はやっている必要がある
0317デフォルトの名無しさん2011/11/12(土) 13:00:27.62
それは大変失礼なことを言いました
今後慎みます
0318デフォルトの名無しさん2011/11/12(土) 13:41:17.36
>>309
一瞬なるほど、と思ったがちょっと違う気もするね。

確かにtrueにyes、falseにnoが対応していると考えるとそういう論理が成り立つけど、
trueにright、falseにwrongが対応していると考えると話は変わってくる。
0319デフォルトの名無しさん2011/11/12(土) 13:47:26.12
英語圏だとnoがnot、yesはnot以外、以上の意味はないだろ・・
0320デフォルトの名無しさん2011/11/12(土) 13:53:49.73
He is not a dirty old man, is he ?
You are wrong.
Yes, he is ( a dirty old man).
0321デフォルトの名無しさん2011/11/12(土) 14:11:50.52
if文は普通にブール代数で考えるけど.
そんな文学的な解釈をしているやつがいるのか.
0322デフォルトの名無しさん2011/11/12(土) 14:19:47.96
>>309
センスないやつがよくこういう余計な事考えるんだな
0323デフォルトの名無しさん2011/11/12(土) 14:24:08.44
>>321
既存の知識だけで納得しようとして陥る罠だな
0324デフォルトの名無しさん2011/11/12(土) 17:17:44.22
まあこのへんは英語できない子が足切りされるポイントだからわからない人がいても不思議ではないよ
まさか!?って思うけど本気でわからない子いるからね

0325デフォルトの名無しさん2011/11/12(土) 17:55:22.34
ネイティブがどう感じるかまでは、なかなか分からんよなあ…
0326デフォルトの名無しさん2011/11/12(土) 20:44:04.42
いや、言語仕様的にブール代数なわけだから
NOT(obj.isValid())
ってだけだろ
プログラミングを知らない英語圏の人ならどう読むか分からないが
知らない時点でどうせ読めないのでどうでもいいだろ
アホカ
0327デフォルトの名無しさん2011/11/12(土) 20:47:12.12
結論
命名は適当でよい
ドキュメントを読まないバカはいないし
ドキュメントを読めば名前などオマケにすぎないからである
0328デフォルトの名無しさん2011/11/12(土) 21:46:45.32
名前に悩んで生産性減らすバカは死ね
0329デフォルトの名無しさん2011/11/12(土) 23:42:52.06
悩むことがなく適当(適切という意味で)な命名ができるようになれれば、それがベスト
0330デフォルトの名無しさん2011/11/12(土) 23:58:09.41
開発してる時は、自分(チーム)の中だけで最も分かりやすい名前を付けとけば良い

開発が終わったら「すぐに」、後の人間や英語圏の人間にも分かるように、
メンテナンス担当の人間が全ての名前を適切に置換しておく
ついでに、変更しまくった仕様もちゃんとドキュメントにまとめておく
0331デフォルトの名無しさん2011/11/13(日) 00:02:27.98
コードの錬金術師は日常会話に擬態した暗号でコードを書くのでまるで自然言語の文書を読んでいるように感じる
0332デフォルトの名無しさん2011/11/13(日) 00:06:59.43
>>331
そこまでのコードはまだ見たことがないなぁ

例えばどんなの?
0333デフォルトの名無しさん2011/11/13(日) 08:16:47.43
日本語プログラミング言語「なでしこ」のことだろ
0334デフォルトの名無しさん2011/11/13(日) 12:04:25.90
>>333
それは違うだろ
「コードの錬金術師」や「日常会話に擬態した暗号」との絡みが全くない

一般的に錬金術師は金でないものを金にする人のことなんだから、
もともと自然言語の文書とはほど遠い文法やキーワードを持つ言語を使って、
自然言語の文書であるかのようなコードを書く人を「コードの錬金術師」と喩えているのだろう

それがどの言語のどのコードのことか、誰のことを言っているのか全く分からん
0335デフォルトの名無しさん2011/11/13(日) 12:33:18.01
>コードの錬金術師
>一般的に錬金術師は金でないものを金にする人のことなんだから、

>331の造語か、英語の和訳なのかで全く意味が変わってくるなw
0336デフォルトの名無しさん2011/11/13(日) 13:00:23.08
単にコードの可読性は書き手によって大きく違うという、当たり前の事実を
言ってるだけだと思うよw

ノストラダムスの解読じゃあるまいし、錬金術師という言葉の本来の意味なんか
ほじくり返しても意味ないでしょw

彦麻呂のフレーズみたいなもんで、そこまでの含意なんかないと思うよ。
単にその能力の非凡さ(可読的なコードを書ける人は意外と少ない)を表現してるだけでしょ。
0337デフォルトの名無しさん2011/11/13(日) 13:41:22.82
しかし、「まるで自然言語の文書を読んでいるように」というのは、
いくら何でも言い過ぎではないか?

もしそんなコードが書けるのなら、
そのテクニックや考え方などを是非教えてほしい
0338デフォルトの名無しさん2011/11/13(日) 13:47:06.66
外人的な過剰な表現だろ
0339デフォルトの名無しさん2011/11/13(日) 13:54:19.19
ただ>>334がアスペなだけだろ
0340デフォルトの名無しさん2011/11/13(日) 14:31:05.48
C#で、全面的にStrategy・Flyweightパターンなロジックで組んでいるのですが、
「俺はもう何もしない。もし俺が取り憑いていたら再利用poolに放りこんでくれ」クラスと
「俺はもう何もしない……が、まだ占有しているので再利用しないでくれ」クラスを
明確に分けたいのですが、なんか気の利いた名前が出てきませんし、
どうしても名称が長くなってしまいます。

適度に短く、ある程度のプログラマなら名前で
意図を理解できるようなクラス名を教えてください。
0341デフォルトの名無しさん2011/11/13(日) 14:32:02.78
>>339
>>332,334,337 は私なんだけど、なんで勝手にそう決めつけるの

>>335
じゃあ「コードの錬金術師」という表現は無かったことにするにしても、
「日常会話に擬態した暗号」というコードは私は見たことがないのですが貴方はありますか?

擬態と言うからには、そのコードの本来の意味が一般には分からないことを意味する
本来の意味が容易に分かってしまっては擬態ではない

ここでいう本来の意味というのは、そのコードが実現する処理、つまり意味論
擬態によって一般人が目にするのは >>331 によれば自然言語の文書
そして、その自然言語の文書から本来のコードの意味論は容易には悟られないし、
全く意味の違う自然言語の文書としては普通に読める

そのようなコードを一体誰が何の目的で書くのでしょうか
そのようなコードはメンテナンスするには全く役に立たない
また、C#やJavaなどのコードの暗号化としてもオーバースペックだし、
そういう暗号化は普通は人間ではなくコンピュータが行う

というようなとっても不思議なコードなのだが、>>331 にはぜひ例文を見せてほい
0342デフォルトの名無しさん2011/11/13(日) 14:36:19.83
>>340
reusable、および nonreusable はどうでしょう
0343デフォルトの名無しさん2011/11/13(日) 14:41:58.07
>>340
それって利用者側にpoolに返すかどうかを処理させるの?
名前を考える前に設計を見なおさないとだめなパターンだな
0344デフォルトの名無しさん2011/11/13(日) 14:42:53.90
>>341
友達いない空気出てる
0345デフォルトの名無しさん2011/11/13(日) 14:50:36.90
>>344
全国や世界中(こちらは少ないですが)にいますよ
大人になってからは増える一方で減らしたことも無いですし

どこまで突っ込んで説明を求めるか、議論するかは、
時と場合と相手によってちゃんと変えてます

ここのような落ち着いて、文章で書かれた相手の言い分をじっくりと読んで、
それについて深く議論できる場では、それ相応に深く突っ込みます
当然、私の言い分にも深く突っ込んでほしいです

迷惑でしたでしょうか
0346デフォルトの名無しさん2011/11/13(日) 14:52:43.98
>>345
はい迷惑です
あなたのお友達もそう思っているでしょう
0347デフォルトの名無しさん2011/11/13(日) 14:54:57.75
>>339
0348デフォルトの名無しさん2011/11/13(日) 15:09:08.56
本人が潜伏して火消しですか?w
0349デフォルトの名無しさん2011/11/13(日) 15:12:01.62
>>331

とっても不思議なコードの例文をぜひ見せてほしい
03503352011/11/13(日) 15:26:54.61
知らんがなw
俺が述べたのは、「錬金術師」という表現の妙についてだけだぜ?
0351デフォルトの名無しさん2011/11/13(日) 15:28:48.37
暇人ばっかりやなここ
0352デフォルトの名無しさん2011/11/13(日) 15:30:05.29
日常会話に擬態した、自然言語の文書を読んでいるように感じる暗号に【興味があります。】
0353デフォルトの名無しさん2011/11/13(日) 15:30:31.94
>>348
自演乙
0354デフォルトの名無しさん2011/11/13(日) 15:41:34.59
>>351
言っておきますが、私は >>332 からずっと >>331 に疑問を呈しながら、
一方で >>342 において >>340 の質問にそれなの案を提示しています
この案に不満があるなら、状況をもう少し詳細に訊きながら、
別の案や >>343 のような事についても色々考えるつもりです

たとえば >>348 や >>352、>>353 などの人たちは、
>>340 を助けてあげるという考えは持ち合わせていないのでしょうか
ないのなら、それこそ全く無駄なレスではないでしょうか
0355デフォルトの名無しさん2011/11/13(日) 15:42:11.56
「まるで自然言語の文書を読んでいるように感じるほどの日常会話に擬態した暗号で書かれたコード」マダー?
0356デフォルトの名無しさん2011/11/13(日) 15:42:45.34
マジキチっぽいなこいつ
0357デフォルトの名無しさん2011/11/13(日) 15:44:00.72
>>331の潜伏w
0358デフォルトの名無しさん2011/11/13(日) 15:50:05.75
>>354
日本国内のテレビ・マスコミのプロパガンダによってあなたの脳味噌は既にマインド・ブラストされているようななのでちゃんと指摘して差し上げますが、
そのような長文を投稿する瞬間、日本の旧儒教的価値観ともいえる「助けてあげる」という考え自体がもう既に「あなたの傲慢の具現化である」と思いませんでしたか?
0359デフォルトの名無しさん2011/11/13(日) 15:59:30.18
>>357
自演乙
0360デフォルトの名無しさん2011/11/13(日) 16:16:35.36
>>358
私自身も表現的にどうかと思ったのですが、
「助けてあげる」というのは言葉のあやでした、ごめんなさい
また旧儒教的価値観というのは全く知りませんでした、調べてみます

言い直します

>>340 の質問に対して、何か案を提示しようという考えは無いのでしょうか

>>331 と私の >>332 のやりとりに内容的に何ら関わらず、
かといって >>340 の質問にも何ら案を提示しないここ一連のレスというのは、
ほとんど意味が無いものだと思うのですが
0361デフォルトの名無しさん2011/11/13(日) 16:17:55.87
どうせネタをやるのならせめて面白い奴を頼む。
っていうか、そもそも面白くもないネタって語義矛盾
0362デフォルトの名無しさん2011/11/13(日) 16:19:05.24
        ゴガギーン 
             ドッカン 
         m    ドッカン 
  =====) ))         ☆ 
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>331
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________ 
     |   /  ̄   |    |/    「    \ 
     |   | |    |    ||    ||   /\\ 
     |    | |    |    |  へ//|  |  | | 
     |    | |    ロ|ロ   |/,へ \|  |  | | 
     | ∧ | |    |    |/  \  / ( ) 
     | | | |〈    |    |     | | 
     / / / / |  /  |    〈|     | | 
    / /  / / |    |    ||      | | 
   / / / / =-----=--------     | | 
0363デフォルトの名無しさん2011/11/13(日) 16:20:26.23
>>362
こういう幼稚臭いマンガ脳が一番最悪。
本当、こういう奴って13歳で精神年齢の成長止まってるんじゃないのか
03643312011/11/13(日) 16:20:47.33
お前らのアホさ加減には恐れ入る
レスを読み返したらやり取りが小学生そのものだったぞ
0365デフォルトの名無しさん2011/11/13(日) 16:43:44.55
>>360
電力業界の隠蔽沙汰やオリンパスの隠蔽不祥事による会社所有者への背徳のように、経営者や日本公務員は自分の私腹を肥やすばかりで、

またオキュパイ・ヲールストリート・ムーブメントに象徴されるアメリカの(報道されず)数値上隠蔽された貧困現象と同じように日本の貧富各差は広がる一方で、

日本の貧困階層に目をむければ2011年現在ではなんと日本人の80%は年収300万円以下です。

そんな日本世紀末の世であるにも係わらず、あなたの道徳とあなた以外の人がもつ道徳が同じだといえる根拠はどこにあるんですか?
0366デフォルトの名無しさん2011/11/13(日) 17:00:06.41
>>365
道徳を持ち出すような大それた事ではなくて、
単純に >>359 などのレスをするくらいなら、
>>340 に何か案を出した方が建設的じゃないかと思ったのですが、
>>359 のようなレスをする事の方がこのスレには良いという考えも、
もちろんあるのでしょう
そんなものは無いという根拠は持ち合わせていません

また、私の道徳と私以外の人が持つ道徳が同じだと言える根拠も無いです
根底に似たような所が少なからずあるのではと期待してるだけです
0367デフォルトの名無しさん2011/11/13(日) 17:05:10.81
そのような投稿をする瞬間、「助けてあげられる」という期待自体が既に「あなたの傲慢の具現化である」と思いませんでしたか?
0368デフォルトの名無しさん2011/11/13(日) 17:05:50.71
いいから失せろゴミ
0369デフォルトの名無しさん2011/11/13(日) 17:06:57.80
自分は14歳でとまってる。
0370デフォルトの名無しさん2011/11/13(日) 17:09:53.22
>>367
もしかして勘違いをされていませんか

>>340 の質問者は私(>>341 など)ではありませんよ
0371デフォルトの名無しさん2011/11/13(日) 17:10:49.56
>>364
自演乙
0372デフォルトの名無しさん2011/11/13(日) 17:19:11.59
>>346
0373デフォルトの名無しさん2011/11/13(日) 17:44:21.68
>>370 ですけど、すいません、
「助けてあげられる」という文を読み違えてレスしてしまいました
改めてレスします

>>367
私は「助けてあげられる」というほどの気はないです
助けにならないかも知れないし、助けになる自身は残念ながらあまり無いです

助けになれば、議論の役に立てば幸いと思います
貴方はどうでしょうか
0374デフォルトの名無しさん2011/11/13(日) 18:45:47.01
思いません
はい、さようなら
0375デフォルトの名無しさん2011/11/13(日) 21:29:28.45
ID表示が待たれるな
0376デフォルトの名無しさん2011/11/14(月) 06:02:32.85
それは困る。
せっかく自演でストレス発散できる板なのに。
0377デフォルトの名無しさん2011/11/15(火) 15:25:55.17
10進数⇔64進数の簡単なプログラム書いてるのだけど、64進数って英語で何ていうの?
0378デフォルトの名無しさん2011/11/15(火) 15:46:07.36
radix 64
base 64
0379デフォルトの名無しさん2011/11/15(火) 16:04:54.64
>>378
Base64やRadix-64ではなくて、
単に10進数と64進数を相互変換するだけの簡単なクラスです。
すみません。
0380デフォルトの名無しさん2011/11/15(火) 16:14:36.79
質問の仕方が悪かった。

10進数と64進数を相互変換するだけの簡単なクラスを作ったのだけど、
Base64だとMIMEのBase64と混同してしまうので、何か適当な名前をお願いします!
0381デフォルトの名無しさん2011/11/15(火) 16:32:20.37
基数変換(Radix Conversion)
からRadixConverterでいいんじゃないの?
0382デフォルトの名無しさん2011/11/15(火) 16:34:21.47
RadixConverter
03833802011/11/15(火) 17:05:32.05
>>381
>>382
ありがとう。

BaseConverterやRadixConverterだと、汎用性のある基数変換みたいな名前だけど、
作ったのは10進⇔64進という決め打ちで汎用性の無いものだったので、もっとズバッとした名前がいいかなぁと思って。
でも64っていう数字を入れると、Base64やRadix64になって、MIMEのそれと混同してしまうかなと。

Radix64Converterでいいかな。
コード書いてる時間より名前考えてる時間の方が長い。。。
グダグダとスマン。
0384デフォルトの名無しさん2011/11/15(火) 17:12:39.88
そんな心配は名前に盛り込まないで
コメントに一言入れておけばいい
0385デフォルトの名無しさん2011/11/17(木) 10:26:18.57
「はみ出し」って英語でなんて言えばいいですか?(名詞で)
枠の中に書いた文字が枠からはみ出ているとか、そういう状態を指す言葉。

辞書を引くとprotrusionという単語が見つかったけど、「はみ出てる」と
言うより「飛び出てる」「ポコッと突き出てる」という感じがしてしまう
のでもっと適切な単語があれば教えてください。
0386デフォルトの名無しさん2011/11/17(木) 10:48:44.06
1行目無視して、2行目の状況を表す単語ということでよければoverflow
0387デフォルトの名無しさん2011/11/17(木) 11:30:15.60
どうもありがとうございます。

説明がうまくなくてすみません。
「字数が多すぎて記入欄から何文字かはみ出した」という場合には
確かにoverflow がぴったりですね。

>>385で考えていたのは、郵便番号のような1文字1マスの領域が
ある上に書いた文字が枠よりでかかったりズレてたりして、
上下左右にてんでにはみ出している(最悪、枠から完全に外れてる)
という状況なのでoverflowだと違うかなと。
0388デフォルトの名無しさん2011/11/17(木) 13:14:36.14
overflowをヒントに考えて、spillにしました。
0389デフォルトの名無しさん2011/11/18(金) 11:49:00.56
整数のアプリケーション定義のエラーコードを(動的ライブラリを使って)文字列に変換するクラス(関数オブジェクトクラス)にふさわしい名前はなに?
0390デフォルトの名無しさん2011/11/18(金) 12:49:50.58
ErrorDescriber
0391デフォルトの名無しさん2011/11/18(金) 23:00:12.22
>>389
エラーコードからエラーメッセージに変換するクラス?
0392デフォルトの名無しさん2011/11/19(土) 06:56:46.02
class IProcessor {
 virtual void Process(Value);
};

class Xxx {
 void Process(KeyValuePair element) {
  processors.Find(element.Key).Process(element.Value);
 }

 List<IProcessor> processors;
}

こんな感じのクラス(Xxx)を命名してくれ
俺的には ProcessorSummary なんてどうかと思うんだが
0393デフォルトの名無しさん2011/11/19(土) 08:52:22.26
>>392
KVPDispatcher
0394デフォルトの名無しさん2011/11/19(土) 15:05:53.29
>>392
コマンドパターンみたいなものだからCommander?

しかし、余計なお世話とは思うけど、KeyValuePairの存在理由が謎。
わざわざ使いにくくしてるだけのような....
0395デフォルトの名無しさん2011/11/19(土) 15:06:24.81
>>392
コマンドパターンみたいなものだからCommander?

しかし、余計なお世話とは思うけど、KeyValuePairの存在理由が謎。
わざわざ使いにくくしてるだけのような....
0396デフォルトの名無しさん2011/11/19(土) 15:10:49.15
>>392
コマンドパターンみたいなものだからCommander?

しかし、余計なお世話とは思うけど、KeyValuePairの存在理由が謎。
わざわざ使いにくくしてるだけのような....
0397デフォルトの名無しさん2011/11/19(土) 15:12:11.59
>>392
コマンドパターンみたいなものだからCommander?

しかし、余計なお世話とは思うけど、KeyValuePairの存在理由が謎。
わざわざ使いにくくしてるだけのような....
0398デフォルトの名無しさん2011/11/19(土) 15:15:56.49
>>392
Dictionary使えばいいのに
0399デフォルトの名無しさん2011/11/19(土) 15:53:53.97
Map<ErrorCode, Inspector> map;
map.get(err).inspect(err);
0400デフォルトの名無しさん2011/11/19(土) 22:13:41.32
…
04013922011/11/20(日) 02:16:54.12
>>393-398
ん?もしかしてC#関連のクラスと勘違いしていないか?
例として出している名前、型名は構造を想像してもらうためのダミーだぞ

>>399
確かに、processors を List 型と書き示したのがまずかったな。型は Map と記した方が正しい

class Xxx {
 void Process(Element data) {
  processors.Find(data.Type).Process(data);
 }

 bool AddProcessor(IProcessor newProcessor) {
  return processors.Insert(
   newProcessor.TargetDataType, newProcessor);
 }

 Map<DataType, IProcessor> processors;
}
0402デフォルトの名無しさん2011/11/20(日) 02:47:37.09
ん?別にC#じゃなくてもいいけど
C#で想像しちゃまずいのか?
C#にあるのと別の働きをするもの?
04033922011/11/20(日) 10:16:20.97
>>402
同じ
基になるコレクションは連想配列(Dictionary)でなくてもいいけど
0404デフォルトの名無しさん2011/11/20(日) 10:53:58.05
>>401
お前さ、人に もの聞くのに上から目線か。オナニーでもしてろ
0405デフォルトの名無しさん2011/11/20(日) 13:07:56.16
どっちにしろ、無理にElementなんて型を導入するのが意味不明に思えるな。
わざわざ使いづらくしてるだけじゃん。

Element.TypeでMapからIProcessorを引っ張ってくる意味も分からない。
それなら最初からElemetにTypeではなくIProcessorを持たせれば済む。
何がしたいんだろう。
■ このスレッドは過去ログ倉庫に格納されています