X



クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001ネミ子
垢版 |
2017/05/07(日) 18:01:52.03ID:akuyRduv
クラス名、変数名のつけ方に悩んだら書き込むスレです。

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
0556デフォルトの名無しさん
垢版 |
2019/01/16(水) 18:49:45.18ID:V+R6JUG+
>>552
くどくて済まんけど、要するにsnapshotだよねそれ。
差分とかじゃなくて変更後のベタなデータなんでしょ?
0557デフォルトの名無しさん
垢版 |
2019/01/16(水) 18:59:59.07ID:V6eCyENB
>>547
aだってよ?w
おまえいがいはそうぞうがついてたが。

これからは、わからんかったらだまってるようにな!
0558デフォルトの名無しさん
垢版 |
2019/01/16(水) 19:05:47.57ID:V6eCyENB
>>556
snapshotは違う気がするな。
スナップショットはあんまり連続させないし、ふつうは対象が変化自体ではないからか。

上にも似たようなのがあったけど、ValueChangeくらいでいいんじゃないの?
0559デフォルトの名無しさん
垢版 |
2019/01/16(水) 19:11:47.45ID:V+R6JUG+
>>557
>そうぞうがついてた
頭悪いね。
問題にしているのは質問文から「変化点」の意味を正確に読み取れるかどうか。
質問者自身が認めているようにそれは明らかにNoだ。

俺が想像したのと大体同じ、だから俺の勝ち、これガキの論理。


>>558
https://wa3.i-3-i.info/word14388.html
0562デフォルトの名無しさん
垢版 |
2019/01/16(水) 20:34:51.10ID:CoXAL/Bw
>>559
もういちどいってあげるけど、ひとりいがいはよみとれてたよ?
しつもんしゃのけんそんをこんきょにするなんて、あほのうえに、ずうずうしいぞ。
0563デフォルトの名無しさん
垢版 |
2019/01/17(木) 02:22:34.82ID:PFDsT50a
525です。
皆様色々なご解答ありがとうございました。単語の意味などを調べつつ適切な物を選びたいと思います。

自分の質問が悪かったのですが、
変化点=変更後のデータ
欲しかったもの=変更時の時刻と変更後のデータを表す命名(の要素)

となります。誤解を招く質問で申し訳ありませんでした。
0564デフォルトの名無しさん
垢版 |
2019/01/17(木) 02:27:35.15ID:PFDsT50a
>>554さん
実際のデータ(の表現)はviewで、変化した時点のデータのみをテーブルで保持したいので、提案いただいたものはviewにつけたいと思っています。

>>556さん
リンクも見させていただきましたが、snapshotとは少し違うかと感じてしまいました。

自分が抱いているイメージとしては、
金太郎飴(ストリーム)と切断面(時刻と変更後のデータ)になります。
今回は切断面の名称だったので。

長々と失礼しました。
0565デフォルトの名無しさん
垢版 |
2019/01/17(木) 03:29:03.79ID:vfGlmNuh
んーよー分からんw
ゲームのコントローラーの入力状態の履歴みたいなイメージなんだろうか。
それならsnapshotは違うというのもちょっとわからんでもないけど...

しかし、状態変化直後の状態の写し(スナップショット)の記録に違いはないと思うんだけどな
0566デフォルトの名無しさん
垢版 |
2019/01/17(木) 07:42:56.78ID:Mk9NqJjw
質問のポイントは、金太郎飴な等間隔時系列データ(VIEW)と、変化点だけに圧縮した時系列データ(TABLE)の2つのオブジェクトをDBに作るから、それぞれを識別できるように名付けたいということだな
しかも集合と要素のどちらも呼び分けたいという思いがあると
0567デフォルトの名無しさん
垢版 |
2019/01/17(木) 07:47:10.89ID:Mk9NqJjw
要素には別々の名前をつける意味はないと思う
そのTABLEはVIEWの部分集合に他ならないから、集合だけに個別の名前を与えるのが妥当

集合の名前については、繰り返しになってしまうけど、永続化するときに変化点だけに圧縮するのは最も一般的な時系列データの持ち方だから、俺なら等間隔に展開した冗長な(奇異な)VIEWの側に説明的な名前をつけて欲しいわ
前か後ろにequal_intervalを付けるとか

そもそもその奇異なVIEWの存在意義が
気になる
速度もメモリ量も性能悪そう
ツリー構造の索引を持つデータとしてメモリ内に読み出しておいて、任意時点のデータを取るメソッドを付けて、必要ならflyweightパターンにしたい
もちろん事情があるならそのままでいい
0568デフォルトの名無しさん
垢版 |
2019/01/17(木) 09:58:31.61ID:nLgHX1a9
525です

