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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/10/03(月) 00:13:38
クラス名、変数名のつけ方に悩んだら書き込むスレです。

質問する人は、その変数に何を格納するのか(クラスだったらその役割)
プログラミング言語は何なのかを、それぞれ書いて、
いい変数名を思いついた人は、それに答えてあげましょう。

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

>>2 英和・和英・英英など各国語辞書と翻訳サイト。
>>3 専門用語辞書、類義語(シソーラス)辞書、図形・数式・数学用語の英単語。
>>4 関連スレと、いろいろな言語規約。
>>2-10 諸事情によりリンクがずれた場合。

前スレ。
◆ネーミング倶楽部◆
http://pc3.2ch.net/tech/kako/1035/10353/1035362308.html
Part1
http://pc5.2ch.net/tech/kako/1046/10465/1046541730.html
Part2
http://pc5.2ch.net/tech/kako/1058/10582/1058213523.html
Part3
http://pc5.2ch.net/test/read.cgi/tech/1067171530/
Part4(間違って3として進行)
http://pc5.2ch.net/test/read.cgi/tech/1087209526/
クラス名・変数名に迷ったら書き込むスレ。Part5
http://pc8.2ch.net/test/read.cgi/tech/1109330204/
0153デフォルトの名無しさん2005/11/03(木) 19:48:01
>>152
スレの趣旨から外れてるけど命名が問題なわけではない。
>>144のコードを良く見ればわかるはず。
0154デフォルトの名無しさん2005/11/03(木) 23:11:48
エラーメッセージ等の文字列を一括して保持するクラスには、なんて名前付けたら良いですか?
Message 以外でお願いします。
0155デフォルトの名無しさん2005/11/03(木) 23:12:55
>>154 string
0156デフォルトの名無しさん2005/11/03(木) 23:30:20
MessageMgr
0157デフォルトの名無しさん2005/11/03(木) 23:32:29
>155
ムリポ orz

>>156
Message 自体が既に使われてるんで、できればそれとは関係無い名前が良いのですが……。
0158デフォルトの名無しさん2005/11/03(木) 23:33:59
MessageHolder
01591582005/11/03(木) 23:34:32
すまん。
StringHolderならどうだ。
0160デフォルトの名無しさん2005/11/03(木) 23:48:05
>>154
StringPool # おれならこれ。で、インスタンスをstringPool_errorとかに。
DiagnosticMessagePool # 長っMessageを含むのもいカンザキ?

そもそもあんたの言う「保持」の意味は?
既出のほかにも、pool,list,bag,container,handler,owner,...
0161デフォルトの名無しさん2005/11/04(金) 00:10:15
>>159-160
色々と済みません。

>保持
文字列が各所に分散するのも問題があるので、全文字列を1つにまとめて持っておくクラスを作ろうと考えました。
文字列が欲しいときには stringpool.getFatalErrorString(now_state) とかで、現在の状態を含む文字列を返してきます。
0162デフォルトの名無しさん2005/11/04(金) 00:18:47
>>154
そんなクラス作っても静的メソッドの寄せ集めになるだけで無意味な気もするけど。。
0163デフォルトの名無しさん2005/11/04(金) 00:25:19
>>162
それが困ったことに、各オブジェクトのマネージャクラスに置いておけることが分かったんです。
静的メソッド全く無し。
ついでに言うと、同じ文字列を複数クラスで使用していたんで、その共通化も兼ねてるんですね。
なんか設計の話はスレ違いっぽくて申し訳ないんですが。
0164デフォルトの名無しさん2005/11/04(金) 00:43:47
そうかそういうクラスが欲しい状況っていうのもあり得るのかな。
じゃ、思いつくままに。
GlobalMessageBag
StringTable
MessageGenerator
SentenceMaker
SpeechWriter
StringStorage
AppMessageDictionary
0165デフォルトの名無しさん2005/11/04(金) 00:50:46
> StringTable
単純ですが思いつきませんでした。これを使わせていただきます。
皆様ありがとうございました m(_ _)m
0166デフォルトの名無しさん2005/11/04(金) 18:30:32
あるインターフェースをラップし、そのインターフェースのメソッドを
いろいろ組み合わせて呼んでくれる便利メソッドを持つクラスを作るんですが、
いい名前はないでしょうか?言語はC++です。

