X



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

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

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
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()みたいなメソッド追加すればいいんじゃね?
0750デフォルトの名無しさん
垢版 |
2019/09/06(金) 19:08:30.01ID:uS/8ghDY
そうですか、型はUriですね。もちろん、文字列にして内部でUriにしてもいいですが。
で、そのUriのパスのフォームからリソースタイプを判定するのですが。
Uriはビルトインクラスなので、メソッド追加できません。拡張メソッドみたいのもありませんし。
0751デフォルトの名無しさん
垢版 |
2019/09/06(金) 19:13:06.97ID:uS/8ghDY
後、解析結果なんですが1つのリソースタイプだけじゃなく複数の情報が返されるのです。
たから、現状クラス名がUriParsedResultとかにしてて..

後parse以外にanalyzeとか思いつきましたがなんか大袈裟というか
0752デフォルトの名無しさん
垢版 |
2019/09/06(金) 19:15:06.10ID:uS/8ghDY
最初のbool isAResourceUri
で、返される情報は1つだけみたいな誤解を与えてしまいましたすみません
0753デフォルトの名無しさん
垢版 |
2019/09/06(金) 19:59:09.78ID:aE1H8E8O
web全然知らんけど、要するに実際にファイルをwebから拾って中身を見て解析するわけじゃなく、
単純にパスの拡張子を見るだけってこと?

そうならそこを強調しないとまずいよねたぶん。知らんけど。
適当な名前空間に収まってる前提で
ResourceType PathParser.GetType(Uri uri)
0754デフォルトの名無しさん
垢版 |
2019/09/06(金) 20:24:08.80ID:uS/8ghDY
そうですね。実際にWebから中身拾ってくるわけじゃありません。例えば
http://hoge.com/users/[userId]
このUriならuserを表すuri
http://hoge.com/tweets/[tweetId]
このUriならtweetをあらわす

