X



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

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

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
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と断る意味が分からん
0656デフォルトの名無しさん
垢版 |
2019/06/22(土) 23:38:09.91ID:2XZpmmZY
>>653
なるほど、同じ文意になる文章がないかと考えてみるのは良さそう

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

>>661
それは、Dataオブジェクトの外側の何かやろ。
0663デフォルトの名無しさん
垢版 |
2019/07/19(金) 12:28:07.16ID:tVWqD6XF
変更を検知する方法を外部に提供するのか
自分で検出して自分でなにかするのかによって違うわな
0666デフォルトの名無しさん
垢版 |
2019/07/20(土) 10:21:23.54ID:eNhk7IpQ
そもそも値の違いを検出できるクラスを作ること自体が設計としてまずいんじゃねえの
0669デフォルトの名無しさん
垢版 |
2019/07/20(土) 18:43:27.60ID:5OyZG+Pc
それならDataWithChangeDetectionかな
スレチで我慢してたけどDataとChangeDetectorを同じクラスにするのは微妙だから、名前にWithとか入って微妙感が出るのは自然な成り行きと思う

>>665
changeには名詞と動詞があるからそうも読めるけど、change detectionという一般名詞があるから誤読されにくい
クラス名が現れるべき文脈でメソッド名と間違われることなんて実際少ないから、混同への配慮よりも俺なら英語として自然であることを選ぶ
0670デフォルトの名無しさん
垢版 |
2019/07/20(土) 21:10:11.95ID:ZHuBK9XQ
質問者もやる気なさそうだから真面目に考えるだけ無駄だと思うよw

だいたい、こんな命名をそのクラスが必要になる背景も、
「検出」の具体的な意味も示さずにやれとか言う時点で何をかでしょ
0672デフォルトの名無しさん
垢版 |
2019/07/20(土) 22:42:52.16ID:ZHuBK9XQ
普通ではないね
むしろ勘違いオブジェクト指向っぽいw
その多態、本当に必要か?
いらないでしょw
0675デフォルトの名無しさん
垢版 |
2019/07/21(日) 17:18:39.47ID:akwJwcuK
>>672
モデルビュー的なことをするならそんなにおかしくもない。
「多態」が目的じゃないから。
0676デフォルトの名無しさん
垢版 |
2019/07/21(日) 18:11:15.08ID:XeVeiVX2
>>675
どう考えても多態そのものだと思うけど、
それはともかく特殊な条件付けたら何でも正当化できるよw

もとの質問にそんな条件なんか付いてないのは自明でしょ
0677デフォルトの名無しさん
垢版 |
2019/07/21(日) 18:22:06.33ID:rq1ZgCT5
>>671-672はイチャモンつけたいだけだからスルーでいいよ
そのために
> 命名規則や設計の善し悪しについて議論するのは基本的に禁止。
の注記あるんだし
0679デフォルトの名無しさん
垢版 |
2019/07/21(日) 20:14:42.06ID:XeVeiVX2
>>677
これもういうの何度目?
この手の馬鹿は自分もそのお仲間である自覚が皆無のおめでたい馬鹿
0680デフォルトの名無しさん
垢版 |
2019/07/21(日) 20:20:53.26ID:XeVeiVX2
ついでに言えば、こんな過疎ってるスレ(もう今ではこの板の大半のスレがそうだが)で
「スレ違いガー」なんてそれこそ言い掛かりでほとんど無意味。

お前こそ他人にイチャモン付けたいだけだろ馬鹿w
今時2chにいるなんてもういい歳こいてるんだろうから、もうちょっと合理的かつ柔軟に考えたらどうなのかね
派生的な話題を許容しても誰も困らないだろう。
0681デフォルトの名無しさん
垢版 |
2019/07/21(日) 20:38:37.46ID:O7YQRZ5I
混乱の元
そんなに気に入らないならまずは次スレを立てる時にテンプレから外しな
0682デフォルトの名無しさん
垢版 |
2019/07/21(日) 21:02:34.97ID:BTE59XxR
新参か?
実際に設計の善し悪し含めた話OKの命名スレが立っても、そのスレは全く活用できなかったという
実績が確実に残ってるのよね

