クラス名・変数名に迷ったら書き込むスレ。Part20
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/07/29(金) 21:32:01.00命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part19
http://hibari.2ch.net/test/read.cgi/tech/1293201229/
0433デフォルトの名無しさん
2011/12/01(木) 17:28:06.800434デフォルトの名無しさん
2011/12/01(木) 17:32:04.79関数名は何?
0435デフォルトの名無しさん
2011/12/01(木) 19:21:32.370436432
2011/12/01(木) 19:25:00.99>>434
getList にしてますが getTree でもいいかなと思ってます。
0438431
2011/12/01(木) 19:41:46.11検討してみて ignoresDescendants 頂くことにしました。
レス下さった皆さん、ありがとうございました。
0439デフォルトの名無しさん
2011/12/02(金) 04:43:31.20基準値以下なら、明るくする関数の名前をお願いします。
function xxx() {
return (lightness > 0.5) ? darken() : lighten();
}
0440デフォルトの名無しさん
2011/12/02(金) 04:57:27.48モニタの輝度調整とかならBrightnessが一般的
0441439
2011/12/02(金) 05:02:45.88失礼しました。
こちらに、輝度(Lightness)とあるので、混同してしまいました;
http://ja.wikipedia.org/wiki/HLS%E8%89%B2%E7%A9%BA%E9%96%93
ようするにHSL色空間のLのことです。
0442デフォルトの名無しさん
2011/12/02(金) 05:22:16.31で、本題のほうなんだけど、安易にadjustとか使いたくなるんだけど、そういうわけにもいかないのかなぁ。
AdjustLightness(threshold) とかで伝わりそうといえば伝わりそうなんだけど
0443439
2011/12/02(金) 05:44:14.48adjustだと、増減値を自分で指定するという感じがしますね。
AdjustLightness(amount)のように・・・
0444デフォルトの名無しさん
2011/12/02(金) 08:22:49.72ちょっと違いますかねぇ。
0445デフォルトの名無しさん
2011/12/02(金) 13:48:47.680446デフォルトの名無しさん
2011/12/02(金) 16:16:35.880447デフォルトの名無しさん
2011/12/02(金) 17:31:03.07applyLightnessAdaptation
0448デフォルトの名無しさん
2011/12/02(金) 20:43:42.56動詞じゃないのを許せるならLightStatとか。
余計なお世話だけど、そういう単純な制御だと、ネガティブフィードバックになってたら
条件が揃えば発振するよねそれw
0449デフォルトの名無しさん
2011/12/03(土) 00:38:22.92分類テーブルと、分類付テーブルの名前をどうしたらいいですか?
categoriesとcategorizationsとなってますが、おかしいですか?
0450デフォルトの名無しさん
2011/12/03(土) 00:49:28.00classesとclassifications・・・なの?
0451449
2011/12/03(土) 00:56:14.70classでもよさそうですね。
ing+sとかで動詞の複数形?にするのはおかしいですかね?
一応名詞を選んでいます。
英語難しいです・・・
categoriesは他のテーブルと関連付けるための情報をもつテーブルで、
categorizationsで、実際にcategoriesと他のテーブルを関連付けしている感じになります。
0452デフォルトの名無しさん
2011/12/03(土) 01:06:43.84reations
0453デフォルトの名無しさん
2011/12/03(土) 01:30:33.020454デフォルトの名無しさん
2011/12/04(日) 10:22:13.00「student」に対する「students」など、
単体クラスを複数管理するクラスをよく作っていたのですが、
「series」って、複数形も「series」で、
「series群」というクラスをどういう名前にすればよいのか困っています。
他の命名規則と合わせて「serieses」という造語を使っておくべきでしょうか?
(「"serieses"」でググるとそれなりには引っかかるのですが)
0455デフォルトの名無しさん
2011/12/04(日) 10:30:45.630456デフォルトの名無しさん
2011/12/04(日) 10:51:29.95Entityとか適当なサフィックス付けて。
0457デフォルトの名無しさん
2011/12/04(日) 11:04:14.84その集合の性質をよく表したクラス名にするのが正解
0458454
2011/12/04(日) 11:56:00.39seriesというクラスが存在して、それを複数管理するクラスなんです。
そして、この「複数のseries」を、関数内で使ったり、
他のクラスがメンバとして持つ、という構造です。
内部では普通の配列や連想配列で管理してますが、使う側には見えない部分で、
arrayやmapという単語をクラス名には付けたくないので、複数形を使っています。
なんか英語としては「series's」が正解なようなのですが、
これをクラス名にしようとするとどうなるのでしょうかね…。
0459デフォルトの名無しさん
2011/12/04(日) 12:06:58.64その目的がはっきりしていれば自ずと適切な名前も決まるでしょ
そして何の目的もなくただ集約してるだけならデータ構造の名前つけるぐらいしかないだろう
0460デフォルトの名無しさん
2011/12/04(日) 12:27:14.00変数の名前なら複数形でいい場合が多いと思うけど。
それが外からリストに見えるのなら〜List、連想配列に見えるなら〜Map、
単なる集合以外の意味を持たないなら〜Collection、みたいに機械的に命名すればいいだけでは?
0461デフォルトの名無しさん
2011/12/04(日) 13:40:02.980462デフォルトの名無しさん
2011/12/04(日) 13:50:29.90object.Do();
これっておかしくないか
objectは三人称単数なんだから
object.Does();
にするべきでは
0463デフォルトの名無しさん
2011/12/04(日) 13:53:59.51命令形のDoだろう。
0464デフォルトの名無しさん
2011/12/04(日) 13:55:56.05メソッドは叙述ではなく命令ですよ基本。
dog.Run()は「ワンコが走ってる」じゃなく、「ワンコ、走れ」。
0465デフォルトの名無しさん
2011/12/04(日) 13:58:51.34ではobject.isValidやobject.GetValueはどう解釈すれば
object、正常であれという命令?
これでは正常化するメソッドに見えてしまいますよ
0466デフォルトの名無しさん
2011/12/04(日) 14:04:06.460467デフォルトの名無しさん
2011/12/04(日) 14:06:15.19>>464 は、メソッドは叙述ではなく命令ですよ「基本」と言ってる
基本じゃない場合もあるんだよ
(たいていの場合は命令で解釈できるから、基本と言っているんだと思う)
>>465 の場合は、一般的には「object は正しい」という述語として
解釈されてきた歴史がある(だから戻り値もたいていは論理値)
一律に「全て命令だ」という訳ではないんだよ
そうやって解釈されてきた歴史的な経緯は知らんが
基本はちゃんと押さえながら、かつ柔軟に解釈していこうよ
0468デフォルトの名無しさん
2011/12/04(日) 14:13:52.340469デフォルトの名無しさん
2011/12/04(日) 14:15:24.26ちなみに、命令じゃなくて普通の動詞として解釈する人もいて、
こちらも別に間違いじゃない
window.createChild (・・・)
window が ・・・という属性の子ウィンドウを作る
命令と解釈するのは、たぶんオブジェクト指向以前の名(伝統)だろうね
0470デフォルトの名無しさん
2011/12/04(日) 16:40:44.78でたらめ言うなゴミクズ
0471デフォルトの名無しさん
2011/12/04(日) 16:42:44.56訂正
> たぶんオブジェクト指向以前の名(伝統)だろうね
たぶんオブジェクト指向以前の名残(伝統)だろうね
0472デフォルトの名無しさん
2011/12/04(日) 17:52:00.61お前は英語分かっていないな。三人称単数現在ってのは
ちゃんとニュアンス持ってるんだよ。
命令形の場合とは違う
0473デフォルトの名無しさん
2011/12/04(日) 17:55:47.70命令形は Be - だよ。
ちなみに get〜 だけはお前の言うとおり
おかしい。これはネイティブも(おかしいと)分かって
るけど、get にしてると思う。
>>469
2番目の意味では、
window.createsChildになる
0474デフォルトの名無しさん
2011/12/04(日) 18:15:59.23object.IsValidも、例えば、"tell whether the object is valid or not"
のような感じの省略表現だと考えることが出来る。
やはり基本は命令表現でしょう。
object.GetValueみたいな形はアクセスメソッド以外では今時あまり使わないと思うけど。
0475デフォルトの名無しさん
2011/12/04(日) 18:19:32.760476デフォルトの名無しさん
2011/12/04(日) 18:58:56.28デタラメ撒き散らすな
黙っとけカス
0477デフォルトの名無しさん
2011/12/04(日) 19:15:15.16こういう馬鹿を説得する義理もないけど、だったら仮にメソッド名に日本語を
使うとしたらどうなるか考えてみろと。
IsValidは「正当か」、CreateChildは「子オブジェクトを作れ」
普通はこういう風になる。
0478デフォルトの名無しさん
2011/12/04(日) 19:24:07.91#define は .
#define の .
#define 、 .
#define 正常である isValid
#define 名前を取得する getName
#define 生成せよ create
オブジェクト は 正常である()
オブジェクト の 名前を取得する()
オブジェクト 、 生成せよ()
日本語は形式が柔軟だから便利だね
0479デフォルトの名無しさん
2011/12/04(日) 19:50:30.000480デフォルトの名無しさん
2011/12/04(日) 19:58:50.10a や b の名前を使って「全体として」英語の文として読もうとか、
あるいは「全体として」英語の文になるように a や b の名前を決めようとか、
そんな馬鹿なことに注力して名前を決めるものじゃない
何らかの工夫をしなければ、対象となるオブジェクトの識別子より
関数を表す識別が必ず左側に来る言語だって普通にある
名前は特定言語の文法にできるだけ依存しないように、
その名前を参照する側から見た役割や機能、意味などを元に決めるべき
全体として英文のように読める(解釈できる)かどうかは些末な問題だ
0481デフォルトの名無しさん
2011/12/04(日) 20:01:57.48と言ってはみても、それを理解できる猛者はこのスレにはいないだろうね
0482デフォルトの名無しさん
2011/12/04(日) 20:13:42.29GetValueFromObject(Type object);
DoSomethingWithObject(Type object);
関数名だけで英文が完成するようにする
引数名は関数名である英文に現れる単語を示すように名付ける
これがもっとも読みやすい命名法
0483デフォルトの名無しさん
2011/12/04(日) 20:23:32.12荒すな
0484デフォルトの名無しさん
2011/12/04(日) 20:25:30.47嵐じゃないです
0485デフォルトの名無しさん
2011/12/04(日) 20:33:19.92むしろそこは誰も異論がないと思うんだけど....
0486デフォルトの名無しさん
2011/12/04(日) 20:35:59.14どうせドキュメント読まないなんてことはあり得ないんだから長い名前書くだけ無駄
衝突さえ回避できればC標準のような適当さで十二分なんだよ
0487デフォルトの名無しさん
2011/12/04(日) 20:46:51.23なぜなら俺のレスには、レスしてないし。きれいに避けて通ってるw
ちなみにどこまでも英文に近くしたいのなら、
SmalltalkかObjective C でも使っとけって話だ
0488デフォルトの名無しさん
2011/12/04(日) 21:44:36.690489デフォルトの名無しさん
2011/12/04(日) 23:20:27.31どこまでも英文に近くしたいならCOBOLじゃね?
0490デフォルトの名無しさん
2011/12/04(日) 23:26:42.85適当に「COBOL サンプル」などでググると分かるけど、
COBOL って思ったほど英文っぽくないんだわ
0491デフォルトの名無しさん
2011/12/04(日) 23:34:48.54抽象化し辛いせいで、結局はその辺の言語以上に英文から離れてくのよねw
ホントに英文っぽくしようとすると命令ごと大量に作らないといけなくて
可能な限りでそうしようとした結果が膨大な単語が並んだ予約語表
しかもそうまでしてもやっぱり英文には程遠いという…
0492デフォルトの名無しさん
2011/12/05(月) 00:45:11.47×CreateChildは「子オブジェクトを作れ」
○CreateChildは「子オブジェクトを作る」
0493デフォルトの名無しさん
2011/12/05(月) 01:02:38.30たいていの場合は叙述で解釈できるよ
0494デフォルトの名無しさん
2011/12/05(月) 07:08:01.760495デフォルトの名無しさん
2011/12/05(月) 08:23:41.730496デフォルトの名無しさん
2011/12/07(水) 10:33:29.74テンプレートパターンのJavaクラスを名前を考えてください。
IOエラーなど生じやすい危険からBridgeScope, CriticalSection
みたいのがいいかなと思うのですがどうでしょう?
abstract class ??? {
onRead(){}
onReadError(){}
onSomething(){}
onWrite(){}
onWriteError(){}
}
0497デフォルトの名無しさん
2011/12/07(水) 10:44:52.890498496
2011/12/07(水) 11:39:48.92onSomething()がリソースの変換とは限らず
振る舞い(ビヘイビア)でも通じるのが良いです。
DTOとしての自身の変数(フィールド)に
マッピングすることが主な目的なので。
class ??? {
__@WebSession
__@Read
__@Write
__Integer id; // Read and Write
__@WebCookie
__@Read
__String login_name; // Read only
__@File(path="/log.txt")
__@Write
__String log; // Write only
__
__@Override
__void onSomething(){
____Service service = new Model();
____log = service.service(this);
__}
}
0499496
2011/12/07(水) 12:43:08.73Webページのforwardを行わせるので
Resolverにしてみようと思います。
0500デフォルトの名無しさん
2011/12/11(日) 17:50:04.58bool compare(X a, X b)
{
a.hoge > b.hoge;
}
これの名前はどうする
hoge_of_a_is_greater_than_hoge_of_bってすると長くて間抜けな気がするし変数名が入ってヤナ感じ
0501デフォルトの名無しさん
2011/12/11(日) 19:02:20.62っていうか、例えば
bool GT(X a, X b)
ってシグネチャの関数があったときに、これを(b > a)を返す関数だと解釈する人はまずいないと思うけど....
とくに説明がなければ、常識的に言って(a > b)が返ってくるんだろうなと解釈するでしょ。
0502デフォルトの名無しさん
2011/12/11(日) 19:54:23.18{
return a.price > b.price;
}
bool HogeGreaterThan(X a, X b)
{
a.hoge > b.hoge;
}
0503デフォルトの名無しさん
2011/12/13(火) 16:59:55.66今 enable メソッドと disable メソッドがあるんですが、
処理がほぼ共通のため、
function enable() { hoge(true); }
function disable() { hoge(false); }
hoge (enable) {
if (enable) ...
}
みたいな感じでやってます。
みなさんなら hoge のメソッド名は何にしますか?
0504デフォルトの名無しさん
2011/12/13(火) 17:05:45.350505デフォルトの名無しさん
2011/12/14(水) 18:25:39.67作ったファイル名から元の数値まで戻す処理を持たせた場合は何がいいんでしょう?
converter?
0506デフォルトの名無しさん
2011/12/14(水) 18:44:06.870507デフォルトの名無しさん
2011/12/14(水) 18:44:16.880508デフォルトの名無しさん
2011/12/14(水) 19:49:15.580509デフォルトの名無しさん
2011/12/14(水) 19:55:42.250510デフォルトの名無しさん
2011/12/14(水) 20:05:34.20特定の数値からファイル名を作る?
意味が分からん
あと〜Builderだと、GoFのBuilderパターンと混同するから良くないかと
0511デフォルトの名無しさん
2011/12/14(水) 20:14:53.390512デフォルトの名無しさん
2011/12/14(水) 20:19:06.890513デフォルトの名無しさん
2011/12/14(水) 20:20:26.99これ俺の持論。
0514デフォルトの名無しさん
2011/12/14(水) 20:25:02.07ファイル名に限定したいならFileNameParserにでもすればいい
0515デフォルトの名無しさん
2011/12/14(水) 20:30:19.24そういう奴はリアルだと「ゆとり(笑)」だったりするから相手にしてもたかが知れてる
0516デフォルトの名無しさん
2011/12/14(水) 20:49:37.29int GetNumber(string fileName);
こういう使い捨ての小さい処理の名前で悩む奴はアホ
0517デフォルトの名無しさん
2011/12/14(水) 21:03:01.05それに○○erはクラスに付ける名前だ
>>516
だな
俺はGetの代わりにextractを考えたけど他はほぼ同じだ
0518デフォルトの名無しさん
2011/12/14(水) 21:10:44.500519デフォルトの名無しさん
2011/12/14(水) 21:13:46.45なんかおかしい?
0520デフォルトの名無しさん
2011/12/14(水) 21:23:09.43(自分あるいは自分の周りでそういう処理は使い捨ての小さい処理でしかない
というのでは根拠に乏しい)
根拠が無いのにアホと結論づけるのは論理的じゃない
0521デフォルトの名無しさん
2011/12/14(水) 21:23:58.89数ヶ月後にコードを読むときには、それが「使い捨ての小さな処理」なんてことは
すっかり忘却の彼方になってる自分を想像できない奴はもっとアホだと思う。
ところでこのスレって何のスレだっけ?
0522デフォルトの名無しさん
2011/12/14(水) 21:26:40.970523デフォルトの名無しさん
2011/12/14(水) 21:28:53.80数ヶ月もあいだあいてりゃ最低でもコメント見るだろwww
おまえらコメント見ないの?そんなんでよくPGやってられるな
つーか根拠に乏しいってこんな具体性高い処理ライブラリ化する奴なんて居ねーよwwwwww
どう見てもそのアプリ限定の使い捨てだろうが
0524デフォルトの名無しさん
2011/12/14(水) 21:29:26.16お前の解釈に無理がある
0525デフォルトの名無しさん
2011/12/14(水) 21:30:53.06スペルがおかしい
0526デフォルトの名無しさん
2011/12/14(水) 21:31:37.02・・・大丈夫か?
0527デフォルトの名無しさん
2011/12/14(水) 21:33:59.77お前のほうが心配だわ
0528デフォルトの名無しさん
2011/12/14(水) 21:34:11.28あっそ
>>525
じゃあ517は正しいということでいいな
0529デフォルトの名無しさん
2011/12/14(水) 21:36:28.820530デフォルトの名無しさん
2011/12/14(水) 21:39:14.53ゆとり乙
0531518
2011/12/14(水) 21:39:38.84>>525
すまん、スペルミスは俺だ。
0532デフォルトの名無しさん
2011/12/14(水) 21:40:47.09はじめからクラスにつける名前を聞いてるんだろ
■ このスレッドは過去ログ倉庫に格納されています