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

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

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

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part18
http://hibari.2ch.net/test/read.cgi/tech/1277016982/
0153デフォルトの名無しさん2011/02/09(水) 09:14:24
>>152
すでに書いてますが、cache()とcapture()はすでに既存のものがあるので、
それと重ならない名前にする必要があるのです。
0154デフォルトの名無しさん2011/02/09(水) 09:20:06
既存の関数とどう違う事するの?
0155デフォルトの名無しさん2011/02/09(水) 09:56:09
設計ミスを命名でカバーするパターンか
0156デフォルトの名無しさん2011/02/09(水) 10:45:42
RailsのActionView に cache と capture というメソッドがあるが、これかな。
フレームワークに自分のメソッドを追加するんなら(Rubyはオープンクラスなの
で、出来る)命名で回避も仕方がないか。
0157デフォルトの名無しさん2011/02/09(水) 16:07:29
ceche_kv capture_kvでええやん
0158デフォルトの名無しさん2011/02/09(水) 19:33:39
>>156
まさにその通りです。お見それしました。

>>157
そんな、実装方法がもろに出た名前よりも、もっと抽象化されたいい名前があると思いますよ。
0159デフォルトの名無しさん2011/02/09(水) 19:39:05
いや実装方法は出てないと思うけど....
Rubyってメソッドオーバーロードできんのかしかし
0160デフォルトの名無しさん2011/02/09(水) 20:01:14
とりあえず、Railsでの話らしいので、alias_method_chainで
自分の処理と既存の処理の折り合いをつけるというスレ違いの
解法もあるとだけ。
0161デフォルトの名無しさん2011/02/09(水) 22:25:00
妻が身ごもりました。
まだ子どもの性別はわからないのですが、
なにか良い名前を考えてください。
0162デフォルトの名無しさん2011/02/09(水) 22:26:48
趙C
0163デフォルトの名無しさん2011/02/09(水) 22:48:30
何の名前をだよ
0164デフォルトの名無しさん2011/02/09(水) 23:58:03
つかさ
つばさ
はるか
かなた
しずか
しずき

この辺りは性別関係なく付けられるから便利だ

テンポラリな変数名にも問題なく使える
0165デフォルトの名無しさん2011/02/10(木) 00:17:03
>>158
お前さんが問題にしているレイヤは実装を重視すべきレイヤと知れ
0166デフォルトの名無しさん2011/02/10(木) 09:51:37
>>159
>Rubyってメソッドオーバーロードできんのかしかし
メソッドオーバーライドの間違いでしょ
Rubyでメソッドオーバーロードできたら大事件ですよ
0167デフォルトの名無しさん2011/02/12(土) 14:50:24
オブジェクトの位置を整列させるクラスの名前に迷ってます。
具体的にはオブジェクトを指定して左付けや右付け、中央配置などを行う関数をまとめたものです。
Layout
CordinateUtil
など考えたのですが、何か良い案はありますでしょうか。
0168デフォルトの名無しさん2011/02/12(土) 15:10:59
>>167
よくわからんけど「オブジェクトの位置を整列させるクラス」なんていらないのでは?

アライメントとはコンテナの中の相対位置のこと。
つまり、オブジェクトが配置される土台となるコンテナが存在するはずだから、
そのコンテナのインスタンスメソッドで良いのでは?
0169デフォルトの名無しさん2011/02/12(土) 15:17:10
よく使う関数なのでグローバル関数のようにまとめておきたいんです。
Class.alignTop(target, container)
みたいな感じです。
0170デフォルトの名無しさん2011/02/12(土) 16:42:26
>>168
> よくわからんけど「オブジェクトの位置を整列させるクラス」なんていらないのでは?

>1 すら読めないやつはお引き取りください。

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

>>167
そのまま ObjectAlign でいいんじゃね。
0171デフォルトの名無しさん2011/02/12(土) 16:53:35
>>170
もうそういう盲目的馬鹿の意見は聞き飽きた。