>>565さん
自分がスナップショットの意味を取り違えていると思いますので、意味を調べ直してきます。

>>566さん
今想定しているのは時間は等間隔ではありません。状態やデータが変化した時のみ保持し、不規則なデータの移り変わりを表現したいと考えています。

>>567さん
今のところは、主体をview、変化点(と言ってしまいますが)は要素として考えています。

この考え方は自分の知識が弱いこともあると思いますので、改めて考え直してみます。

金太郎飴の例が悪かったですね。
今後は伝わりやすい例を考慮してから質問させていただきます。
0570デフォルトの名無しさん
垢版 |
2019/01/17(木) 11:50:07.39ID:CnuSa2VM
>>567
まだ言ってるのかよ…

> そもそもその奇異なVIEWの存在意義が気になる
> 速度もメモリ量も性能悪そう

>> 命名規則や設計の善し悪しについて議論するのは基本的に禁止。
0571デフォルトの名無しさん
垢版 |
2019/01/17(木) 15:59:55.65ID:LP4V/wDK
>>521
今更だけど
オブジェクトそのもの(あるいは一部)を初期化するメンバ関数は基本的にPublicになることはないかなって話
例えば、init()、update()、final()ってメンバ関数があったとして
init()→update()→final()の一連の流れをオブジェクト利用者に約束事として強要しちゃうわけよ
final()で一旦終えた後に、init()せずにupdate()しちゃったらオブジェクト内部がおかしな状態になるかも知れない
じゃあ、final()の中でinit()しちゃえばいいよねってなるけど、final()(init実行)→init()って無駄なことをされてしまう
そうするとinit()が邪魔になり、コンストラクタ内でinit()を呼んで、利用者に好きなだけupdate()させて
final()(init含む)で結果を受け取ってもらった方が分かりやすいよね
利用者が「この処理やーめた」って出来るようにオブジェクトそのものを初期状態へ戻すreset()のメンバ関数を
増やすのなら分かるけど、利用者からしたらいちいち処理の最初に呼び出すinit()は要らんよね

同様に一部のメンバ変数へのSetter(再代入、初期化)は極力排除するべきだと思うよ
オブジェクト内部で処理される絶えず変化するメンバ変数なんて外部からSetするようなものじゃないし
逆に処理に利用される外部から能動的に値を変えない限り定数状態になっているようなメンバ変数なら
オブジェクト構築時に初期化するようにして、それらの値を変えたいなら新しくオブジェクトを構築したら良いと思うよ
0572デフォルトの名無しさん
垢版 |
2019/01/17(木) 19:44:55.80ID:PY4oP9Xp
>>571
> じゃあ、final()の中でinit()しちゃえばいいよねってなるけど
なりません

コンストラクタ/デストラクタを持ってる言語なら init() はコンストラクタで、final() はデストラクタで呼び出せば良い
再利用したいなら削除して再度生成すべき
コンストラクタ/デストラクタを持ってない言語ならinit()→update()→final()を強要するんだからfinal()した後で再利用したいならinit()から強要すべき
中途半端にfinal()の中でinit()なんて呼び出すべきじゃない
そもそも再利用しないならそのinit()は無駄だし
0573デフォルトの名無しさん
垢版 |
2019/01/17(木) 20:02:41.35ID:nhRmKYsV
>>568
いや、「スナップショット」についてのその感覚は正しいと思う。
再確認するのはいいけど、言われたことにあんまりこだわらないようにね。

って、もう来ないかな?

オレとしてはいろいろ出ていたchange系の名前がよさそうだと思ってたけど、気に入らない理由を聞きたかった。
0574デフォルトの名無しさん
垢版 |
2019/01/17(木) 21:11:21.86ID:/APrNkEA
語感の問題なんだろうけど、スナップショットは任意のある時点って感じで、変化時点って意味は含まなさそう。
0575デフォルトの名無しさん
垢版 |
2019/01/17(木) 21:36:53.38ID:LP4V/wDK
>>572
>final()はデストラクタで呼び出せば良い
ああごめん、それらのメンバはオブジェクトを構築破棄する意味合いが強いものじゃなく
そのオブジェクトの目的を処理する意味でのinit()とfinal()
例えば、ハッシュ関数、データを繰り返しupdate()してその処理を終わらせるfinal()
final()はハッシュ値を返すみたいな

>コンストラクタ/デストラクタを持ってない言語なら~
そりゃそうだ

>そもそも再利用しないならそのinit()は無駄だし
その対比として再利用するreset()メンバ関数を例に出したんだけどね
init()は少なくともコンストラクタとreset()の中でコールされるよ

