クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
クラス名、変数名のつけ方に悩んだら書き込むスレです。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/ 考えかたはふつうかもしれないが、それをdeltaとは言わん、という話。 ついでにincrease rateも増加率・伸び率・上昇率みたいな意味だよ
増やすための割合じゃなく、増えた割合って意味が強いから
あんまり適切じゃない気がする
〇〇rateって名前にするのはいいと思うけど
その〇〇として適切な用語は>>61の情報だけじゃ分からん 500 ⇒ 650 にするなら
係数: 1.3
係数(%): 130
増分係数: 0.3
増分係数(%): 30
なので
(a) GetPercentOfIncrementalRate
(b) GetIncrementalRate
(c) GetPercentOfRate
(d) GetRate >>74
日本語でもだいたいそうだろ。
値の履歴について言うことが多いというだけで、べつにおかしくないんじゃね。 >>73
だからそんなことはないって
だから、お買い物のたとえないと算数が理解できない小学生かw
金額だろうが物理量だろうが、正規化された抽象的な無名数であろうが、
増分は増分ですってw 係数の質問者です。みんなありがとう。
リファクタリングしてたのはゲームプログラムでして、
攻撃力アップ、獲得経験値アップ、消費MPダウン、3Dモデルの表示サイズ等で使われてる。
日本語で総称すると何になるんだろう? ……ステータス強化?
百分率くらい自分で計算しろよと言うのは、そのとおりだと思う。自分も強く思う。
関数ポインタ的な使い方をしてる箇所が幾つかあるので関数化されてたほうが都合がいいだろうってのと、
一括置換でいけるだろうとはいえ処理の変更扱いになってしまうので手続き上ちょっと面倒くさい。
とりあえず、
GetFooRateInPercent
GetFooRate
GetFooMultiplierInPercent
GetFooMultiplier
で提案してみます >>78
俺ならrateとmultiplierって何が違うんだ同じじゃないのかと思っちゃうねw 頭の悪い奴に言ってもしょうがないから質問者にだけ言うけど、
rateとmultiplierはどちらもほぼ同じ意味だから再考した方がいいよ。
もちろん見直す必要があるのはrateの方。
これははっきり言って意味不明だ。
これで通じるのは「税率」のように本体からの上乗せ部分に注目している場合だけで、
水の質量を基準値の何倍にするかって言う場合に「質量乗数」は何倍にするかっていう
倍率だろうなと推測できるが、「質量率」って聞いて[基準値からの増加分]/[基準値]
のことだと分かる人は誰もいないはずだ >>78
そういうのだったんか
それならincrease rateでもおかしくないな
バフ・デバフともいうけど日本語の総称はステータス効果かな
自分ならEffectのうち乗算型のやつに.rateや.percentのプロパティつけとく
名前とは関係ないけど
0.3や30%を返すのと1.3と130%を返すのが同居してるのは
個々のeffectを適用する計算の責務がEffect側にあるのか
使う側にあるのか明確じゃない気がしてちょっと気持ち悪いかも >>81のいうようにrateが曖昧だというのは同意するが、
それに変わるものがdeltaだとやはり違和感がある
相対誤差みたいな気持ちで相対増分(relative delta)とかはどう? >>84
absolute deltaって言っても意味不明だからrelative deltaも意味不明だと思うよw
俺は単にdeltaで問題ないと思うが、どうしても気に入らないなら「上乗せ分」か「変位」かね
辞書みても上乗せ分はぴったりの語が見当たらないから、displacementか
でもdisplacementは1次元の移動量のイメージが強い気がするな あとは俺は冗長だと思うけど「正規化された差分」かね
normalized delta >>84
そもそも増分自体が相対的な感じだし w
30%アップ分をdeltaとか言う奴は今までに見たことないし恐らくこれからもないことを祈るわ rateは特に曖昧じゃないだろ
税率(tax rate)、成長率(growth rate)、割引率(discount rate)、
どれもrateの前にある名詞の率(rate)を指してる
質問者の例で言えば攻撃力アップ率は30%であって130%ではない
この場合の率(30%)に対して130%を表現する言葉が
日本語にも英語にも無いのが困るところ >>87
だから、では何と言えばいいでしょう。
何回も言うケけど、そう感じるのは君の思考回路が数学脳じゃないからだよ。
deltaって聞いて物理量の増減分しか連想できないのは算数の問題を
お買い物に置き換えないと理解できない小学生と同じ。 >>88
>>89はアンカーミス
正しくは>>81参照。
君は「質量率」って聞いて[基準値からの増加分]/[基準値]のことだと分かるの? >>91
「質量率」って言葉知らないからわからないんだよ
君の言ってることが正しいのかどうかもわからないし
その言葉の定義が書いてるサイトでも教えてくれるかな? >>92
このスレは一般的でない概念に名前を与えるスレなんだけどw
何訳のわかんないこと言ってるの?
論点はrateという単語から
[基準値からの増加分]/[基準値]
これを想像できるかどうか。
できるわけないでしょ。
>>81でrateが意味不明だと言ってるのはrateという言葉の意味が曖昧だと言っているのではなく、
>>78の
GetFooRateInPercent
GetFooRate
これを意味不明だと言っている まあとにかく、話の文脈追わずに短絡的に反応されても困惑するだけ >>88
倍率とかmultiplierとかで通じるでしょ。 あーー、「質量率」って自分で作った名前だったのか
分かってあげられなくてごめんね。。。。。
〇〇率 = 部分/全体(基準) は 部分の名前を〇〇に入れて使うのが一般的
税率、成長率、割引率、どれも同じパターン
質量率だけだと何が部分で何が全体なのかわからない
rateという言葉の曖昧さが問題じゃなくてネーミングの問題 >>97
そう言われるとそうだね。
ただ、単に倍率(multiplier)で済むときはいいんだけど
例えば税率や割引率に対応するのは何倍率と呼べばいいの?
消費税率 -> 消費税倍率?
攻撃力上昇率 -> 攻撃力上昇倍率? >>98
>税率
これは増減する量に関わる比率じゃない
>成長率、割引率
確かに経済成長率、人口増加率、前年同月比のように、経済や統計の指標では
[増減分]/[元の量]を〜率と言うことがあるが、これは、例えば減少局面では数値がマイナスになるようにしたい、
というような指標として分かりやすくするためだと思われる。
指標ではなく直接計算に用いるような実務的な比率の場合は、[変化後の値]/[元の値]を〜率という場合が多い。
e.g.. 増幅率、拡大率
俺は少なくとも質問者のケースでは後者だと思うが、それはどうでもいい。
何度も言うが、論点は
GetFooRate
これを見て[Fooの増加分]/[Fooの元の値]を意味していると分かるかということ。
分かかるわけないでしょ。
だから、文脈を無視して短絡的な反応をしない。 ただ、81-82で書いているように、Fooの増加分にFoo(例えば商品価格)とは別のbar(例えば消費税)
という概念があてがわれているのであれば、
GetBarRate
これはあり。 >>100
なるほどね
その2つはrateとratioの違いのように思えるけど
まあそういう捉え方をする人もいるということは理解した
俺は根底のロジックは、着目部分/全体(基準)でどちらも一緒だと捉えてるから平行線だわな
FooRateのときは、Foo/全体(基準)でFooに着目してるのであってFooの増加分に着目してるのではない
拡大率は拡大サイズ/元サイズ、ただこれは部分全体の関係じゃなく比率の考え方から来てるので
英語でもrateという言葉は基本使われない >>102
平行線って意味がわからないよ。これは簡単な問題。
だから
FooRate
これを見て[Fooの増加分]/[Fooの元の値]のことだと分かるのかどうかはっきりしてくれ。
>>78ではそう意味で使われてるし、ここはそういうことを追及するスレのはずなんですが。
>拡大率は〜英語でもrateという言葉は基本使われない
"magnification rate"で普通に検索に引っかかるよw
余談だけど、rateとratioの違いだというのも全然違う
http://worldts.com/english-writing/eigo-ronbun31/index.html
によれば、どちらも同じ比率だが、ratioの場合は分母が自明の場合に使われる
(文章に分子を表す言葉しか現れない)ということらしい。 >>103
あれ、変だな。訂正
× ratioの場合は
○ rateの場合は >>103
質問者は結論を出したようなので、もうどうでもいいが、わかるかどうかについてはもっとどうでもいい。
用語定義や文脈などでわかれば充分なので。
たとえば実際、消費税率はconsumption tax rateというが、これについてもとの値がとか増加分がとかいうバカはいまい。
あんたは言っていいよ。w >>103
>これを見て[Fooの増加分]/[Fooの元の値]のことだと分かるのかどうかはっきりしてくれ。
分かるも何も、君の「質量率」以外にそういう使い方してるやついないから
攻撃力上昇率と攻撃力上昇倍率をrateとmultiplierで区別してるだけ
ここでのFooは攻撃力上昇であって攻撃力ではない
君の定義だと、攻撃力率になるけど誰もそんなこと言ってないよ
>"magnification rate"で普通に検索に引っかかるよw
それ間違えてる例だからww
調べるならちゃんと調べよう
もう面倒くさいから上の説明で理解できんならあとは好きにやってくれ >>105
何を言ってるのか意味不明
>>106
そういうのみっともないよ。
よっしゃ今日はこのぐらいにしといたるわ、ってか。
日本語でも同じこと
攻撃力上昇率
攻撃力上昇倍率
この2つを見て
攻撃力上昇率 = [攻撃力の増分]/[元の攻撃力]
攻撃力上昇倍率 = [増加後の攻撃力]/[元の攻撃力]
だと分かる人間がいるのか。いるわけないでしょ。
率も倍率もどちらも本質的に同じだからだ。
君の世界では競争率と競争倍率は違う意味なのか? しかし、すごいね
「rateとmultiplierでは何が違うのか読み取れない」>>79
「FooRateのrateは意味不明だ」>>81
っていう当たり前の事実にこれだけの説明が必要か?
っていうか、これだけ説明されてもたぶんまだよく理解してないんじゃないの?w incrementValue_percent とかでもいいんだけど、
一番多用するメソッドにつける名前としてはちょっと長いのよねぇ まあそうなんだけど
倍率の方をmultiplierなりrateなりにして、
もう一方を、少し遠めの言葉から選んでみたつもり。
絶対値みたいな言葉もあるし、
あとは自分みたいな英語さっぱり勢でも困らない単語ということで。 パーセントの値は計算時じゃなく表示時に使いたいんだろうから
数字のフォーマッティングをするクラスに任せたほうがいいかと
atk_increase = new Effect()
atk_increase.rate.to_percent() >>113
>>78
処理自体を関数にしたいんだとよ。
戦闘ルーチンをシステマチックに組み上げるためなんだろう。 >>114
もしそれが避けられないならEnum的なもので
decimalかpercentを引数として渡すようにするかな
atk_increase.rate(:persent)
でも表示用に数字をフォーマットする処理は
別途書いてるんだろうから二度手間だと思うわ 設計の話はNGって水を差すいつもの人が出てこない時は
その人自身がそれをやってる時だったりするのかなw
まあ俺ならRatioクラスを作るね。 命名がうまくできないのは設計がうまくいってない結果の場合もかなりあるのに
それを無視して設計の話はNGで命名だけってのは意味がないよね >>118
一般論としてはそう思うけど今回は微妙だね
まあ、どっちにしろこんな過疎スレでくだらないことに目くじら立てる奴の方が
確実にどうかしてるけどねw だからそういう奴のためのスレがあるっつってんだろ。
どうぞ正論に同意されている方々でやってください。無能なんですか?
設計・命名スレ
http://echo.2ch.net/test/read.cgi/tech/1477368563/
設計から喧々諤々されたい殿方は別スレがございますので、そちらをご利用ください。 >>115
質問者の現実のコードを想像できてないだろう。
そんな状態で、設計を非難し改めさせようとはおこがましいとは思わんかね? 仕方ない事だけどNormalizedってよく使うのに長すぎ
どっか偉い団体が頻出単語は標準的な省略形を定めてくれればいいのに ファイルの拡張子ごとに処理するクラスがあるんですが、そのクラスの静的メソッドとして、
処理できる拡張子かどうかを判定する静的メソッドを追加したいのですが
その名前をお願いします。 「処理する」の内容とあと言語のクラスメソッドの文法に依るけど、例えば
Class.canHandle(".xxx") >>127
なるほど。処理するの内容が何気に重要でしたね。すみません。
言語はC#で、アーカイブファイルを開くクラスですね。zipとか、それが拡張子ごとにある感じです。
そうすると「開く」??かなぁ・・? CanHandle、いいと思うけどな
あとはIsKnown(Extension)とか
静的メソッドだと
if (Hoge.CanHandle(ext))
...
else if (Hage.CanHandle(ext))
...
else if (Foo.CanHandle(ext))
...
ってなるのは必定で何だか泥臭いなとは思うけど、そこはスレ的に突っ込んじゃダメかね >>129
クラスクラスのインスタンスからクラスメソッド呼べないような言語あるの?
結局、サポートするコンテントタイプのリストを返すメソッドが欲しくなると思うけど オレなら、単純にisAcceptかなぁー
関係ないけど、静的関数を足すよりfactoryのクラス作って静的なインスタンス返すほうがいいとおもうんだ。
ステートフルパターンな感じに。。。 ありがとうございます。
Handle,Acceptのどちらかにしようと思います。 5chの板のスレ一覧のクラス(例えばThreadList)と各スレのクラス(Thread)があって、
・スレ一覧を更新するメソッド(各スレのログはダウンロードしない)
・スレッドを差分ダウンロードして新着レスを得る(最新状態に更新する)メソッド
にそれぞれ何という名前を付けますか?どっちもupdate()にしてるんですけど、同じ名前なのにやってることがだいぶ違ってなんかいまいちに感じます その専ブラがどのプラットホーム向けでいつリリースされるのかのほうが気になる。 >>134
updateはユーザーから見た動作であって実際のオブジェクトの動作はdownloadじゃないのかな?
知らんけど
と言う訳で
Download
DownloadUpdatedOnly ⇔ DownloadFull >>134
後者はrefreshとかどうか
ブラウザでページ更新して最新を取得するっていうときによく使われてる気がする >>136-137
参考になりました、ありがとうございます
ペーペーなので他にもユーザ目線の命名が多そう…見直します
>>135
すみませんただの練習用なんです><5chブラウザ腐るほどあるだろうし… get とfetchってどう使い分けたら良いですか? >>139
ググれ。
英語がらみでいっぱい見つかるから。 fetchなんて仰々しい言葉プログラミングではあんまり使わないと思うw ただ取るんじゃなくて「行って取ってくる」のが fetch だとググって知った。
ワンコがフリスビーとってくわえて戻ってくる感じ。
FreeBSD だと wget のかわりに fetch っていうコマンドを使うし
プログラミングではDBとのやりとりの時に使うことがあるね。
どうやって使い分けるのかっていうとうーん・・・ まあ、比較的高価だったり重かったり間に通信が入ったりする処理であることを
意識させる必要がある時ぐらいかね。
CPUがコアの外側のメモリから命令を拾ってくるのをフェッチっていうのも
そういうニュアンスなんだろうたぶん あるDLLをロードしたとき、そのDLL内部で使う情報を色々初期設定するために
InitializeDllって関数を作ったとき、それに対する終了処理としてつかう関数名は、
FinalizeDll?TerminationDll?どっちの名前を採用しますか?
もしくはもっと別の名前? >>145
finalizeに一票。
terminateは、後始末というよりも、本当に終了させる感が強すぎない? >>145
どっちでもいいでしょw
どぢらでも意味は分かるし誤解のしようもない。
ついでに変なサフィックスもいらない
Initialize/Finalizeで十分では?
名前異空間が使えなくてバッティングを避ける目的ならHOGE_Initialize
みたいにプリフィクスでやるのが普通じゃない? 補足しますと、元々DLLがロード・アンロードされるときに呼ばれるDllMainに渡される引数
DLL_PROCESS_ATTACHとDLL_PROCESS_DETACHで初期化処理終了処理を
突っ込んでたんですが、調子に乗って色々やり過ぎて不具合起こしたので
改めて明示的にEXE側から呼び出す初期化終了関数を作ったのでした。
(MSDNにも注意点として書かれれた)
そこで名称に疑問符が。
>>146
同感なのですが、後々DLLのアンロード時(アプリ終了時)に実行することを考えると
terminateもアリなのか?と思ってしまいました。
>>147
Initializeのイメージと被る感じがします・・・
>>148
まあどっちでもいいかもですがw
サフィックスはもうちょっとちゃんと考えますね。
finalizeで行こうと思います。
皆さんありがとうございました。 >>149
>後々DLLのアンロード時(アプリ終了時)に実行することを考えると
それは使う側の都合じゃね?
>>146でいいと思うよ goodsとかnewsと言った単数にしない単語をモデル名に使いたいとき、皆様はどのようになさるのでしょうか。productやarticle, postと言った別の単語で置き換えるのでしょうか。
置き換えると意味的に微妙に違和感が出るケースでしたので質問させていただきました。
参考
goodsが使われるケースがないか探している中で、ZOZOTOWNのAPIがgoodsを使っているのを見つけました。モデル名はどうしているのでしょうね...。 >>151
面白そうだからググってみたけど、その手の単語ってそうは多くないみたいね
http://www1.odn.ne.jp/xenom/gohou.box/gohou1.html
それを集約するオブジェクトがあって複数形が使えた方が都合がいいなら複数形がある別の可算名詞に
置き換える、そうじゃなきゃそのまま使う
まあ、柔軟に対応でいいんじゃないでしょうか >>152
どうもありがとうございます。柔軟に対応します。 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 指定したプロセスのメモリ使用量を表示する場合名前は何にしますか?
具体的にはタスクマネージャのプロセスタブにあるメモリ (プライベート ワーキング セット)の値をX秒毎に取得してその値を表示するプログラムです
SurveillanceProcessMemory?
CheckProcessMemory?
ViewProcessMemory?
WatchProcessMemory?
etc・・・ 何の名前?
表示を更新するUIのメソッド名?
それともアプリ自体の名前? その時点の情報表示 ViewProcessMemory
情報を監視(垂れ流し表示) WatchProcessMemory
なイメージ
checkは抽象的でよく分からない 見ることではなく、見せるものであれば、「Show」とか。 Monitorじゃねって混乱させたり、
Memoryの中見るんじゃなくて使用量見るんならMemoryUsageとかMemoryUseだよねとつっこんでみたり。 そもそもexeの名前なんだから
俺のメモリー.exe
とかでいいだろ 先頭が数字で半ば固有名詞扱いになってるものを識別子にしたい場合のお約束ってなんかある?
3D Y/C分離とか3次元ノイズリダクションとか
セットアップレベルの0IREとか7.5IREとかを読みやすさを損なわずに列挙体メンバにしたい 月並みなことしか言えんけど...
■ 先頭が数字の名前の対処法
(1) 先頭にアンダーバーか適当なプリフィクスを付ける
_3DYCSeparation
m3DNoiseReduction
(2) アラビア数字の代わりに英単語で
ThreeDimensionsYcSepartion
■ 小数点
電気屋は小数点をSI接頭辞やRで置き換えるんだった気が...
_7R5Ire
4.7kΩ = _4k7Ohm
自分は小数点をpで置き換えたことがある
_7p5Ire 公開する名前をアンダーバー始まりにするのは認めないぞ。
絶対の絶対だ。 誘導されて来ました
ネット上のAPIを叩いて、情報を取ってくるメソッドの名前って
どんな感じにつけたらいい?
例えば、どこかのサーバーにアクセスして天気予報データをJSONで
取ってくるケースだと、どういう名前にしたらいいか教えてください 天気予報といえばこのURLだしフォーマットもJSON以外ありえないという前提なら、
FetchWeatherでいいだろ。
もっと大げさに指定したいならFetchWeatherDataFromUrlInJsonとか。 >>165-166
やっぱこういうのは fetch >>139-144 がしっくりくるね >>166
>>167
ニュアンス的にはfetchがあってそう
サンキュー つか、メソッド名はクラス設計とも関係してて、
主語のクラス名も明確にしてくれないとどのメソッド名(動詞)が一番しっくりくるか変わるし。
俺は、例えば、天気予報情報を提供するREST API経由のXXXサービスがあるとすると、
クラスとしてXXXWeatherClientクラスみたいの用意して、
メソッド名にGetWeatherInfoでGetで十分だわ。
クラス名がどこから取得するか物語ってる事になるし。ローカルキャッシュされたものを取得するなら
適当に、LocalCacheWeatherClientとか。
だから、俺はこんな設計に大抵するからGetで十分だな。 抽象化してもしなくてもいいが、例えば
interface IWeatherClient
GetWeatherInfoAsync():
用意して、
class XXXWeatherClient : IWeatheerClient
class YYYWeatherClient : IWeatherClient
class LocalCacheWeatherClient : IWeatherClient
だから、クラス名の方がどっから取ってくるか物語るのでメソッド名は汎用的・抽象的なGetで十分かな。
こういう設計する場合は。 API呼ぶの1か所だけだし、抽象化もいらねぇしとかなら
class WeatherUtillity
static FetchWeatherInfoAsync
でstaticメソッドあたりにしてこれなら名前はFetchでいいかなとは思うけど。 getの話はさんざんされてるけど、言語の慣用によっては、
属性のゲッター的軽い処理と見誤られることがあるので注意すべき。 まぁ、長々書いたけど、
Twitter APIとかDropbox APIとかいろんなREST APIのラッパーライブラリ
を見ると、Fetchを使ってるのはほぼ見ないかな。ほとんどGetだと思う。 ■ このスレッドは過去ログ倉庫に格納されています