車輪付のトランクを重い重いと抱えてる奴がいたら愚行以外の何でもないはずなんだが、
馬鹿は「抱えて持つ」ことそのものを自己目的化しているから、それの何が愚かか分からないんだな。
0172デフォルトの名無しさん2011/02/12(土) 17:32:33
>>171
そういう馬鹿に対してここでは名前をアドバイスして、
残りの「設計」はもっと適切なスレへやさしく誘導してあげる、
というのがここのスレですべきことではないかと
0173デフォルトの名無しさん2011/02/12(土) 17:42:12
こういうところにしか突っ込めなかったんでしょ。
指摘されて逆切れするやつは、矯正の見込みないからスルーするに限るよ。
0174デフォルトの名無しさん2011/02/12(土) 17:48:47
>>172
そういうのを盲目的だといっている。日本人は大概そうだけどね。
目的で正当化されない法やルールなんて糞ほどの意味もないのに、それが理解できない。

何故、何の目的のためにそんなことをする必要がある。そんなルールで誰か嬉しい奴がいるのか。
荒れる?そんな理由で荒れたことなど一度もないし、そもそも荒れて何が問題か。

むしろ、こういうくだらないルールは、>>170みたいな馬鹿に無駄口を利く理由を与えるだけの機能しか果たしてない。
0175デフォルトの名無しさん2011/02/12(土) 17:59:37
議論するのは「基本的に」禁止なんだから
ツッコミはスレチじゃないだろと

それに質問者-回答者のやりとりぐらいはあってもいいだろ
>>170みたいな奴こそお引き取りください
0176デフォルトの名無しさん2011/02/12(土) 18:00:12
>>168
よくわからんのなら黙ってなさいよ・・・
0177デフォルトの名無しさん2011/02/12(土) 18:02:27
第一級TON警報発令中
第一級TON警報発令中
0178デフォルトの名無しさん2011/02/12(土) 18:04:00
>>171
爆発物や細菌兵器とか輸送したかったけど、たまたま車輪付きのトランクしかなかったのかもしれん

>>177
TON-1と命名してやろう
0179デフォルトの名無しさん2011/02/12(土) 18:06:13
最近のTONは命名案すら出さないから困る
昔のTONは少なくとも名前を出した上でスレ違い発言して暴れてた
0180デフォルトの名無しさん2011/02/12(土) 18:10:25
Alignでいいんじゃね
0181デフォルトの名無しさん2011/02/12(土) 18:12:22
と、思ったけど、ほんとにそれだけなのかな
アライメントだけだったらさすがに関数の数が少なすぎるし、レイアウトやポジション関係の関数をどれくらいまで含めるかにもよるな
0182デフォルトの名無しさん2011/02/12(土) 18:12:52
LayoutUtil だな
0183デフォルトの名無しさん2011/02/12(土) 20:03:36
白熱しているところ恐縮ですが、質問させてください。
ある条件にもとづいてHogeの情報を取り出すクラス全般はどんな名前をつけるべきでしょうか?
このクラスは情報の取り出し方を隠蔽する役割をもっています。
いつもHogeInfoManagerやHogeInfoContainerにしているのですが、
より適切な名前などありましたら教えてください。
0184デフォルトの名無しさん2011/02/12(土) 20:12:28
>>183
HogeInfo では不満なのかな

Manager や Container を名前に付ける理由はなにかある?
0185デフォルトの名無しさん2011/02/12(土) 20:16:24
HogeIntrospector
0186デフォルトの名無しさん2011/02/12(土) 20:29:01
>>183
HogeGetInformation
0187デフォルトの名無しさん2011/02/12(土) 20:37:08
>>183
そんな妙な機能のクラスが必要になるとしたらそれなりの背景があるはずだけど、
その背景が分からずに名前なんか付けられないでしょ。
01881832011/02/12(土) 20:53:46
プログラミング初心者なので特に深い意味もなくManagerやContainerをつけていました。
たしかにManagerやContainerをつけなくても、適切な名前がつけられますね。とても参考になりました。
設計もまだ未熟なので、該当スレにいって聞いてこようと思います。
ありがとうございました。
0189デフォルトの名無しさん2011/02/12(土) 21:09:37
>>186
いくらなんでもこれはないだろw
動詞主体だと関数っぽくみえるじゃん
敢えてそうしてるんだったらともかく

