クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1ネミ子
垢版 |
2017/05/07(日) 18:01:52.03ID:akuyRduv
クラス名、変数名のつけ方に悩んだら書き込むスレです。

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
2019/01/17(木) 09:58:31.61ID:nLgHX1a9
525です

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

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

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

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

金太郎飴の例が悪かったですね。
今後は伝わりやすい例を考慮してから質問させていただきます。
2019/01/17(木) 10:05:22.99ID:KGdabfsS
Change Update
Log History
ここらへん組み合わせればいいんでないの
2019/01/17(木) 11:50:07.39ID:CnuSa2VM
>>567
まだ言ってるのかよ…

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

>> 命名規則や設計の善し悪しについて議論するのは基本的に禁止。
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するようなものじゃないし
逆に処理に利用される外部から能動的に値を変えない限り定数状態になっているようなメンバ変数なら
オブジェクト構築時に初期化するようにして、それらの値を変えたいなら新しくオブジェクトを構築したら良いと思うよ
2019/01/17(木) 19:44:55.80ID:PY4oP9Xp
>>571
> じゃあ、final()の中でinit()しちゃえばいいよねってなるけど
なりません

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

って、もう来ないかな?

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

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

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

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

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

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

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

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

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


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

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

> そんなことよりそれがナニであるかの方が余程重要な情報だ。
だからそんなことを思ってるのはお前だけ
2019/01/18(金) 07:17:54.96ID:QqlHmxfI
emploee_with_mail_addressとか
emploee_with_optimistic_lockingみたいなテーブル名が冗長なのと同じ理由で
emploee_snapshot_on_changedなんて説明的な名前になるのだとしたら
本来こっちがemployeeだよなあとは思う
2019/01/18(金) 09:29:05.82ID:XDn0fqgG
ここまで読んだが、スナップショットの定義論争する意味ある?
使ってもいいし使わなくてはならないこともないレベル
2019/01/18(金) 11:52:48.03ID:dGgLcYHd
>>586
> 初期化は利用者が能動的に使う名称にした方が良いねって説明しただけだよ
だから
>> まあ俺ならSetDefaultHoge( )とかResetHoge( )とかにするけど
って書いてあるのに、バカなの?
2019/01/18(金) 11:54:44.14ID:dGgLcYHd
>>590
> ここまで読んだが、スナップショットの定義論争する意味ある?
ない
最初にスナップショットって言い出した>>538が一人でしつこく食い下がってるだけ
2019/01/18(金) 15:17:56.66ID:SF688hqs
>>591
書いてあるから何なの?
そのレスの人は自分はそうするって書いているだけで何故かを書いていないでしょ
それをこっちは説明しただけじゃん、何で突っかかってくるの?
まあ、その例に対しても>>571の後半でこっちの意見が書いてあるけどね
この場合はそのレスの人とは意見が異なるよ
2019/01/18(金) 15:54:14.53ID:N2j3ka14
そう言えば普通に理解できる人じゃなかったんだな…
1ヶ月以上も前のレスに粘着するような人だと言うことを忘れてたよ w
2019/01/18(金) 23:02:05.46ID:hlUa6vRd
常に差分だけを記録するって
あんまり得策とは言えないからな…
2019/02/08(金) 18:15:31.54ID:WrxcLohJ
変数名はよく迷うんだけど、
最近、本当に迷っているのは変数名自体じゃなくて、
日本語の英訳だと気付いた。
ググっても、いまいちしっくりこないんだよな。
状況的にこの訳でいいの?って。
2019/02/08(金) 18:17:45.03ID:PkoNSuV0
たしかに迷ったら書き込むスレだが、そんな日記かポエムはいらん
598デフォルトの名無しさん
垢版 |
2019/02/09(土) 08:00:40.77ID:3lMelktV
>>597
>>596はええ事ゆうとるやん
おまえのがいらんわw
2019/02/09(土) 16:16:29.35ID:NnmcfWng
>>596
そのためにこのスレがあるんだろ
2019/02/09(土) 18:10:09.58ID:FgAjV9d+
具体的な質問しないと慰めるくらいしかできない
601デフォルトの名無しさん
垢版 |
2019/02/11(月) 12:24:00.36ID:gPSd8158
誰かワイのことも慰めてくれんかのう、性的に
2019/02/11(月) 12:50:15.46ID:MkFOBvt9
風俗いけや
2019/02/11(月) 15:15:36.09ID:IzI8GxAX
class 新井浩文
2019/02/15(金) 23:20:34.23ID:e71gRKct
つまり、日本語変数を使えってこと?
2019/02/16(土) 10:08:50.79ID:Ed04clec
dim settei as integer
2019/02/16(土) 16:44:14.75ID:5qKFbRgU
ローマ字かこれで解決だな
607デフォルトの名無しさん
垢版 |
2019/02/16(土) 17:17:42.90ID:s8r91WJ4
bool tesuto = false;
2019/02/16(土) 18:41:16.09ID:N5DMegPc
ローカル変数は趣味で構わん
2019/02/16(土) 23:25:26.40ID:CD9VXZwW
絶対自分しか読まないなら、そうするけどな。