class IFoo{
public:
  virtual void method1() = 0;
  virtual void method2() = 0;
};

class ??? : public IFoo{
public:
  ???(IFoo *foo) : foo_(foo){}
  void call_both() {foo_->method1(); foo_->method2();}
  void method1() {foo_->method1();}
  void method2() {foo_->mothod2();}
private:
Foo *foo_;
};

みたいな感じです。よろしくお願いします。
0167デフォルトの名無しさん2005/11/04(金) 18:35:30
>>166
インターフェイスを思いっきり意識してるクラスなら、
インターフェイス名からIとるだけでいい気がする。
0168デフォルトの名無しさん2005/11/04(金) 18:43:28
nterfaceってことね。
01691662005/11/04(金) 18:52:23
便利だよ〜、というところが目立つクラス名がいいかなと思ったのですが、
Iとるだけが単純でわかりやすそうなので、とりあえずこれを使わせていただきます。
ありがとうございました。m(_ _)m
0170デフォルトの名無しさん2005/11/04(金) 19:26:05
つかクラス名にCとかTとかつけんの?
Foo foo = new Foo();なんて微妙すぎね?
0171デフォルトの名無しさん2005/11/04(金) 19:32:01
付けないのが最近の流れみたいだね。
ドドネトの命名ガイドラインでもそうなってるし。
おれはクラスにCはやっぱり付けた方が明示的でいいと思うけどね
0172デフォルトの名無しさん2005/11/04(金) 19:36:58
>>170
>>1
0173デフォルトの名無しさん2005/11/04(金) 19:38:12
型安全でない言語ではまあ少しは意味あるんじゃない?
0174デフォルトの名無しさん2005/11/05(土) 01:20:12
DBから取得したデータを格納するオブジェクトと、そのオブジェクトを複数詰めたListについて、
たとえば、DBのテーブル構造をマッピングしたオブジェクトが

class Person() {
 private String name;
 private String age;
 public getName(){ return name; }
 public getAge(){ return age; }
}

として、このPersonのインスタンスを格納するコレクションがあったとした場合、
いわゆる「データモデル」として呼んでいいのは、コレクションに詰められた個々の
Personインスタンスなのか、それとも、コレクションそのものをモデルとして呼んでいいんでしょうか?
0175今のテンプレを作った気がする人2005/11/05(土) 01:27:58
>>1のテンプレの
〜議論するのは基本的に禁止
の部分、
〜議論するのは"基本的に"禁止
にしませんか?
絶対禁止じゃないという雰囲気がいいと思うんですが...
そもそもあの文面は自分と違うスタイルの人を攻撃する目的だと思われるレスが多かったり
宗教戦争がはじまると収集がつかなくなっていたので必要だったものであって、
有益な議論ならばアリかなと思うのですが。

どうでしょう?
0176デフォルトの名無しさん2005/11/05(土) 02:26:56
>>175
次スレ立てるやつに一任で。
0177デフォルトの名無しさん2005/11/05(土) 13:27:53
どう考えても偏狭にも話題を厳密に命名に限定することによって
得られる利益よりも失われる不利益の方が大きいに決まってるよな。

こういう簡単なことがわからない馬鹿が多いんだよ。
コントロール感に飢えてる奴ね。
PTAなんかではりきっちゃうオバサンいるでしょ?あれそのものだよね。
お前は世の中や子供の利益考えてモノ言ってるわけじゃなく、
単に自分自身の達成感や世の中操縦してるって感覚が欲しいだけだろ、って。
0178デフォルトの名無しさん2005/11/06(日) 02:25:50
いわゆる常識の範囲内でいいじゃないか。
命名のための見かたと考えかたについての議論はあり、くらいで。
0179デフォルトの名無しさん2005/11/06(日) 11:55:19
既に「基本的に」と書いてあるんだから、
不毛な宗教戦争にならない限りはいいんじゃね?
0180デフォルトの名無しさん2005/11/06(日) 11:57:51
ちょっとでも譲歩の可能性をちらつかせると
こういうくだらない流れになるので今後は一切設計ネタおよびメタ設計ネタを禁止します。
0181デフォルトの名無しさん2005/11/06(日) 12:02:27
早く迷え。
0182デフォルトの名無しさん2005/11/06(日) 14:18:23
http://pc8.2ch.net/test/read.cgi/db/1057985632/939-943