そこんとこ分からない程度のオツムなら、設計の善し悪しなんか話すオツムなんか当然ないんだからやめとけ
0683デフォルトの名無しさん
垢版 |
2019/07/21(日) 21:21:18.61ID:/atv33Bt
そりゃ名前聞きたいだけなのに生半可な知識の奴に設計ガーとか言われても困るだけ
バカな言い合いで賑わうぐらいなら過疎ってた方がまだマシだよ
0685デフォルトの名無しさん
垢版 |
2019/07/21(日) 23:43:53.38ID:pXk5HZg7
>>682
意味が分からない。
自分で自分が何をっているのか理解しているのか

>>683
こういう馬鹿、言ってる傍から自分で自分の言ってることに矛盾してる自覚もないのな。
0687デフォルトの名無しさん
垢版 |
2019/07/21(日) 23:57:14.14ID:pXk5HZg7
>>672みたいなレスは

- 誰かの参考になる可能性がある
- 2chの現状を考えれば誰の迷惑にもならない

のに対して>>677みたいのは

- 誰の役にもたなない
- それどころか一部の人間の気分とスレッドの雰囲気を悪くする


どちらが悪質で罪深いか言うまでもない。
毎度のことだけど、2chに限らずネットではこの程度のことに考えも及ばないバカに限って
本人は自分が正しいと思い込んでる

なぜならこういう馬鹿は内省的になるのが怖くて仕方がなく、
内省的な自分を抑圧する手段の一つとして他人に言い掛かりをつけている自分に無自覚だからだ
0688デフォルトの名無しさん
垢版 |
2019/07/22(月) 00:00:52.53ID:hNRqRxaR
そんでこれが一番重要なことだが、このスレのテンプレにもあるような
ローカルルールは、結局その手の馬鹿に体のいい言い訳を与えているだけ。

「他人を批判したい」という卑しいだけの動機を抑圧して「正しいこと」に変える欺瞞のね
0689デフォルトの名無しさん
垢版 |
2019/07/22(月) 00:26:05.35ID:IpNCwwZ3
こーゆーのずっと繰り返してpart28なのよ
んでご希望の設計込みのスレ立てて分離したけど、そっちに居着かないのよ
言い出しっぺもね

どうしても納得いかないならもう一回スレ立てたら?
このスレのルールを変えようとすることだけが目的の馬鹿がまた来たなあとしか思わんね
どうせまた消えるに1億ペリカ
0690デフォルトの名無しさん
垢版 |
2019/07/22(月) 01:04:48.79ID:q7HwWXHn
>>687
> - 誰かの参考になる可能性がある
ない。
他人のやりかたを「勘違いオブジェクト指向」呼ばわりするようなクソ発言が参考になんかなるか。

> - 2chの現状を考えれば誰の迷惑にもならない
実際に迷惑なんだよ!
0693デフォルトの名無しさん
垢版 |
2019/07/22(月) 11:07:52.75ID:lH1dF0Hx
>どうせ使われないだろうけど
スレ内ヒット>>692

>どうせ
スレ内ヒット>>488>>689>692

>使われない
スレ内ヒット>>102>>103>>692

>だろうけど
スレ内ヒット>>375>>574>>692