で、オブジェクトの初期化と処理の初期化を1つにして
もし処理を初期化するinit()メンバ関数を設けるなら、publicにはしないよって話だよ
0576デフォルトの名無しさん
垢版 |
2019/01/17(木) 21:46:08.66ID:LP4V/wDK
>>574
スナップショットって「ここで記録を残したい!」って、それを取り扱う側の任意が強いよね
変化したポイントを必ずしも残したいとは限らないからちょっと違うイメージだな
0577デフォルトの名無しさん
垢版 |
2019/01/17(木) 22:05:06.73ID:1ADJk1Ta
>>576
それは確実に違うw
https://wa3.i-3-i.info/word14388.html
↑の人が簡潔に書いてるように、「何か」のある瞬間の丸ごとの写し、という含意しかない
人が意志を持って作ろうが、一定の間隔で機械的に作成されるものであろうが、それは関係がない
0578デフォルトの名無しさん
垢版 |
2019/01/17(木) 22:11:14.58ID:1ADJk1Ta
完全に蛇足だけど、VirtualBoxみたいに
完全な写しではなくてもある瞬間の状態が再現可能なデータのことを
スナップショットと呼ぶケースもあるとは思う
0579デフォルトの名無しさん
垢版 |
2019/01/17(木) 22:17:04.64ID:1ADJk1Ta
>>574
変化直後の値であることを名前で明示する必要があるかは微妙だと思う
だって例えば一定間隔でサンプリングされたデータだったらいちいちそんな名前付けんでしょう。
0580デフォルトの名無しさん
垢版 |
2019/01/17(木) 22:27:55.19ID:1X2RnAg+
>>525はデータ自体の持ち方より変化した時のみ記録すると言う事を言いたい
って言うのは1名を除いてみんなわかってる話
なのでスナップショットの議論をしてもあまり意味がないと思う
0581デフォルトの名無しさん
垢版 |
2019/01/17(木) 22:44:49.84ID:3livcPKT
>>575
> そのオブジェクトの目的を処理する意味でのinit()とfinal()
> 例えば、ハッシュ関数、データを繰り返しupdate()してその処理を終わらせるfinal()
> final()はハッシュ値を返すみたいな
それならそんな変な名前をつけるべきじゃない
普通にget_result()とかでいいだろ

> init()は少なくともコンストラクタとreset()の中でコールされるよ
>>521が言ってるのはreset()の話な
> まあ俺ならSetDefaultHoge( )とかResetHoge( )とかにするけど
って書いてるあるから普通理解できると思うが
0582デフォルトの名無しさん
垢版 |
2019/01/17(木) 22:52:28.78ID:nhRmKYsV
>>577
あるにきまってんだろ。

それに、「スナップショット」は、IT用語のスナップショットの意味も強すぎる。
0583デフォルトの名無しさん
垢版 |
2019/01/17(木) 23:19:06.78ID:1ADJk1Ta
>>580
だから、そんな必要はないだろうと言ってる。
タイムスタンプとデータの写しが保存されていれば、常識的にそれは変化の先頭を
記録したものだと分かる。

それは繰り返しになるが、データの羅列(とサンプリング間隔)を見たら
いちいち一定間隔でサンプリングしたデータだなんて言わなくても分かるのと同じ

そんなことよりそれがナニであるかの方が余程重要な情報だ。

まあ仮にどうしても必要でも、例えばsnapshotOnChangedとかすればいいだけの話だけど


>>582
ないから。
あるというならそう言ってる人の記事の一つでも出してみ。
君が勝手に狭義に思い込んでるだけ。
0584デフォルトの名無しさん
垢版 |
2019/01/17(木) 23:19:56.06ID:1ADJk1Ta
しかし、すぐに喧嘩ごしで物を言ってくる馬鹿がいるな。
しかも言ってる内容がほんとしょうもない
0585デフォルトの名無しさん
垢版 |
2019/01/17(木) 23:31:16.65ID:TwUEGMBG
>>583
「スナップショット」は普通に使う言葉なんだが。w
狭義といえばそうだが実際にそうだから。