これを解析してどのリソースを表すかと、例えばuserを表すuriなら抜き出したuserIdも返す感じです
0755デフォルトの名無しさん
垢版 |
2019/09/06(金) 23:54:53.62ID:w2Tc9TX1
>>750
> Uriはビルトインクラスなので、メソッド追加できません。
言語がわからんけど(Javaのfinal classとかC#のsealed classとかで)派生できないようにされてるの?
0756デフォルトの名無しさん
垢版 |
2019/09/07(土) 00:34:21.80ID:lng4b11W
>>754
これ、そもそもURIはリソースを指しているんじゃなくて、
アプリケーション(?)の種類とそのパラメータを表してるんじゃないの?

その意味じゃ全然URIじゃないねw
0763デフォルトの名無しさん
垢版 |
2019/09/14(土) 19:11:22.43ID:TUFMAlcF
A, ファイルをバイナリとして開いて検索
B, 起動中のプロセスのメモリを検索

検索部分は共通した処理だから同じクラスでやりたい
この場合はクラス名何がいいかな?
MemorySearchとかだとBだけになるし
BinarySearchだとメモリもバイナリでいいの?ってならないかな?
0764デフォルトの名無しさん
垢版 |
2019/09/14(土) 20:18:51.13ID:nEO5MM+y
>>763
class BinarySearch {
public BinarySearch(String FileName){ … }
public BinarySearch(Pid ProcessId){ … }

}
みたいな感じでいいんじゃね?
0765デフォルトの名無しさん
垢版 |
2019/09/14(土) 20:53:18.08ID:ynHb/SwE
Binary searchは「二分探索」って意味になるからそれは避けたほうがよいと思う
0766デフォルトの名無しさん
垢版 |
2019/09/14(土) 21:20:28.76ID:hosEl+Of
>>763
検索対象のデータはストリームみたいに抽象化するんだろうから、
「何から」検索するかではなく「何を」検索するかに注目して
名前を付けた方がいいんじゃない?

だとするとざっくり検索って言われてもな感じ。
これだとFinderとかSeekerとかぐらいしか言いようがないよね
0770デフォルトの名無しさん
垢版 |
2019/09/15(日) 10:33:36.53ID:WyNEQ0+k
ありがとう

A, バイナリエディタの検索部分
B, メモリエディタの検索部分
検索部分だけのプロジェクトを作ってAとBに使い回すなら
両方で違和感の無い名前がいいよなってのが経緯

「何を」と言われると
 A, 修正箇所
 B, 値の変動に応じて絞り込み検索してアドレスを特定
こうなるから同じにせずに分けた方がいいのかなと思えてきた
でもやってる事は同じだから共通化させたいけどこういう時は分けるもんなんかな?
0771デフォルトの名無しさん
垢版 |
2019/09/15(日) 11:24:36.57ID:VKeDSGtj
>>770
よほど特殊な機能を持ってるなら別だけど単なる検索機能だけならコード量もたいしたことないだろうから俺なら別々にしておくと思う
0773デフォルトの名無しさん
垢版 |
2019/09/15(日) 12:48:53.00ID:lkQ+SOXM
簡単な名前でいいならBinaryDataSearcher
Dataみたいな語は情報量が少ないから削られがちだけど、この位置のDataを無造作に省略すると修飾先が変わっておかしなことになる
もう少し真面目に考えると、バイナリかテキストかという初歩的な分類用語よりも、エンディアンとか解釈した結果のバイトストリームを扱ってるならそういう名前の方が適切
ほかには多少語弊が生じるけど、お好みでProcessとかProgramとかExecutableあたりの語を使ってもいいかも
0774デフォルトの名無しさん
垢版 |
2019/09/15(日) 13:13:26.96ID:WGDoaeaE
>>770
要するに、

(1) ストリームの中から
(2) 指定されたバイト列に完全一致する場所を探す

ってことね。部分一致とか、パターンマッチと、CRC的な符号が一致するとか、そういうのじゃないわけだ。

じゃあ「バイト列の探し屋」か?
ByteSequenceFinderとかByteArraySeeker みたいな感じ?
0775デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:39:03.93ID:1CTIlTlw
Cで言えばstrstrのバイナリ版GNU拡張のmemmemだよね。
ファイルが対象だとしてもmmapすれば同じだし。
0776デフォルトの名無しさん
垢版 |
2019/09/15(日) 15:50:14.45ID:WGDoaeaE
もっと単純BytesFinderでもよかったか
0777デフォルトの名無しさん
垢版 |
2019/09/15(日) 16:44:36.00ID:PqHAhyXf
そこまで抽象化するなら検索アルゴリズムの実装になるから検索アルゴリズムの名前でいいんじゃ
0778デフォルトの名無しさん
垢版 |
2019/09/16(月) 08:48:03.32ID:f/9IJK5V
ありがとう

そう、完全一致だけで部分とかパターンとかは無し
この流れをヒントにして考えてみるよ

ありがとう
0779デフォルトの名無しさん
垢版 |
2019/10/21(月) 11:26:02.37ID:cJ8/Rgj7
テキスト検索で、検索ボックスに入力する文字列と検索対象の文字列(本文)はどう名付けるのが無難ですか?
0780デフォルトの名無しさん
垢版 |
2019/10/21(月) 12:13:57.58ID:VNGEIVP2
>>779
前者はkeyword?
後者は置かれる文脈次第だろうね。シンプルにtextで通じるならそれでいいと思う

他の候補は
target, targetText, scannedText, searchee

ググってみたがsearcheeって言葉は正式な英語じゃない(当たり前か)
でも意味は分かると思う
0781デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:48:15.35ID:qqa/WroJ
box, search という単語を変数名に入れた方がいいと思う
同じような変数が何種類か出てくることになると思うので
0783デフォルトの名無しさん
垢版 |
2019/10/21(月) 15:02:23.84ID:coWSyVCC
検索文字列はsearchStringがよく使われる印象
boxみたいにUIの形状に基づく変数名は本当にそれが妥当なのかよく考えてから付けたい
0785デフォルトの名無しさん
垢版 |
2019/10/21(月) 17:44:13.34ID:cifrZUYa
UI要素につける名前なのか
UIから受け取った検索文字列と検索対象文字列を一時的に格納するローカル変数につける名前なのか
それを渡す検索メソッドの引数につける名前なのか

コンテキストによって適切な名前は変わってくるから
それを共有しないと時間の無駄
0787デフォルトの名無しさん
垢版 |
2019/10/21(月) 21:00:10.44ID:VNGEIVP2
普通に考えれば>>779の人が検索ボックスと言ってるのは
その方が話が早いからでUI要素の名前を聞いてるわけではないと思うよ

英語のkeywordに相当する日本語って意外とないから。
検索文字列とか言っても見つけ出したい文字列じゃなくてスキャンされる方の
文字列を指してると誤解される可能性がある。
0788デフォルトの名無しさん
垢版 |
2019/11/13(水) 09:16:45.77ID:JAuzgMXK
例えば、Twitterのツイートがあります。ツイートが他のツイートへの返信の場合、
どのツイートへの返信かを表すIN_REPLAY_TO_TWEET_IDみたいのがあります。
で、この逆の関係を表現したいのです。
あるツイートがあって、このツイートへ返信してるツイートのIDsを表す場合
なんて名前がいいでしょうか?
0792デフォルトの名無しさん
垢版 |
2019/11/13(水) 11:20:16.90ID:ZW56FeJ7
連投すまん
上2レスをまとめて書いたらNGワードで蹴られたから分けてみたら通った
ERROR: Rock54: Warning:NG〜ってやつ
何じゃそら
0795デフォルトの名無しさん
垢版 |
2019/11/13(水) 15:07:27.24ID:dfS9RQP/
>>789で終わってたw
逆にこれ以外に何があるんだw

ついでに、IN_REPLAY_TO_TWEET_IDなんて意味不明だから
素直にparentとかした方がいいんじゃないの?
0796デフォルトの名無しさん
垢版 |
2019/11/13(水) 17:41:41.87ID:JAuzgMXK
in reply to tweet id は返信先のツイートのIDって意味じゃないですかね?確かTwitterAPI のJSONはこういう名前のフィールド持ってたから外人の人が命名しただろうから、盲目的に信じてたが、おかしいのか?
0797デフォルトの名無しさん
垢版 |
2019/11/13(水) 17:45:10.84ID:JAuzgMXK
Tweetクラスに、InReplyToプロパティとRepliesプロパティ追加しとげばいいか。どっちがどっちになりそうだけど仕方ないのか
0798デフォルトの名無しさん
垢版 |
2019/11/13(水) 17:47:41.19ID:Imemf4ry
in_reply_to_tweet_idってのはTwitter APIの仕様だから変えるのはいささか難しいだろうな
リプライオブジェクトを格納するrepliesと、リプライIDだけを格納するreplyIDsを名前で区別したい場合はある
名前に対称性を持たせるならreply_tweet_ids
0800デフォルトの名無しさん
垢版 |
2019/11/13(水) 18:03:10.32ID:JAuzgMXK
>>795のparentというアイデアを借りて、
単にParentとChildren。これじゃ何の親子関係か分かりづらい?のでReplyParentとReplyChildrenじゃくどい?

で最後InReplyToとReplies

皆さんはどれがお好みでしょうか?
0801デフォルトの名無しさん
垢版 |
2019/11/14(木) 00:23:50.76ID:Nc6xtndT
特定のツイートとリプライは1対Nの参照関係だけど親子関係ではないし
ドメイン用語にParentやChildは無いのでそういうのは入れないほうがベター
InReplyToとRepliesがいい
0802デフォルトの名無しさん
垢版 |
2019/11/14(木) 00:29:00.53ID:HNBp407z
いやいやいやw
フツーにツリー構造だからw
0804デフォルトの名無しさん
垢版 |
2019/11/14(木) 11:24:59.93ID:xkNbqoiZ
循環てw
明日書かれるツイートに今日返信できるのかwww
0805デフォルトの名無しさん
垢版 |
2019/11/14(木) 11:28:27.61ID:xkNbqoiZ
ついでに言うと、論理的には木構造は循環する可能性を必ずしも排除しないはず。
ツイートは循環なんかしないけどね
0806デフォルトの名無しさん
垢版 |
2019/11/14(木) 13:15:57.33ID:Nc6xtndT
>>802
ツイートとツイートの関係(=relationship)の話と
それをプログラムで扱う際にどういうデータ構造で表現するのかという話はレイヤーが違う
親子関係じゃないということとツリー構造で扱うということは両立しうる話

特定のデータ構造で扱うことを前提とした命名をすべき状況で
ツリー構造に依存した名前にしたければそうすればいい
0808デフォルトの名無しさん
垢版 |
2019/11/14(木) 18:48:28.45ID:VHDeJvx8
ツリー構造であるかどうかを議論してもしょうがないと思うぞ
ツリーの関係性を有するデータの名前に漏れなくChildrenをつけるべきか?
これは常には成立しないよな

ツリー以前に、単なる1:Nの親子関係を有するデータにも同じことがいえる
雇用関係ならEmployerとEmployeesが妥当であって、EmploymentParentとEmploymentChildrenという命名は拙い
■ このスレッドは過去ログ倉庫に格納されています

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