どの言葉も話の流れにヒットしないんで>>692が創造主になってるんだが
皮肉の元が真面目に分からん
0694デフォルトの名無しさん
垢版 |
2019/07/22(月) 11:25:07.67ID:3CfIT26m
混乱の元
そんなに気に入らないならまずは次スレを立てる時にテンプレから外しな(どうせ使われないだろうけど)
0695デフォルトの名無しさん
垢版 |
2019/08/05(月) 16:15:13.02ID:jMrkLRxI
1つだけ有効な値が入っていてそれ以外は0になる配列ってなんて命名すればいいだろうか?
例えば、
{0, 0, 1, 0, 0, 0, 0} これはOK
{0, 0, 0, 0, 0, 0, 1} これもOK
{0, 0, 0, 1, 1, 0, 0} これはNG
0696デフォルトの名無しさん
垢版 |
2019/08/05(月) 16:43:27.68ID:17zIidUO
それがナニを意味するか、それを名前に入れないと意味ないのでは?
それがナニを意味するかはあんた以外誰も分からないのでは?
0698デフォルトの名無しさん
垢版 |
2019/08/05(月) 19:12:10.92ID:1szj/JJ7
既に有効が1つある状態で別の場所が有効になるケースはあるの?
{0, 0, 1, 0, 0, 0, 0} これが
{0, 1, 0, 0, 0, 0, 0} これになるケース
それとも最初はゼロフィルで1度有効の場所が決まれば不変?
0699デフォルトの名無しさん
垢版 |
2019/08/05(月) 19:28:02.73ID:8/n/eZGp
「1つだけ有効な値がある配列」ではなく
「ある処理に対して有効な配列」という方向での命名はどう?
0701デフォルトの名無しさん
垢版 |
2019/08/05(月) 21:45:25.18ID:ayYyoEKb
意味ないってそんなの
定数1に名前を付けろと言ってるのと同じだから

だから、1がナニを意味するのか分かんなきゃ名前なんか付けようがないだろうにw
0702デフォルトの名無しさん
垢版 |
2019/08/05(月) 23:37:04.95ID:Cfuto8Vp
具体的な用途がないと型に名前を付けられないというのも乱暴な話だな
QueueやTupleのような単純なデータ構造だってそれが役に立つなら型と名前が与えられるべき
そういう場合、用途は変数名が表せば充分
0703デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:17:40.47ID:SOS5SX0N
何その意味不明な意見
0704デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:22:42.23ID:SOS5SX0N
この人、QueueやTupleって名前が何の意味も表してないと思ってるのかな
0705デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:32:01.73ID:NH2VvLYA
表してるに決まってるだろ
逆に聞くが質問者がいう配列は何も表してないと思うのか?
0706デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:35:14.30ID:SOS5SX0N
だから何でそうなるのw
何かを表しているはずだと思ってるからそれを言ってくださいと言ってるんでしょw
もう大丈夫かマジw
0707デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:38:42.21ID:SOS5SX0N
だからね、「一週間の日数を表す定数の名前を付けてくれ」って質問はありだけど、
何を意味してるのか伏せたまま「定数7に名前を付けてくれ」って質問に意味があるとか
思うわけ?

あるわけないじゃんww
0708デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:50:02.95ID:aM52vrol
少なくとも、あれは、one-hot encoding という立派な名前のついた状態表現方法。
ただの数字と一緒にするのは無知。
0709デフォルトの名無しさん
垢版 |
2019/08/06(火) 01:02:24.48ID:NH2VvLYA
特定の問題を解く上で便利なデータ構造があるなら、それが695の説明ほぼそのままの抽象度の高いものであってもいいだろ
自然物や既知の概念に縛られる必要はない
データの特性が明かされている以上、定数7の例示は過度の単純化をしていて相応しいとは思えない
抽象性の高いままに案を提示してくれている人々に対して「意味ない」とは俺は思わん
0710デフォルトの名無しさん
垢版 |
2019/08/06(火) 08:53:55.01ID:3T7QkgRF
695です

このデータ構造は、OneHot〇〇って命名するのが適切そうなのでそうします
ありがとうございます

>> 698
そのケースはあります
0711デフォルトの名無しさん
垢版 |
2019/08/06(火) 10:53:14.30ID:SOS5SX0N
>>708
だから特定の問題領域で何と呼ばれるか、そんなの何の意味もない
彼の問題領域でそれが何を意味しているか、それが重要。
当たり前でしょ

そもそも配列がベクトルか、行列の列や行を表しているのか、数列か、
あるいは数学的な意味は持たないただの集合か、状況によって
配列そのものがまったく違った意味を持つ