というわけで
book_id, author_id
1, 1
1, 2
2, 3
3, 3

のテーブル名をどうしたらいいですか?
0183デフォルトの名無しさん2005/11/06(日) 14:40:51
>>182 著作テーブル
0184デフォルトの名無しさん2005/11/06(日) 14:50:19
>>183
book_id, book_title 本テーブル
1, デスノート
2, カイジ
3, 黒沢

author_id, author_name 著者テーブル
1, 大場
2, 小畑
3, 福本

book_id, author_id
1, 1
1, 2
2, 3
3, 3

↑みたいな感じで
それもう使ってるんで別のがいいんです
0185デフォルトの名無しさん2005/11/06(日) 14:57:07
>>184 どこで使ってるって?
0186デフォルトの名無しさん2005/11/06(日) 14:59:39
>>185
author_id, author_name 著者テーブル ←これです
1, 大場
2, 小畑
3, 福本
0187デフォルトの名無しさん2005/11/06(日) 15:04:40
>>186 わざわざ確認入れてやったんだからよく見ろバカ。
0188デフォルトの名無しさん2005/11/06(日) 15:07:44
>>187
あーなるほど
ありがとうございました
0189デフォルトの名無しさん2005/11/06(日) 15:38:39
935 名前: デフォルトの名無しさん [sage] 投稿日: 2005/11/06(日) 15:25:10
このsageない基地外なんか過去から全部同じ椰子じゃないかとまで思ってしまう。
(ネタがつまらんのが致命的にキモイ)
0190デフォルトの名無しさん2005/11/06(日) 17:49:23
>>180
何様?
0191デフォルトの名無しさん2005/11/06(日) 23:43:40
java にて、ちょうど Lisp の eq と equal みたいな動作をするメソッドの名前を考えているんですが、
前者は java だと equals なんで、後者にどのような名前をつけるのか、ご意見をよろしくお願いします。
0192デフォルトの名無しさん2005/11/07(月) 00:48:07
Lispワカラン
簡単にでも説明してくれると考えられるんだが…
0193デフォルトの名無しさん2005/11/07(月) 00:57:03
参照が同一か、って検査のことかなあ。
Identicalなんてどう?
0194デフォルトの名無しさん2005/11/07(月) 00:57:58
参照の値だけを比べるのが、java の == に Lisp の eq
中身まで確かめるのが、java の equals に Lisp の equal

けど、今回は equals はデフォルト実装のまま (== と等しい) でいきたいんで、
equals 以外の 『中身まで確かめる EQUAL』 みたいな名前が欲しいと思ったんです。
0195デフォルトの名無しさん2005/11/07(月) 01:01:50
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp03.html
これを見た感じだと単に次のように思えたんだが。。。
lispのeq = Javaの==
lispのequal = JavaのEquals
違うのか?
0196デフォルトの名無しさん2005/11/07(月) 01:04:17
>>194
java知らないけど、そういうのってequalsをオーバーライドするべきなんじゃ。。
第一、任意のクラスの値同一性の検査法なんて未定義なんじゃないの?
0197デフォルトの名無しさん2005/11/07(月) 01:05:08
かぶった。。。orz

じゃあ、equals()とequalsValue()くらいでいいんじゃね?
0198デフォルトの名無しさん2005/11/07(月) 01:06:54
やっぱり equalsValue になるのかなぁ……。
了解です。しばらくはこれで頑張ってみます。
0199デフォルトの名無しさん2005/11/07(月) 15:11:31
equivalent に1票。
0200デフォルトの名無しさん2005/11/07(月) 17:43:25
equivalent だと、形容詞だから is 要らない?