Containerが付いてるとデータ構造として使うように見える。
Managerは大抵の場合は大げさすぎる。そこまで大したことやってないんじゃない?
大したことやってる場合はもっと適切な名前が付けられるはず。
0190デフォルトの名無しさん2011/02/12(土) 21:25:38
>>189
>動詞主体だと関数っぽくみえるじゃん

そもそもお題が「Hogeの情報を取り出すクラス」なんだが...
0191デフォルトの名無しさん2011/02/12(土) 21:26:44
get は動詞だけど、 getter は動詞じゃないよね?
0192デフォルトの名無しさん2011/02/12(土) 21:31:18
>>191
うん、だから〇〇getterならまだ許容範囲
ただ今回はHogeInfoGetterはいくらなんでも冗長すぎるのでないと思う
0193デフォルトの名無しさん2011/02/12(土) 21:53:05
だから、HogeInfo だけで十分だと思うんだが

>>183 の口ぶりからして、情報を「入れる」ことはそれほど重要では無さそうだ
であれば、そのシステムにおいて情報を「得る」ことが重要なのは明白

Hoge の情報を扱う事 = Hoge の情報を得る事 と考えて差し支えないのなら、
敢えて「得る」を名前に入れる必要は無い(分りきってるから)

深読みしすぎか
0194デフォルトの名無しさん2011/02/12(土) 22:04:00
>>193
>>183 の口ぶりからみて「Hoge の情報を格納するクラス」を作りそうだと思うのは、
俺だけか?
0195デフォルトの名無しさん2011/02/12(土) 22:11:16
>>194
それなら、Hoge の情報を持つクラスは他にないんだから、
尚更 Manager や Container、getter なんて要らん
HogeInfo で十分だと思う
0196デフォルトの名無しさん2011/02/12(土) 22:14:31
>>195
いや「Hoge の情報を取り出すクラス」と「Hoge の情報を格納するクラス」を
別々に作りそうと言う話なんだが...。
0197デフォルトの名無しさん2011/02/12(土) 23:14:17
どうでもいいけどContainerってなんか右に尖ってて嫌だな
0198デフォルトの名無しさん2011/02/12(土) 23:16:45
ランスみたいで格好いいだろ
0199デフォルトの名無しさん2011/02/12(土) 23:35:00
シェルエット的にはミニガンだな
0200デフォルトの名無しさん2011/02/12(土) 23:57:50
変数名日本語っていいなあと思ってきた。
微妙なニュアンスつかいわけれるし
0201デフォルトの名無しさん2011/02/13(日) 00:04:43
それ、わかるわ
行書体フォントだと気分乗るしね
0202デフォルトの名無しさん2011/02/13(日) 01:44:04
クラスが何とかManagerだらけになって困る。
0203デフォルトの名無しさん2011/02/13(日) 04:55:46
日本語変数名でインテリセンスにmigemo組み込んだら最強になった
0204デフォルトの名無しさん2011/02/13(日) 06:23:27
俺の会社も何とかManagerだらけになって困る。
残業代よこせ糞が。
0205デフォルトの名無しさん2011/02/13(日) 11:57:11
>>183
Accessor・・・はまずいか。
もうちょっと具体例を出して相談したほうがいいかもね。
0206デフォルトの名無しさん2011/02/13(日) 12:18:20
>>202
仮にクラスが何とか Manager だらけになった場合、一体何が困るの?
0207デフォルトの名無しさん2011/02/13(日) 12:22:52
何とかManager以外の全クラスに、NotManagerと付ければ
Managerの部分は削除出来るんじゃないか?
0208デフォルトの名無しさん2011/02/13(日) 14:12:13
managerクラスはインスタンスの生成と管理をするクラス?
0209デフォルトの名無しさん2011/02/13(日) 14:27:15
>>206
managerは名前が機能を表してない。
0210デフォルトの名無しさん2011/02/13(日) 14:28:04
Javaが、名詞の王国と揶揄される所以さ。
0211デフォルトの名無しさん2011/02/13(日) 14:35:21
>>209
管理じゃないの?幅広いけど
0212デフォルトの名無しさん2011/02/13(日) 14:37:09
>>209
機能していないと分っているのに、
なんで何とか Manager だらけになるの?
機能してないのなら省けば良いじゃん
0213デフォルトの名無しさん2011/02/13(日) 14:39:58
>>212
知らんよ。
209は"何とかManager"という命名の問題点を指摘しただけだから
0214デフォルトの名無しさん2011/02/13(日) 14:43:40
SomethingManager
http://www.radiumsoftware.com/0603.html#060330
0215デフォルトの名無しさん2011/02/13(日) 14:44:59
問題ないと思ってるなら別にいいんじゃね?
0216デフォルトの名無しさん2011/02/13(日) 14:47:25
何とかFactory
0217デフォルトの名無しさん2011/02/13(日) 15:38:27
何とかFactoryってAbstractFactoryとして使うだろうから明確じゃない?
0218デフォルトの名無しさん2011/02/13(日) 17:19:47
何とかManagerのインスタンス名が、何とかManだったりするのが
一番有害。
0219デフォルトの名無しさん2011/02/13(日) 17:26:00
どこぞのコンポーネントでInputManなんてのがあるねw
0220デフォルトの名無しさん2011/02/13(日) 17:48:49
何とか Manager のインスタンス名が何とか Man な例を見たことがない
何とか Mgr とか、mgr 何とかならあるが
0221デフォルトの名無しさん2011/02/13(日) 20:33:11
>>220
MGR?! (マジれ?!)
0222デフォルトの名無しさん2011/02/13(日) 20:41:43
>>220
お前の経験が少なすぎるだけ
黙ってろ
0223デフォルトの名無しさん2011/02/13(日) 22:28:01
確かに経験少ないが、いいだろ
しゃべらせろ
0224デフォルトの名無しさん2011/02/14(月) 19:14:26
童貞のセックス講座みたいな状態になってしまうが、よろしいか?
0225デフォルトの名無しさん2011/02/14(月) 19:20:12
そりゃだめだ。
だが、僕の考えた最高にして誰もやってない自慰方法とかなら
聞いてやらんこともない。
0226デフォルトの名無しさん2011/02/14(月) 19:31:45
「童貞の考え出すオナニー法」と掛けまして、
「世界最速のジェットコースター」と解きます。