もちろん抽象度が高い配列の特定の状態(例えば全部の要素が規定値とか)が
汎用的な意味を持つ場合もあるだろうし持たない場合もあるだろうが、
普通に考えればこんなのか後者に決まってる


>>709
抽象度が高いのが悪いとか誰も言ってないの。
重要なのは何を意味しているのかだと何度言わせるの
大丈夫かマジで
0713デフォルトの名無しさん
垢版 |
2019/08/06(火) 20:33:38.37ID:SN9O18fE
>>711
名前の提案ができないのなら、黙ってればいいんだよ。
できない言い訳をするスレじゃないから。
0715デフォルトの名無しさん
垢版 |
2019/08/07(水) 20:46:09.76ID:JnBdotvz
抽象的と言うか
外から見た役割で命名しろというのは大前提も大前提だろ

ただ、その内部処理を書いてるときとか
実装べったりな命名やら、類似処理で使える汎用的なプリフィクス/サフィックスやらが欲しいときも当然あるさ
0716デフォルトの名無しさん
垢版 |
2019/08/19(月) 09:15:28.15ID:xlQPwL5+
質問者は
OneHotXXX
↑こういうのの「OneHot」という言葉が欲しかったんでしょうに。
0717デフォルトの名無しさん
垢版 |
2019/08/19(月) 09:47:08.91ID:OAPxNX3i
そんなのなら素直にValidってやった方いい
意味不明より抽象的な方がミスリードの心配がなく情報量も多いから
0718デフォルトの名無しさん
垢版 |
2019/08/19(月) 09:58:34.23ID:kG35/yIv
>>716
いきなりどうした?
既に質問者(と思われる人)は
> このデータ構造は、OneHot〇〇って命名するのが適切そうなのでそうします
> ありがとうございます
ってレスしてるよ
0723デフォルトの名無しさん
垢版 |
2019/09/04(水) 05:26:03.52ID:eJy7OAMp
商品であれば取扱開始日と終了日まで、アカウントであれば有効化日と無効化日を表す変数名で悩んでます。
今はとりあえずstartdateとenddateにしてるんですが、どんな名前にするのがいいでしょうか?
validateddateとinvalidateddateのほうがいいですか?
0726デフォルトの名無しさん
垢版 |
2019/09/04(水) 10:00:04.36ID:TVYSsDEa
Active, Disable?
取扱開始日と有効化日、終了日と無効化日を同じ変数名で?
それなら商品の方が微妙になるか
0728デフォルトの名無しさん
垢版 |
2019/09/04(水) 10:28:30.97ID:EZkqGWkS
>>723
いつでもそうできるわけじゃないだろうけど、開始日/終了日を一組にしてしまえば、

DealingSpan.First
DealingSpan.Last

とかできるはず。
0729デフォルトの名無しさん
垢版 |
2019/09/04(水) 12:46:50.07ID:1D9rv4MD
下手に微妙な名前をつけるよりstartdate, enddateで一般化したほうがいろいろ具合がいいという側面もある
個人的にはbegindateの方が好き
型が日付なのか日時なのかわからない名前は嫌
0732デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:40:52.08ID:S+RlT6ue
>>723
終わりのほうはexpired一択。
始まりはなんだろ?対応させるならsubscribedかな?

ただの開始と終了じゃなく、なんか有効期間的な範囲だったら。
0733デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:46:59.42ID:EZkqGWkS
>>732
現時点で過去とは限らないのでそういうのはどうかと思うよw
0734デフォルトの名無しさん
垢版 |
2019/09/04(水) 21:15:39.20ID:1D9rv4MD
難しいな
他動詞なら過去分詞を受動態として無造作に使えるけど、自動詞では、時制が過去かどうかはともかく、完了相が前に出るということだろうか
expire dateでは文法的におかしいし、expiringも進行相だし、素直にexpiryかexpiration dateしかないのか
0735デフォルトの名無しさん
垢版 |
2019/09/04(水) 23:09:38.87ID:S+RlT6ue
>>733
>>734のいう感じで、過去分詞のつもり。
原則、命名で過去形なんか使わん。
自動他動は気にしなかったけど、そこはどっちでもよくない?