Dim ななこSOS As Long とか。
2019/02/17(日) 10:23:14.46ID:EkiBf8gr
Const くりいむレモン As String = "亜美"
2019/02/20(水) 21:39:18.84ID:zIu6PpOW
マス目の中央に十字に線引いて、左上、左下、右上、右下と「田」の字型に4分割していることをイメージさせたい時、
どう短い英単語で表現したらわかりやすいでしょうか?
2019/02/20(水) 22:15:51.62ID:6AaY2QOY
>>611
イメージ的にはライフルのスコープのあれ?
reticleと言うらしい

後は素直に4分割でquarteringぐらいか
2019/02/20(水) 22:36:02.59ID:QXQfMXGM
quadrant
2019/02/20(水) 23:08:55.59ID:Wi/z/KN1
キューブ4とかスクウェア4とか、そんなんしか思い浮かばん。
2019/02/21(木) 00:03:50.37ID:Nx5iJ8EP
paddy field
2019/02/21(木) 00:04:19.77ID:toD0kycv
数学の象限は orthantと言うらしい
2019/02/21(木) 01:06:16.29ID:LSFEbLdL
>>611
その形が重要なの?目的っぽい名前にはできないの?
2019/02/21(木) 01:08:06.67ID:8z2yw4hD
>>612-616
調べたところ象限という表現が近いと思います(多分
いちばんパッと見て馴染みやすそうなquadrantにしようかと思います
ありがとうございました
2019/02/21(木) 01:10:15.03ID:8z2yw4hD
>>617
形と言うか
中央を基準に左上・左下・右上・右下の4つに分類したいと言った感じでしょうか
2019/02/21(木) 01:38:37.65ID:Cw68EtgL
>>618
象限っていうのは普通は四つに分けた一つのことなんですよw
第〇象限って高1で習ったでしょ。

数学の言葉を使うなら╋は直交座標とかデカルト座標とか言う
でも冗長だと思う
2019/02/21(木) 07:00:50.05ID:bbSqDcsj
SWOT分析みたいな分割図の区画を描くようなイメージなら象限とquadrantでいいんじゃない
622デフォルトの名無しさん
垢版 |
2019/02/21(木) 12:19:33.00ID:MDhOI6F5
象限て久しぶりに思い出したわ
たまには為になるなおまえらもw
2019/02/21(木) 21:44:57.05ID:3EVPwELG
2×2であることが自明なんだったらgridでもよさげ
2019/02/21(木) 22:25:52.00ID:zF2vyctA
漢字で田でいいよ。
2019/02/22(金) 00:19:00.31ID:6OtVlR1W
そろそろ positioning map でググれ
2019/02/22(金) 08:35:41.73ID:KGqa3gdj
ポジショニングマップって…
さすがに的ハズレすぎだろ
2019/02/22(金) 13:00:33.47ID:D4QpBG3p
quadrantで画像検索するとそれっぽいのが出てくるからこれでイメージ合ってりゃquadrantでいいんじゃね
各領域の呼び方も決まってるぽいし
https://www.google.com/search?q=quadrant
2019/02/22(金) 13:23:45.34ID:MgF7Ol/L
table2x2
2019/02/22(金) 15:08:55.26ID:UNEOcTqW
4LDK
2019/02/22(金) 15:30:07.80ID:5n5TLANb
田ficated
2019/02/23(土) 00:36:41.19ID:gaPva4TF
tanoji
2019/02/23(土) 02:06:04.14ID:khme0D5e
LU,LD,RU,RD
2019/03/20(水) 23:44:55.77ID:+x+aKSef
同時に処理できる最大数(制限値)を示す、短い変数名をお願いします
2019/03/21(木) 00:02:56.13ID:udXu0zXR
proc_max
2019/03/21(木) 02:40:05.89ID:sL/jDeiO
>>633
結局さ、「処理」っていうのが抽象的過ぎるから命名に困るんだと思うけどねたぶん。
2019/03/21(木) 07:20:00.18ID:Ru1ssq7b
短くしたいなら漠然とした一般的な部分は削除候補になるので
max_parallel
2019/03/21(木) 08:10:15.75ID:u3u8nbsq
>>633
RunLimit
2019/03/21(木) 09:29:35.49ID:O21Dd4dp
外部からこの処理やってねって頼まれる場合なら
AcceptLimit?
2019/03/21(木) 09:57:23.13ID:wzenmx5C
>>635
これ
calcXXXみたいなもん
2019/03/21(木) 22:47:37.75ID:udXu0zXR
>>636
parallelはちょっと読みすぎやろ。
2019/03/22(金) 00:02:52.39ID:GmT3YQ5y
え?proc_maxも最大プロセス数みたいな感じじゃないの
バッチ処理やバッファリングのサイズ上限みたいなイメージってこと?
むしろRunLimitあたり「魔法のランプは3回まで」みたいな回数限度で、同時であるニュアンスが落ちすぎだと思ってたわ
まあいくつか挙がった内から近いものがあれば選べばいいとは思うが
642デフォルトの名無しさん
垢版 |
2019/05/26(日) 22:08:46.49ID:33DPLG/U
ボタンをn回押すと実行されるイベントがあります。
(回数nは別途指定します)
n回押されたとき、その時刻を設定ファイルに記録するのですが
そこに使うキーとなる文字列をお願いします

foo: 1970-01-01T09:00:00
みたいな感じです
2019/05/26(日) 22:36:33.72ID:MKDuMAe+
button_pushed
じゃアカンの?
2019/05/26(日) 22:43:11.01ID:kcdU4Ge6
>>642
> foo: 1970-01-01T09:00:00
> みたいな感じです
それでなんの問題があるんだ?
あとスレ違いだし
2019/05/26(日) 22:43:36.79ID:33DPLG/U
ありがとう
特定回数という意味はあえて入れないということかしら
2019/05/26(日) 22:56:58.41ID:edjd2fQa
>>645
ボタンn回押すのが何かのコマンドか何かであるなら、それを名前に使った方がいいね。

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

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

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

何か事情があるにしても、HasManyAzureとかIsRateOfAzureHighでいいんじゃないか。
むしろいちいちGoldfishと断る意味が分からん
656デフォルトの名無しさん
垢版 |
2019/06/22(土) 23:38:09.91ID:2XZpmmZY
>>653
なるほど、同じ文意になる文章がないかと考えてみるのは良さそう

>>651>>655
形容詞(この場合はAzure)に対してmanyと言って良いのか悩んだんだ
多いのはあくまでも金魚の方だから
2019/06/23(日) 00:50:33.60ID:9mBYoRL1
>>656
azureは他の色と同様名詞の用法もあるみたいだよ
辞書的には不可算名詞みたいだけど、たぶん他の色と同じように場合によってはs付けても大丈夫だと思う
2019/07/17(水) 15:09:38.38ID:/3nDQzMs
Dataを継承して値の変更を検出できるようにしたDataのクラス名
2019/07/17(水) 19:07:28.81ID:EAkeN2PH
>>658
Data_notifiyable
2019/07/18(木) 01:58:50.63ID:+One8JDO
>>658
変更検出の方法に基づいて考えたい気がする。
変更時に通知が出るなら >659 とかでいいけど、原本を控えておいて比較によって検出するような形だとまた違ってきそう。
2019/07/18(木) 12:59:08.35ID:i/nHfent
Observerとかでええんちゃう
2019/07/18(木) 20:10:35.28ID:C3Rw/RHH
>>660
検出するのがオブジェクト自身なら、その方法をクラス名に含めないほうがええやろ。
実装の詳細はできるだけ隠すべき。

>>661
それは、Dataオブジェクトの外側の何かやろ。
2019/07/19(金) 12:28:07.16ID:tVWqD6XF
変更を検知する方法を外部に提供するのか
自分で検出して自分でなにかするのかによって違うわな
2019/07/20(土) 00:09:53.37ID:5OyZG+Pc
ChangeDetectableData
2019/07/20(土) 09:39:17.20ID:ka1618cW
DetectableなDataをChangeするになってしまわないか?
2019/07/20(土) 10:21:23.54ID:eNhk7IpQ
そもそも値の違いを検出できるクラスを作ること自体が設計としてまずいんじゃねえの
2019/07/20(土) 11:37:02.08ID:iXVafCep
そこの議論は一応スレチなので…
Angular詳しくないけどこういう枠組みはあるもよう
https://qiita.com/lacolaco/items/523d96ddbfe55c4e6949

で、実質は Change-Detectable な Data かも知れないけど、
周りからは DataChangeDetector とでも呼ばれるべきという考え方はあるかもしれない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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