その心は、すごいGだ!
0227デフォルトの名無しさん2011/02/14(月) 20:33:15
そろそろ話を元に戻すか
0228デフォルトの名無しさん2011/02/16(水) 21:04:20
ActionScript3.0です。
「アクティブな状態にする」と「非アクティブな状態にする」という役割を持つ
メソッドに名前をつけたいのですが、どうもしっくりきません。
現状では、active()とinactive()という名前にしているのですが、
こういった場合、一般的にはどのような単語を用いるのでしょうか?

以下、いまのところ考えている候補です。
active ←→ inactive
active ←→ passive
select ←→ ???
??? ←→ wait
0229デフォルトの名無しさん2011/02/16(水) 21:10:30
activate / deactivate
0230デフォルトの名無しさん2011/02/16(水) 21:45:45
なんか、普通に辞書引けば解決する質問すぎるね。

ちなみにHW用語だとAssert/Negateなんてのもある
0231デフォルトの名無しさん2011/02/16(水) 21:51:11
set を前置して set active / set inactive はありかもしれないね。
Java だと setActive(true or false) にするのかな。

passive は攻めに対する受けみたいな感じになるのでちょっと inactive とは違う。
0232デフォルトの名無しさん2011/02/16(水) 22:07:48
>>231
> set を前置して set active / set inactive はありかもしれないね。
> Java だと setActive(true or false) にするのかな。

違和感ある