英語は言うほど詳しくないんだけども。w
0736デフォルトの名無しさん
垢版 |
2019/09/04(水) 23:40:05.53ID:1AbQmJ8B
いやexpiredは形容詞だと思うけど、どっちにしろ
現時点までのある時点で「期限切れ」になってないものに使うのは変だと思う。
0737デフォルトの名無しさん
垢版 |
2019/09/05(木) 06:29:17.88ID:9D+N5xdb
>>734
英語として正しいことが目的じゃなくて、わかりやすい変数名でしょ
文法的に正しくても、一般的でない単語や言い回しだと読む人が混乱するんじゃね?
まあ、誰が読むのかって定義は必要かも知れんが

つまり、YukoukaDate,MukoukaDateにしろ
0738デフォルトの名無しさん
垢版 |
2019/09/05(木) 08:59:34.49ID:p9eUlRUA
開き直るならyukoukabi、mukoukabiもありだと思うよ
ただし和英混合ありなしとヘボン式なのか何なのかは厳格に
それで一貫してるシステムは割と開発しやすかった
0740デフォルトの名無しさん
垢版 |
2019/09/05(木) 23:39:58.60ID:8OdGH4bL
過去分詞の形容詞的用法って懐かしいよな
ちなみに未来完了形でwill have expiredという活用になることもある
いずれにしても話者の視点からは「失効した日」という意味になるから
おかしいと思うのは同感だ
0742デフォルトの名無しさん
垢版 |
2019/09/05(木) 23:58:09.84ID:8OdGH4bL
思い…出した!
obsolete dateだわ
対義語はeffective date
我ながら見事な回答と言うしかないが、日本人エンジニアからはインテリぶってると思われる諸刃の剣
素人にはおすすめできない
0743デフォルトの名無しさん
垢版 |
2019/09/06(金) 01:43:27.95ID:8Fs8S30Z
>>739
知ってるよ。
っていうか辞書引いてそれ言ってるのか

>>740の言う通りというか、いやちょっと違って、
もともと形容詞的な用法から派生したんだと思うが、今では独立した形容詞と見なされている単語だよ

expiredを過去分詞として使っているとしても(もちろん受動じゃなくて完了の意味で)
どっちにしろ現時点で過去になってない期日を表す言葉としては不適切だ

もう質問者さんどうでもいいみたいだけど、
こういう面倒な問題をスキップするためにも、>>729に書いたみたいに
可能なら期間を表す型を定義しちゃったほうがシンプルだね
0744デフォルトの名無しさん
垢版 |
2019/09/06(金) 01:45:26.86ID:8Fs8S30Z
>>729じゃなくて>>728だった
0746デフォルトの名無しさん
垢版 |
2019/09/06(金) 11:58:03.50ID:uS/8ghDY
URIが与えられて、そのURIが表すリソースの種別を判定するのですが、
例えば、Aリソース、Bリソース、Cリソースなど。
各種別ごとに下のようにメソッド用意するのもあれなんで、
bool isAResourceUri(Uri uri);
bool isBResourceUri(Uri uri);
bool isCResourceUri(Uri uri);

一つにまとめて
解析結果を表すクラス parseUri(Uri uri); //

みたいな感じにしたいです。解析結果を表すクラスのクラス名をお願いします。
parseUriの名前も変えた方がいいならお願いします。
0749デフォルトの名無しさん
垢版 |
2019/09/06(金) 18:14:38.78ID:RrO6Um6/
>>746
与えられるのが文字列ならparseでいいけど既にUri型になってるならparseは違和感ある
UriクラスにgetResourceType()みたいなメソッド追加すればいいんじゃね?
■ このスレッドは過去ログ倉庫に格納されています