喧嘩腰に相手される理由を自省しろ。
0586デフォルトの名無しさん
垢版 |
2019/01/18(金) 05:15:11.78ID:SF688hqs
>>581
そのレスを否定も何もしていないよ
同じことを言っているだけなんだけど、initやinitializeって名称のメンバ関数を表に出すことはなく
初期化は利用者が能動的に使う名称にした方が良いねって説明しただけだよ
で、後半にメンバ変数を個別に初期化するような処理を持たせるにも条件が有るよねって書いたのよ
0587デフォルトの名無しさん
垢版 |
2019/01/18(金) 07:03:04.62ID:QqlHmxfI
>>583
全体的にほぼ同意
タイムスタンプのフィールド名がただの時刻じゃなく有効期間開始時刻みたいなニュアンスでキーになっているテーブルならもう誤解する人いないレベル
妥協案としてのsnapshotOnChangedもいいな
changeが原形で出てくるとどうも動詞っぽくて座りが悪し
0588デフォルトの名無しさん
垢版 |
2019/01/18(金) 07:16:09.93ID:dGgLcYHd
>>583
> タイムスタンプとデータの写しが保存されていれば、常識的にそれは変化の先頭を記録したものだと分かる。
等間隔でタイムスタンプとデータを記録することなんて普通にある

> そんなことよりそれがナニであるかの方が余程重要な情報だ。
だからそんなことを思ってるのはお前だけ
0589デフォルトの名無しさん
垢版 |
2019/01/18(金) 07:17:54.96ID:QqlHmxfI
emploee_with_mail_addressとか
emploee_with_optimistic_lockingみたいなテーブル名が冗長なのと同じ理由で
emploee_snapshot_on_changedなんて説明的な名前になるのだとしたら
本来こっちがemployeeだよなあとは思う
0590デフォルトの名無しさん
垢版 |
2019/01/18(金) 09:29:05.82ID:XDn0fqgG
ここまで読んだが、スナップショットの定義論争する意味ある?
使ってもいいし使わなくてはならないこともないレベル
0591デフォルトの名無しさん
垢版 |
2019/01/18(金) 11:52:48.03ID:dGgLcYHd
>>586
> 初期化は利用者が能動的に使う名称にした方が良いねって説明しただけだよ
だから
>> まあ俺ならSetDefaultHoge( )とかResetHoge( )とかにするけど
って書いてあるのに、バカなの?
0592デフォルトの名無しさん
垢版 |
2019/01/18(金) 11:54:44.14ID:dGgLcYHd
>>590
> ここまで読んだが、スナップショットの定義論争する意味ある?
ない
最初にスナップショットって言い出した>>538が一人でしつこく食い下がってるだけ
0593デフォルトの名無しさん
垢版 |
2019/01/18(金) 15:17:56.66ID:SF688hqs
>>591
書いてあるから何なの?
そのレスの人は自分はそうするって書いているだけで何故かを書いていないでしょ
それをこっちは説明しただけじゃん、何で突っかかってくるの?
まあ、その例に対しても>>571の後半でこっちの意見が書いてあるけどね
この場合はそのレスの人とは意見が異なるよ
0594デフォルトの名無しさん
垢版 |
2019/01/18(金) 15:54:14.53ID:N2j3ka14
そう言えば普通に理解できる人じゃなかったんだな…
1ヶ月以上も前のレスに粘着するような人だと言うことを忘れてたよ w
0596デフォルトの名無しさん
垢版 |
2019/02/08(金) 18:15:31.54ID:WrxcLohJ
変数名はよく迷うんだけど、
最近、本当に迷っているのは変数名自体じゃなくて、
日本語の英訳だと気付いた。
ググっても、いまいちしっくりこないんだよな。
状況的にこの訳でいいの?って。
0598デフォルトの名無しさん
垢版 |
2019/02/09(土) 08:00:40.77ID:3lMelktV
>>597
>>596はええ事ゆうとるやん
おまえのがいらんわw
0601デフォルトの名無しさん
垢版 |
2019/02/11(月) 12:24:00.36ID:gPSd8158
誰かワイのことも慰めてくれんかのう、性的に
0607デフォルトの名無しさん
垢版 |
2019/02/16(土) 17:17:42.90ID:s8r91WJ4
bool tesuto = false;
0611デフォルトの名無しさん
垢版 |
2019/02/20(水) 21:39:18.84ID:zIu6PpOW
マス目の中央に十字に線引いて、左上、左下、右上、右下と「田」の字型に4分割していることをイメージさせたい時、
どう短い英単語で表現したらわかりやすいでしょうか?
0612デフォルトの名無しさん
垢版 |
2019/02/20(水) 22:15:51.62ID:6AaY2QOY
>>611
イメージ的にはライフルのスコープのあれ?
reticleと言うらしい