それなら setActivity (true or false) の方がいい
0233デフォルトの名無しさん2011/02/16(水) 22:22:51
TON?
0234デフォルトの名無しさん2011/02/16(水) 22:23:31
ところでアクティブにするってどういう意味?
ボタンとかだとよくenableやfocusを使うけど。
Stateパターンっぽく、setState(active)みたいなのもありかも。
0235デフォルトの名無しさん2011/02/16(水) 22:30:39
>>232
SwingのsetOpaqueとかsetVisibleも同じ伝(set+形容詞)だが、当然違和感あるんだよな?
0236デフォルトの名無しさん2011/02/16(水) 22:33:24
>>232
C#でいうプロパティなんだから、名詞の方が余計違和感あると思うけど....
0237デフォルトの名無しさん2011/02/16(水) 22:35:03
っていうか、activityじゃactiveの名詞形ですらないな....
02382282011/02/16(水) 23:16:16
>>229-237
たくさんお答えいただいてありがとうございます!

>>234
「アクティブにする」ということについて
現在、ブラウザ上で複数の図形を使って遊べるアプリ(?)を作っており、
その図形はユーザの操作で移動、拡大縮小、回転、色の変更をすることを可能としています。
そこで、
カーソルで操作中の図形を指して「アクティブな状態」、
それ以外の、画面上に置かれているだけの図形を「非アクティブな状態」と表現しました。

>>231
あー、setとか動詞をつけた方が良さそうですね



active/inactiveだと、文字列検索などの際にかなり不便なので、できたら
>>230のAssert/Negateのような単語が良いかと考えています。

下手に独特な単語を使ってそれに慣れてしまうより、
業界で一般的に使われているような単語に親しみたくて、書き込みをしました。

0239デフォルトの名無しさん2011/02/16(水) 23:18:14
馬鹿の違和感なんてそんなもん
0240デフォルトの名無しさん2011/02/17(木) 07:32:29
>>235
違和感ある
02412402011/02/17(木) 07:42:07
>>235
set+形容詞だからという訳じゃない

setActive だと、真か偽かのフラグを設定するという
プログラミング言語の事情がクラスの外に見え隠れしてるような、
そんな気がする

setActivity の方が、活動する度合いを決めるというような感じで、
クラスの役割の方に注目した名前になっているような気がする

set*** 自体に、もうそういう何か真偽値を決定するにおいを感じるんだけど、
それなら setActivity の方がまだましな感じがする

そういう意味では >>229 が最適解だと思う

あくまで俺が個人的に気がするというだけ
しかも、それほど明確にこれだという理由が説明できないから、
あまり気にしないでくれ
0242デフォルトの名無しさん2011/02/17(木) 08:22:07
なんだTONか。
0243デフォルトの名無しさん2011/02/17(木) 09:04:51
>>238
focusでどうか
0244デフォルトの名無しさん2011/02/17(木) 11:09:03
いくら説明を加えたって無駄
全く取り繕えてない
02452402011/02/17(木) 12:38:01
>>244
だから気にするなと言っている

なぜ気にする?
0246デフォルトの名無しさん2011/02/17(木) 14:26:40
Set+形容詞は、(文脈上明らかな)名詞等が省略されているだけと考えるかな。自分なら。
0247デフォルトの名無しさん2011/02/17(木) 15:27:00
>>245
いいから失せろ
0248デフォルトの名無しさん2011/02/17(木) 19:32:39
>>245
喧嘩腰の馬鹿には与しないけど、あんたも人にケチつける割には説明が足りないんだよ。

>>246
そういうことじゃなくて、少なくとも今の話の流れでは少なくともセッター。
0249デフォルトの名無しさん2011/02/17(木) 23:35:46
足りないのは説明というより知識
0250デフォルトの名無しさん2011/02/18(金) 02:56:46
足りないのは知識というよりセンス
0251デフォルトの名無しさん2011/02/18(金) 03:11:36
センスねーな
0252デフォルトの名無しさん2011/02/19(土) 19:27:52
よく連想配列の変数名を付けるときに迷う時がある
とりあえず関係する名前どうしにWithとか挟んでいるけど微妙なんだよね
例えば列名と列序数の連想配列とかはどんな感じがいいかな?
■ このスレッドは過去ログ倉庫に格納されています