あと、equivalent って数学では同値って意味で、
見かけ上 equals ではないんだけど、あるルールの下では2者の区別が付かないもののこと。
{0, 1, 2} と {a, b, c} は not equal だけど equivalent って事があったりするから、
中身見て等しいかどうか確かめるものに equivalent は違和感がちょっとある。
0201デフォルトの名無しさん2005/11/07(月) 17:48:38
あと、equals value だと、a.equalsValue → a は Value と等しいっぽくて嫌。
compare by value とか、by か with いるかも。
0202デフォルトの名無しさん2005/11/07(月) 18:51:29
本当にそんな糞設計でいいのかな。

equalsValue だかなんだか知らないけど、値の等価性の検査用のメソッドが
余分にもう一個あるクラスのコードを一年後に見て、そういうクラスを作った
一年前の自分を呪わない自信ある?

普通にequalsをオーバーライドすべきでしょ。

本当に二つも値の等価性の検査用のメソッドが必要なら、なぜそれが二つも必要なのか
少なくともその理由をほのめかすような命名がされてないとイライラすると思うけど。
同義の言い回しをメソッド名にするなんて愚の骨頂でしょ。
0203デフォルトの名無しさん2005/11/07(月) 18:57:24
>一年前の自分を呪わない自信ある?
あります。理由は↓に書いたですが。

ttp://pc8.2ch.net/test/read.cgi/tech/1130315416/628
0204デフォルトの名無しさん2005/11/07(月) 19:34:02
>>200
参照が等しくなくても、中身が同じなら true ってのがやりたいんだから、
見かけ上等しくないけど、中身が等しいというルールの下では区別が付かないということで、
equivalent で悪くないと思うんだけど。
まあ、Java ではそれを equals としちゃってるから、
似た別の単語を使うのは混乱の元かもね・・・。
0205デフォルトの名無しさん2005/11/07(月) 20:08:59
>>203の通り、メンバー1つだけで比較するなら
そのメンバーの名前を使うのが見た目としても、わかりやすいのでは。
size で比較するなら hasSameSizeAs とか。
A.hasSameSizeAs(B) となると、英文法的にはちょっとおかしいけどね。
0206デフォルトの名無しさん2005/11/07(月) 20:14:21
>>205
いや、うん。逆なんだ。
比較対象になっちゃいけないメンバが1つあって、それ以外の内容を比較するメソッドが欲しかったんよ。

具体的に言うと、プロトタイプベースのスロットテーブルがそれなんだけど。
0207デフォルトの名無しさん2005/11/07(月) 20:26:07
>>202
設計とかについてあんまりうるさく言わないようにね。すれ違いなので。

>>206
じゃあequalsNearly()とかでどーだ?だいたい同じっつー感じで。w
0208デフォルトの名無しさん2005/11/07(月) 20:34:18
>>207
だいたい同じかw それなら equalsFuzzy とかw
0209デフォルトの名無しさん2005/11/07(月) 21:11:45
equalsExcept****

で、除外する性質の名前を *** に入れる。
0210デフォルトの名無しさん2005/11/07(月) 23:25:43
スロットテーブルってのがよくわかんないからアドバイスできそうもない。
設計の話を強要するのはいかんというのがスレ趣旨だが
質問者から情報を引き出す場合に「こういう設計じゃいかんの?」と聞くのもNGだろか?

共通に判断する部分だけ別クラスにくくり出して、そいつへのgetter作って、
そいつら同士で==するのはどう?

hoge.getValue() == hage.getValue()

が真のとき、

hoge == hage

が真とは限らない。みたいな。これじゃ駄目?
02111912005/11/07(月) 23:30:05
こちらの伝え方が不味かったようですんません。アレだけで十分かと思ったんですが……。
0212デフォルトの名無しさん2005/11/07(月) 23:45:30
いや、同一性検査と同値性検査の話なんだろ?それはわかってる。
Javaでは同一性の検査には==を、
同値性の検査にはequalsを使う約束になってる。
これはC++で同一性の検査はアドレスとってアドレスを比較し、
同値性の検査にはoperator== を使うと決まってるのと一緒。
lispは知らんがeqとequalがそうなんだろ?

それ以外のことをしたいなら同一性と同値性の話を持ち出すのは間違いだったはずだ。
結局何がしたいん?
02131912005/11/08(火) 00:17:56
書いてたら糞長くなったんで端折ります。長文になると俺自身読む気がしない……。