後は素直に4分割でquarteringぐらいか
0618デフォルトの名無しさん
垢版 |
2019/02/21(木) 01:08:06.67ID:8z2yw4hD
>>612-616
調べたところ象限という表現が近いと思います(多分
いちばんパッと見て馴染みやすそうなquadrantにしようかと思います
ありがとうございました
0619デフォルトの名無しさん
垢版 |
2019/02/21(木) 01:10:15.03ID:8z2yw4hD
>>617
形と言うか
中央を基準に左上・左下・右上・右下の4つに分類したいと言った感じでしょうか
0620デフォルトの名無しさん
垢版 |
2019/02/21(木) 01:38:37.65ID:Cw68EtgL
>>618
象限っていうのは普通は四つに分けた一つのことなんですよw
第〇象限って高1で習ったでしょ。

数学の言葉を使うなら╋は直交座標とかデカルト座標とか言う
でも冗長だと思う
0621デフォルトの名無しさん
垢版 |
2019/02/21(木) 07:00:50.05ID:bbSqDcsj
SWOT分析みたいな分割図の区画を描くようなイメージなら象限とquadrantでいいんじゃない
0622デフォルトの名無しさん
垢版 |
2019/02/21(木) 12:19:33.00ID:MDhOI6F5
象限て久しぶりに思い出したわ
たまには為になるなおまえらもw
0641デフォルトの名無しさん
垢版 |
2019/03/22(金) 00:02:52.39ID:GmT3YQ5y
え?proc_maxも最大プロセス数みたいな感じじゃないの
バッチ処理やバッファリングのサイズ上限みたいなイメージってこと?
むしろRunLimitあたり「魔法のランプは3回まで」みたいな回数限度で、同時であるニュアンスが落ちすぎだと思ってたわ
まあいくつか挙がった内から近いものがあれば選べばいいとは思うが
0642デフォルトの名無しさん
垢版 |
2019/05/26(日) 22:08:46.49ID:33DPLG/U
ボタンをn回押すと実行されるイベントがあります。
(回数nは別途指定します)
n回押されたとき、その時刻を設定ファイルに記録するのですが
そこに使うキーとなる文字列をお願いします

foo: 1970-01-01T09:00:00
みたいな感じです
0646デフォルトの名無しさん
垢版 |
2019/05/26(日) 22:56:58.41ID:edjd2fQa
>>645
ボタンn回押すのが何かのコマンドか何かであるなら、それを名前に使った方がいいね。

そういうのじゃなく、本当に純粋にボタンがn回押されたタイミングを記録したいだけだとすると
なかなか適切なのが思いつかんなあ
0648デフォルトの名無しさん
垢版 |
2019/05/26(日) 23:27:10.28ID:edjd2fQa
>>647
そういう漠然としたものに名前を与えろっていうのも無理筋な気がするw
まあOnEveryNthClickとか?
0649デフォルトの名無しさん
垢版 |
2019/05/26(日) 23:45:04.89ID:33DPLG/U
あーなるほど
n回ってのをそのまま名前にしちゃうという手があったか
いちいち特定回数みたいな日本語に直して考えてたわ
0650デフォルトの名無しさん
垢版 |
2019/06/22(土) 18:33:43.34ID:2XZpmmZY
Goldfish.AzureGoldfishIsMany() //アジュール色の金魚が多いときに真
のように、形容詞 + クラス名と同じ名詞 + is + 形容詞 という命名の関数があったとして
クラスと関数でGoldfishがダブってるわけだけどどうしてる?
たとえば関数名のほうを消して Goldfish.AzureIsMany() にできるか?みたいな
0653デフォルトの名無しさん
垢版 |
2019/06/22(土) 20:06:21.99ID:xRFWxHvZ
このケースだからそう思うのかもしれないけど、
IsManyを判定できる関数がこのクラスに居るのが違和感
Goldfishの集まりを持っているクラスが他にあって(水槽とか)
FishTank.ContainsManyAzureGoldfishes()
みたいな感じで定義したい
Goldfishクラスには
Goldfish.IsAzure()
関数があればよいはず

まあ単に X.IsAandB() みたいな命名でよいケースもあるような気もする

>>650
「多い」の実装がどうであるかは呼び出し側は気にしたくないんだろう多分
0654デフォルトの名無しさん
垢版 |
2019/06/22(土) 21:43:09.00ID:cXBWskr/
金魚が「Goldfish」なことに違和感。w
直訳?
誰や、んな訳語をつくったんは!
0655デフォルトの名無しさん
垢版 |
2019/06/22(土) 22:34:20.22ID:6TuhVHB2
>>650
まあ既に指摘されてるけど、集まりを評価する関数を要素のクラスに持たせるのが
そもそも変だねw

何か事情があるにしても、HasManyAzureとかIsRateOfAzureHighでいいんじゃないか。
むしろいちいちGoldfishと断る意味が分からん
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況