クラス名・変数名に迷ったら書き込むスレ。Part29
クラス名、変数名のつけ方に悩んだら書き込むスレです。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
設計などが話題になるのなら他のスレでどうぞ。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part28
http://mevius.5ch.net/test/read.cgi/tech/1494147712/ 命名の相談時に設計についてのアドバイスや指摘を受けてもよい
というかたには、下記の別スレがあります。
【命名スレ1】命名に悩んだらココへ (設計助言あり)
http://mevius.5ch.net/test/read.cgi/tech/1619279151/ コンパイラの進化で変数名を漢字にできるようになって久しいしこのスレの役割もほぼ終わったな スレの役割と言うより、5ch自体の過疎化と老人ホーム化が顕著で活発な人が居ない 変数名というよりUI側の日本語表記だけど、購入日付は hoge_date 時間は hoge_time となんの疑問もない変数名において
UI表記の方の日付が「購入日付」とするならば「購入時間」、「購入日」とするならば「購入時」とするべき?
みたいなお前らオレオレルールありますか?
「購入日」「購入時間」と書いたところでふとしょーもない疑問が 購入日時とするより分けた方がいいのか
購入日付より購入日
購入時より購入時間
購入時だと購入時に何かするのかってなるかもしれない 表記の文字数を合わせるかって意味ならそんなこだわりは無意味だと思うが、「購入時」じゃ
point of purchaseの意味になっちゃうし、「購入時間」ってのも日本語としてちょっと変じゃないかw
普通は「購入時刻」でしょう
店に入ってから会計するまでにかかった時間のことを言ってるなら話は別だけど 「時間」は、できれば使わないようにしてるかな。
datetimeかtimeかdurationか、はっきりしないから。 時間は単位hourのことでもあるので紛らわしいね
時刻です >>5で書いた通り最初は「購入日」という表現が普通かなと思っていたところ、
続けて「購入時間」と書いてからふとある意味国語表記的に「購入時間」に対する言葉は「購入日付」
にしないともしかしてダメなのかなと思った次第です
たしかに、そもそも皆さん仰る通り「時間」もおかしいですね
「購入日」の方はそのままで「購入時刻」が妥当ですね
対する言葉とかいう謎な考えは忘れます
どうもありがとうございました SearchPlus, UltraSearch
真面目に答えると単に複雑では的を得ず「何を」「どんな条件で」に依るんじゃないか complex search
compound search RichSearch, DeluxeSearch, GorgeousSearch SuperUltraGreatDeliciousWonderfulSearch SelectAsterFromTable1WhereCostGreaterThan3000Yen 守秘義務があるのでボカして言うけどモノは掲示板システムでクエリはこんな感じ
自分が所属してる全グループに所属してる全ユーザー
ユーザーの最新のアクティビティを添える
(アクティビティはログイン、ログアウト、レス投稿、レス編集、レス削除、グループ加入、グループ離脱などシステムイベントのことで種類は多岐に渡る
現行システムではイベントをエンティティとして管理しておらず、多数のテーブルを結合して取得している)
並び順は最新のアクティビティのタイムスタンプ
ページング機能付き GetUsersWithNewestActivity 「自分が所属してる全グループ」
「自分が所属してる全グループに所属してるユーザー」
「自分が所属してる全グループに所属してる全ユーザー 」
この辺の概念に名前をつけることを考えるといい
要件定義時に毎回「自分が所属してる全グループに所属してる全ユーザー」 と連呼してたのかな 引数込みで表現できればいいから極端な話GetUsersとかGetAllUsersで十分な場合もある
類似メソッドの存在次第 ページングも含めてクエリがベッタベタに特定画面向けの専用品に成り下がっていて、一切の転用の見込みがないなら、俺ならクエリ名も「○○機能向け一覧取得」みたいなものにする
あとNewestという語はだいたいLastで置き換えたほうが自然になることが多い それだとどんな条件でユーザーを絞りこんだのか、並び順がわからないかな >>21
なるほど
>>22
さすがにそれは大雑把すぎるかなぁ
>>23
多数の画面、バッチで使用するので画面専用の命名は困る 多数の画面とバッチで使うメジャーなクエリなら逆に、The・アクティビティ付きユーザー一覧取得くらいの名前でもいいかもな
たとえば所属にまつわる話がそのシステムにおける標準の閲覧可能範囲なのだとしたら名前に含めないことを検討する こう考えた方がいいと思うよ。
「その」検索がどんなに複雑だろうが特殊だろうが、
仮に別の検索が存在しないならメソッド名は単にSearchかFind、
せいぜい検索対象(ナニを探しているか?)をくっつけてSearchHogeで何も問題はないはず。
だから「その」検索が他とどう違うか、大事なのはそこでありそこだけだと思うんだけど。 検索という言葉を使ってるが>>18を読んだ限りでは
SearchやFindでの命名が適切なケースではなさそう 全ユーザーのアクティビティから対象ユーザーに関係(所属グループに属するユーザー)しているユーザーのものをフィルタリングって事? puts "緊急事態発生".red.on_yellow
って書ける着色ライブラリがあったとして
カラーコード明示するのがだるいからと
puts "緊急事態発生".error
puts "緊急事態発生".warning
puts "緊急事態発生".e
puts "緊急事態発生".w
とラップしたら意味不明? >>32
目的ベースで命名するのはいいプラクティスだと思う
ただし色を変更していることは分かるように str.error_color とか
もしかしたら色以外の表示もカスタムするかもしれないから例えば str.error_style とか
errorだけだとちょっと情報量がなさすぎるので、自分ならそのくらいは情報持たせるかな
1文字は今どき論外 >>32
loggerを使ってlog levelと出力先によって表示をカスタマイズしたほうがいい
logger.fatal(message)とかlogger.warn(message)にする
設計方面の話なので別の命名スレかRubyのスレで聞くといいかも >>32
他人にはかなり意味不明。
でも、場面や頻度なんかで関係者にはあきらかなら、ナシではないんちゃう。 質問者さんが何を聞きたいのかイマイチ不明瞭だけど、
書式をスタイルとして抽象化するのはHTMLやワードを出すまでもなく
ありふれた考え方で何も間違ってないでしょ >>37
書式を抽象化すべきケースじゃないという指摘に対して
書式を抽象化するのはありふれた考え方だから間違ってないって返しどうなの? >>38
そんなことどこにも書いてない。
それ以前に>>32からそんなこと(書式を抽象化すべきケースじゃない)
などということは読み取れない
大丈夫かこの人 読み取れないことが問題なんだよなあ
書式に名前をつけて再利用したいわけじゃないんだからさ ドヤ顔して答えたやつが全否定されてキレてる流れなのコレ? 質問者が納得すればいいんだよ
テンプレに納得できない人は別スレがあったよね?なんで行かないの?何で何回も繰り返すの? 何回も繰り返すのは別の人間だからだろ
テンプレ読めと地道に言い続けるしかない
いい変数名を付けるような奴はだいたい神経質だからスレが荒れがちで困る このスレはいつも荒れる
原因を作ってるやつはいつも同じ
自分が優れてると勘違いしてるから
何か指摘されると理性的に対応できない
スレの問題ではなく人の問題
キレやすい要注意人物が住み着いたスレというだけ 例として動詞から始まる名前使ってんのに
関数と思わず変数として話進めるような奴もいるな >>45
キレやすいというより反論されると人格否定されたと感じるタイプだろ
まあその結果キレるのかもしれないが 問題の発端が常に同一人物だと決めつけるのも危うくねーか
「ここまで全部オレの自演」というオチに持っていきたい布石なら感心するが でも、同一でなくとも少数だと思うなあ。
そんなアホばっかりやないやろ。w >>45
理性的に対応できないのはむしろ自信がないからだぞ 列の概念があるコンテナ(一次元配列やリストなど)を [a1, a2, a3, ...] 表すとします(an は要素)。
このとき、m を正の整数として、
[ [a1, a2, ... , am], [a2, a3, ... , am+1], [a3, a4, ... , am+2], ... ]
なるコンテナのコンテナをなんと呼ぶのが相応しいでしょうか。 >>55
RightShiftMatrix
しかし、その規則が一般的な物とは思えないので
規則だけ与えられて名前付けろって言われても無理がある気が
そのコンテナが問題領域において何を意味するのか?
そこから名前付けた方がいいんじゃないの? 行列計算上の意味があるのなら、その意味を名前にしたらええ。
でなければ、「コンテナA」でええんちゃう。w >>55
対称行列 (の一種) (m x m の正方行列なら)
でも対称性を特に使わないならもっと適当な名前があると思う >>55
MovAvgSer
目的からつけた方がよいかと。 >>55です。
今までいろいろな大きな計算の中でよく使ってきたパターンなので、
この際に抽出して名前を与えライブラリに加えようと思った次第です。
みなさんのアドバイスを参考に、もう少し自分で考えてみます。
ありがとうございました。 テンプレートを「tmpl」とするとき、それをもとに実体化したものの名前は?
「new」や「instance」がありそうだけど、「tmpl」と対称性がよくないところが落ち着かない。。。 >>65
実体化したものにはそれぞれ具体的な名前をつければいいのでは?
テンプレートとの関連を名前に入れるとしてもXXXテンプレートのXXXの部分だと思う
ピザテンプレートから作ったマルゲリータピザ
問い合わせテンプレートから作った納期問い合わせ そもそもテンプレがtmplだけなのが問題
「何の」テンプレートだよ
大事なのは「何」であって普通にそれを示す名前で良いでしょ
A_tmpl → A 或いは A_new とか
まあAが何かに依るんじゃね 聞きたいのは、テンプレートに対するインスタンスの総称か略称みたいな?
インスタンス個々についての話は不要。
>>67
もっと「インスタンス」感?がほしい。
「new」もそう。 インスタンスを作るテンプレートはクラスなので
なんでインスタンス感が欲しいのかがわからない
そこをもう少し説明してくれない?
テンプレートクラスでabstructに対するimplみたいなのが欲しいのならまだわかる
(implを付けるのはbad practiceだけど) 総称として原義に基づくならtemplateと対になるのはcopy
動詞のcopyと混同されそうな気もする copyがしっくりこないケースで、対義語感にこだわるならprototype v.s. ectypeというのもある >>70
クラス→インスタンスな狭義ではなく、テンプレート→実用物な、抽象的一般的な名前を期待。
あと、検索性とか対称性とか。
いわゆる「implみたいなの」といわれると、なんかこちらの期待にかなり近い気がする。
>>71
たしかに「コピー」か。w
実際にそれだとまぎらわしいよなあ。 >>73
既に指摘されてるけど、「ハンバーガーのレシピのテンプレート」
からできる物の総称は「ハンバーガーのレシピ」 >>72
辞書で調べてみたけど、「ectype」というのはかなり専門的な語?
(プロトタイプに対する)「模写物」【哲学?】はともかく、「極端な体型」【医学?】て何?w >>74
それは「総称」ではない。
いずれにしても、こちらの期待とは異なるし、不要だとすでに応じた。 >>76
ではそれをテンプレートと呼ぶのがそもそも間違っている。
テンプレートというのは少なくともプログラミングの文脈では、
機能の一部を注入または入れ替え可能な雛型のこと。
「葬儀のあいさつ文のテンプレート」からできるものの総称は
「葬儀のあいさつ文」だ。 まあ言葉の定義はどうでもいい。
彼の問題の本質は回答者にエスパー能力を求めていること。
あんたが何を求めているかなんてあんたがそれを正確に伝える努力をしなけりゃ誰にも分からない 質問者は他スレでよく人を小馬鹿にするアレな人なので相手にしないように >>77
あんたの解釈は、こちらとは異なる。
クレームは不要なんで、スルーで。
ほかの人に期待。 >>65
テンプレを適用したんだから「appl」とかでいんじゃね?
末尾がplで揃ってるし >>81
なるほど。
「application」→「appl」か。
いわゆる「アプリ」とかぶってるところが気にならなくもないけど、アリかも。
ほかに「instantiation」→「inst」とかかな?
まだほかの候補やヒントなどにも期待。。。 用途によっては「deploy」→「depl」とかもアリかな? ハンガリアンとかいつの時代だ
ダメな人は何やらせてもダメな見本だねw なんでダサい略称にしているのかは正直気になってた
ちんぷる >>86
「tmpl」のこと?
よくある略しかただと思うけど。
最初はかなりキモかったけど、もう馴れた。 >>73
>クラス→インスタンスな狭義ではなく、テンプレート→実用物な、抽象的一般的な名前を期待。
それを求めてる動機とかユースケースをもうちょっと説明してくれよって話だったんだけど
難しいのかな?
一般的には名前がつけられてない概念だから
動機もユースケースも無しに何かいい感じのをくれと言っても
期待するものが出てくる可能性は低いと思うよ >>90
難しいもなにも、書いた以上の想定はない。
いっそ概念的抽象的な名前の話。
出てこないなら出てこないでやむなしなんだから、スルーで。
なんか言える人に期待。 pragma:pragmaticとか?
語源のparagmであれば行動や実践を意味するらしいので。
英語苦手なので使い所が合ってんのか、語源のスペルが合ってるかはわかんね どうでもいいけど、鍋の鋳型からできる物は鍋、エンジンブロックの鋳型からできるものはエンジンブロック、
鋳型からできる物の総称は鋳物(cast)だが、このバカな質問者の求めているものはたぶんこれでもないw >>93
「pragma」はCのディレクティブとして知ってたけど、言葉の意味が辞書を引いてもよくわからんね。w
たしかに「実際」「実用」的な意味があるようだけど、たぶんニュアンスが違ってそう? プラグマティズムは普通に日本語になってるw
煽り抜きでこれ高校生レベルの知識だよw >>95
やっぱニュアンス違うかなぁ。テンプレ→実践·実用みたいな。もう連想ゲームだな
>>97
気を付けろよー。俺みたいなやつが世には溢れてるからなぁ まったくうるさいお客さんですね
representation
reproduction
concrete concreteってなんや?鉄筋コンクリートw
みたいな反応はやめろよな
「日付の変数名はどうすればいい?」
「date」
「おデートw 男女交際かw」
みたいな頭の痛い会話はもう勘弁 エイリアン(alien)のミニチュア?を見て
アリエンってなんだよw
を思い出した そもそもこの(バカ)客は自分の注文を正確に言葉にできてない(俺は本人自身にも分かってない
可能性を疑ってるがw)何をテーブルに運んでも「女将を呼べ!」って横柄な反応しか返ってこないよ
まあ、注文の内容が明確でない(表面上指定している物と実際に望んでいる物が異なる)
ことがはっきりした後でも注文に応えようとする奴もバカだから自業自得だけど。 >>95
pragmaはactやactionの意味で使われてる
コンパイラに対する指令 >>99
「product」はいいかも。
生成物、生産品の方向か。
>>100
複製的な意味が強すぎない?
テンプレートから生成されたことが失われ気味というか。
「concrete」は、そりゃあ抵抗あるでしょ。w
クラス継承の説明で見かけるから、そこまでじゃないけど。
>>104
それはわかってるけど、辞書的な意味からはつながりにくくない?
ということで、なんか候補やヒントがあればまだまだ募集。 昨日も書いたけどプラグマティズムって言葉を
本当に知らない人がいるんだなw
知ってりゃこのディレクティブのニュアンスなんて
なんとなくわかると思うんだけど
どっからactとかactionとか出てくるのw
違うって「環境その他の事情に合わせて現実的に実利主義的に行くぜ!」って意味だからw >>106
おいおい
pragmaの意味もpragmatism自体も
興味があるならもう少し調べてみれば? >>107
何が「おいおい」だw
なぜもったいぶらないで直接君の口で間違いを指摘しないの?w
バカじゃなかろうかマジで。 動いていればhensu1,hensu2,...でおk
型など気にせず宣言した順番で命名でよし カルビー「何でもテレワーク」工場視察からゆるい勉強会まで
建設業界の常識を覆す“攻め”の働き方改革【週休3日制】を4月からトライアル導入
残業大幅減でも利益は昨対比2倍に上昇!
労働時間すべて社外勤務OK。トラック業界の“先駆者”が新制度
日野、「副業」許可制度を新設 “経験”広げて本業に生かす
ダイハツが副業容認を本格検討、その狙いと新しい働き方とは?
東京海上、社内副業を解禁 ITとの協業など企画・立案
ダイドーグループ、「副業・副業受け入れ制度」を導入 配列変数名は単数系?それとも複数系?
例えば各リンゴの情報を格納する配列は
Apple[]?それともApples[]?
配列としては全部持ってるから複数な気もするけどアクセスする時は要素1個ずつだし・・・ 今時は普通は複数形でしょうね
Apple apple = apples[0]; 最大値は
MaxValu
って変数で良いです。
(過去に何度か実務で使ったが、誰も突っ込まなかった) デスクトップアプリケーション作ってて、複数のボタンを親フレームにまとめて配置してます
ボタン機能は入出力、テストや表示、操作など色々です
app.___.load_btnとかapp.___.test_btnとかいう構造のとき、親フレーム名はなんですか
app.console.load_btn? cmdpanel? btns? >>115
単数系+"List"。(AppleList)
List型じゃなくてCollections型でもArray型でもList。
自分も周りも英語分からんから、複数形だなんて高等な変換はできない。
言語によっては、というかPerlなら$Appleと@Apple。 >>121
SetかもしれないCollectionをListと呼ぶのは引っかかるなー
迷ったら愚直にCollectionにしてほしいよ
ミスリーディングなことを書かれるより個人的にはdatas、matchs、leafsのような間違えのほうがまだいい >>122
元コメはlistと言ってるだけで、orderedとは言ってないからセーフ!
きっとunorderedやsetも気にしないんやろ。
それに、collectionは長いからダメ。
clにするなら可。 テスト環境、本番環境
テスト環境がtestだったら本番環境は何が適切ですか? test environmentに対になるのはproduction environment
前者をtestと呼んでる文脈ならproductionと名付ける 別に製品とか物ってわけでなくてもproductなんですか release
beta
dev
test
debug
とか思ったけど、そういうことじゃないのかな
環境の定義をもっと明確にすればいいんじゃない? productは製品に限定されないよ
石油の産油量とか、人のプロデュースとかでも使われるように、活動によって生み出される成果物や価値のイメージが中心にある単語 演劇もプロアマ問わずproductionだし、物質的、知的に生産されるモノ全般にいえる そのものズバリの言葉があるのに日本人のフィーリングに合わないと採用されないもんかね
疑うならググって用例や、画像検索でおなじみの図が出てくるのを確認してみ ゲームのキャラのバフデバフで
回復魔法の「被回復量UP状態」と「与回復量UP状態」の
「被」と「与」の違いってどういう名前がふさわしいんでしょう? healingAmountとhealedAmountかな
ゲームなら多用する上に取り違えが致命的になるからこんな時こそアプリケーションハンガリアンが火を吹くときかもしれない
active, passiveとか、objective, subjectiveみたいな単語の省略形を付ける感じ >>134
ありがとうございます
回答もらっておいて申し訳ないのですが、
それだとどっちが「与」でどっちが「被」なのか
わかりにくいです…。 Sender_
Receiver_
ってのは?
あと given taken とか わかりにくいかもしれないから、その場合はアプリケーションハンガリアンにしてはどうかという提案なんだけどな 困った時の最終奥義
日本語変数名
割り切ってしまえば案外行けるけど
日本人限定プロジェクトになってしまう諸刃の剣 healUpTo
healUpFrom
toとfromで区別したらさすがわかるやろ。
英語としての正確性なんか知らん!w 関数名なんだけど
textA,textBを受け取って、Aが空文字でなければAを、そうでなければBを返す関数ってなんて命名する? coalesce
合体ってなんか違和感ありまくりだけどnull合体演算子なんかもあるからあちらさんにはしっくりくるみたい >>141
textA.if_empty(textB)
言語にもよるけど NULisB とか考えてたけど
> coalesce
COALESCEは引数に渡された値のうち、NULLではない最初の値を返すSQL関数です。Oracle、MySQL及びPostgreSQLで使えます。
まんまだなコレ。でも関数名から分かり難いのが難点か >>142-144
ありがとうございます!!!
知識も検索能力も低くて辿り着けなかった答えがこうも簡単に!感謝します!
>>143
ちなみに拡張メソッドが使えないVBAでの依頼だったため、今回はcoalesceで行きたいと思います
>textA.if_empty(textB)
すごく意味が伝わりやすいです!
ありがとうございました coalesceはnull専用だから誤解しやすくて良くないぞ
少なくとも前か後ろにblankかemptyをつけないと
ただこういう基本中の基本機能は独自に関数化するよりも各言語のイディオムを直接書いた方が可読性も保守性も高くなる場合が多い Makefileだと、$(or ...)という関数になってるな。
引数リストで、最初の非空文字列を返す。
たとえば、text_or(...)なんかもいいんでは? C言語にて。
複数の画像ハンドルへのポインタ列。
その個数。
どちらもhnを核に命名したいけど思い付かない。
構造体の要素なのでなるべく短い命名にしたい。