・ java 上で動く俺言語つくっている。
・俺言語上のオブジェクトのインスタンスは、java 上のインスタンスで表現することにした。
・オブジェクトは、それ自身が別々のメンバ表 (スロットテーブル) を持っている。つまりプロトタイプベース。
・ちなみにメンバ表自体は自由に書き換え可能。

・数値オブジェクト "1" のインスタンスが2個あるとする。
・『片方』 に "hoge" という名前のメンバを追加する。
・この時点で、java 上の同値性は偽、俺言語上の同値性を真にしたい。
(なぜなら、java から見たら2つは別々のオブジェクト。しかし俺言語から見たら両方とも "1")

・ java 上の同値性を調べるメソッドは equals
・俺言語上の同値性を調べるメソッドが別に欲しかった。んで equalsValue にした。
0214デフォルトの名無しさん2005/11/08(火) 01:16:37
equalsAs俺言語
0215デフォルトの名無しさん2005/11/08(火) 01:17:13
equalsIn俺言語 のほうが良いかな?
02161912005/11/08(火) 01:23:19
すると equalsInMyLanguage かぁ……。お騒がせして本当に申し訳ないです (;´Д`)


うちだけが占有するのもあれなんで、次の質問どうぞ↓
0217デフォルトの名無しさん2005/11/08(火) 06:53:51
俺言語の開発ネームでも付けといて、
その略称を使った方がすっきりしそう。
0218デフォルトの名無しさん2005/11/08(火) 08:12:57
どうせだったらJavaのオブジェクトが脳内言語のインスタンスなんてせこいこといわずに
byte[]使ってVMonVMすればいいのに。
0219デフォルトの名無しさん2005/11/08(火) 11:55:25
>>217
では命名しよう。
開発コード:うんにょらはっぽっで
0220デフォルトの名無しさん2005/11/08(火) 20:23:03
変数を入れるための変数のtemplate型名、なにかないですか?

作りはBoostのvariantとかanyのような感じで、ただし特定の型しか格納できないやつ。
あるいはauto_ptrの外観がポインタっぽくないやつ。
0221デフォルトの名無しさん2005/11/08(火) 20:42:48
ポインタのラッパーで、ポインタっぽくないというと、reference type とか?
0222デフォルトの名無しさん2005/11/08(火) 20:46:52
referenceも、やはり他の何かを参照してる気がします。
もっといかにもそれ自体が持ってるようなの希望。
box, holder, nutshellと考えたんですがどうにも。
0223デフォルトの名無しさん2005/11/08(火) 22:27:27
variable
0224デフォルトの名無しさん2005/11/08(火) 22:30:03
>>223
…。
何か踏ん切りがつきました。ありがとう。
variableにします。
0225デフォルトの名無しさん2005/11/08(火) 22:49:33
>>219がスベってるわけだが。
0226デフォルトの名無しさん2005/11/08(火) 23:06:15
>>224
そうそう、命名では踏ん切りって大切だよね。
でもふんぎったせいで、あとから落ち着かない気持ちが膨れ上がってくるわけだが。w
0227デフォルトの名無しさん2005/11/10(木) 06:35:27
DirectXのラッパークラスで何かいい名前ないかな?
今のところDG9とかDI8とか味もそっけもない名前なんだけど…。
0228デフォルトの名無しさん2005/11/10(木) 08:25:47
俺はラップとヒップホップの区別がつきません。
というネタは置いといて。

DX知らないからなんともいえないけど、
そういうのはラップした対象の名前をベタに使えばいいんじゃないの?

DirectXとかCDirectXとかMSDXとか。
ラップするっていってもどうせメソッドの引数のハンドルが省けるって程度の
もんだろうから、実際にはデバイスの種類なんかごとにクラス作る必要があるんだろうけど。
0229デフォルトの名無しさん2005/11/10(木) 08:32:07
どういう目的のラッパーなのかによって名前の付け方も違う気がする。
DirectXのバージョン間の差異の吸収ラッパーとか、
OpenGLとか他のAPIとの差異の吸収ラッパーとか、
各種処理の前後にフックするためのラッパーとか、
色々目的が違うと思うんだよね。
02302272005/11/10(木) 10:32:59
>>229
いえ、そう言う物ではなくて、>>228さんの言っているように
ちょこっとだけ使いやすくしようってだけの代物です。

激しくショボショボです...orz

>>228
言われて見ればそれでいい気がしてきました。
妙にこった名前にして、後で使うとき「コレなんだっけ?」ってなふうになると鬱陶しいですよね。
ありがとうございました。
0231デフォルトの名無しさん2005/11/10(木) 12:04:50
いっそのことオリジナルの名称にしちゃってもいい気がする。
02322192005/11/10(木) 12:23:55
>>231
うむ。
一度スベったくらいではめげずに再び"UnyolaHoppode"を提案する!
無名祭祀書にも述べられている通り
陰陽五行に照らしてもカバラ的にも風水の観点からベスト。
0233デフォルトの名無しさん2005/11/10(木) 12:49:09
うんにょら の検索結果 3 件中 1 - 3 件目 (0.33 秒)
02342312005/11/10(木) 19:35:54
>>219
俺に同意しないでくれまいか。
0235デフォルトの名無しさん2005/11/11(金) 08:17:50
う、うんにょら……

ウニョラー!!!
0236デフォルトの名無しさん2005/11/12(土) 22:06:50
トッピロキー!
0237デフォルトの名無しさん2005/11/13(日) 01:10:14
ほんにゃらもげぴー もけもけさー
0238デフォルトの名無しさん2005/11/13(日) 09:28:12
ひょんひょろ
0239デフォルトの名無しさん2005/11/13(日) 12:24:51
こういう幼稚なレスって10代・20代の奴が書いてるのを想像しがちだけど
実は案外40ズラ、50ズラ下げたおっさんだったりするんだよな。
なんだよその70年代的なセンスはw
逆に若い奴だったら凄いよマジでw

こういうオッサンって自分の子供や親にその幼稚な姿を見せられるのかね。
ていうかそういう自分の自己イメージによく耐えられるよなw
0240デフォルトの名無しさん2005/11/13(日) 12:52:20
>>239
つーか239は、ひょんひょろも知らないらしいぜw
0241デフォルトの名無しさん2005/11/13(日) 17:42:25
>>235-237 は魔方陣グルグルのネタなわけだが、
ひょんひょろって何のネタ?
グルグルにあったっけ?
0242デフォルトの名無しさん2005/11/13(日) 18:30:17
誘拐ヲ実行スル!のヒョンヒョロけ?
ひらがなのほうのひょんひょろは知らんが
0243デフォルトの名無しさん2005/11/13(日) 23:59:07
ヒョンヒョロは名作だよ。いかに自分が常識に囚われてるかわかった。
0244デフォルトの名無しさん2005/11/15(火) 11:35:14
何かと思ったらそういうものか。
http://f3.aaa.livedoor.jp/~abal/ha.html#hyonhyoro
0245デフォルトの名無しさん2005/11/19(土) 15:37:37
漢字一文字で、さわやかで軽快でワクワクするような字は何かありませんか?
0246デフォルトの名無しさん2005/11/19(土) 15:43:18
韓
0247デフォルトの名無しさん2005/11/19(土) 16:06:20
>>245
朝

でもこれだけだと寂しいのでこうするといい
朝日
0248デフォルトの名無しさん2005/11/19(土) 16:16:58
期間を示す「自〜至」なんだけど、

beginning_period
end_period

というのが直訳なのかな?

でもちょっと長いしバランスが悪いので、他の名前をお願いします。
変数です。
0249デフォルトの名無しさん2005/11/19(土) 16:53:54
Fdate
Tdate
0250デフォルトの名無しさん2005/11/19(土) 18:58:46
startDate
endDate

dateStart
dateEnd
0251デフォルトの名無しさん2005/11/19(土) 19:24:42
自至という独特な雰囲気な言葉って無いもんだね・・・
スマートにstart,endかfrom,toしかないならそれで行きます。
0252デフォルトの名無しさん2005/11/19(土) 20:23:48
ふつう
start <-> finish
begin <-> end
じゃね?
■ このスレッドは過去ログ倉庫に格納されています