X



クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001ネミ子
垢版 |
2017/05/07(日) 18:01:52.03ID:akuyRduv
クラス名、変数名のつけ方に悩んだら書き込むスレです。

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

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part27
http://echo.2ch.net/test/read.cgi/tech/1476572490/
0115デフォルトの名無しさん
垢版 |
2017/09/24(日) 15:03:53.37ID:uS0xIQvj
>>114
もしそれが避けられないならEnum的なもので
decimalかpercentを引数として渡すようにするかな

atk_increase.rate(:persent)

でも表示用に数字をフォーマットする処理は
別途書いてるんだろうから二度手間だと思うわ
0116デフォルトの名無しさん
垢版 |
2017/09/24(日) 15:31:27.46ID:U4nAGnPY
設計の話はNGって水を差すいつもの人が出てこない時は
その人自身がそれをやってる時だったりするのかなw

まあ俺ならRatioクラスを作るね。
0118デフォルトの名無しさん
垢版 |
2017/09/24(日) 16:07:11.25ID:uS0xIQvj
命名がうまくできないのは設計がうまくいってない結果の場合もかなりあるのに
それを無視して設計の話はNGで命名だけってのは意味がないよね
0120デフォルトの名無しさん
垢版 |
2017/09/24(日) 16:31:31.90ID:U4nAGnPY
>>118
一般論としてはそう思うけど今回は微妙だね

まあ、どっちにしろこんな過疎スレでくだらないことに目くじら立てる奴の方が
確実にどうかしてるけどねw
0121デフォルトの名無しさん
垢版 |
2017/09/24(日) 16:32:09.42ID:J5jaZAG3
だからそういう奴のためのスレがあるっつってんだろ。
どうぞ正論に同意されている方々でやってください。無能なんですか?

設計・命名スレ
http://echo.2ch.net/test/read.cgi/tech/1477368563/

設計から喧々諤々されたい殿方は別スレがございますので、そちらをご利用ください。
0122デフォルトの名無しさん
垢版 |
2017/09/24(日) 16:53:26.87ID:BVMVs4QW
>>115
質問者の現実のコードを想像できてないだろう。

そんな状態で、設計を非難し改めさせようとはおこがましいとは思わんかね?
0124デフォルトの名無しさん
垢版 |
2017/10/03(火) 21:21:41.83ID:3+KZIdY7
仕方ない事だけどNormalizedってよく使うのに長すぎ
どっか偉い団体が頻出単語は標準的な省略形を定めてくれればいいのに
0126デフォルトの名無しさん
垢版 |
2017/11/02(木) 01:36:36.25ID:qgjuzQPR
ファイルの拡張子ごとに処理するクラスがあるんですが、そのクラスの静的メソッドとして、
処理できる拡張子かどうかを判定する静的メソッドを追加したいのですが
その名前をお願いします。
0127デフォルトの名無しさん
垢版 |
2017/11/02(木) 01:56:42.44ID:aYOFaFkK
「処理する」の内容とあと言語のクラスメソッドの文法に依るけど、例えば
Class.canHandle(".xxx")
0128デフォルトの名無しさん
垢版 |
2017/11/02(木) 02:01:05.56ID:qgjuzQPR
>>127
なるほど。処理するの内容が何気に重要でしたね。すみません。
言語はC#で、アーカイブファイルを開くクラスですね。zipとか、それが拡張子ごとにある感じです。
そうすると「開く」??かなぁ・・?
0129デフォルトの名無しさん
垢版 |
2017/11/02(木) 02:51:26.89ID:oBTHYZXz
CanHandle、いいと思うけどな
あとはIsKnown(Extension)とか

静的メソッドだと

if (Hoge.CanHandle(ext))
...
else if (Hage.CanHandle(ext))
...
else if (Foo.CanHandle(ext))
...

ってなるのは必定で何だか泥臭いなとは思うけど、そこはスレ的に突っ込んじゃダメかね
0130デフォルトの名無しさん
垢版 |
2017/11/02(木) 06:52:45.58ID:AeE8oNtK
>>129
クラスクラスのインスタンスからクラスメソッド呼べないような言語あるの?

結局、サポートするコンテントタイプのリストを返すメソッドが欲しくなると思うけど
0131デフォルトの名無しさん
垢版 |
2017/11/02(木) 23:09:34.30ID:ttIahPlC
オレなら、単純にisAcceptかなぁー

関係ないけど、静的関数を足すよりfactoryのクラス作って静的なインスタンス返すほうがいいとおもうんだ。
ステートフルパターンな感じに。。。
0134デフォルトの名無しさん
垢版 |
2017/12/27(水) 20:43:15.51ID:V1EFdajr
5chの板のスレ一覧のクラス(例えばThreadList)と各スレのクラス(Thread)があって、
・スレ一覧を更新するメソッド(各スレのログはダウンロードしない)
・スレッドを差分ダウンロードして新着レスを得る(最新状態に更新する)メソッド
にそれぞれ何という名前を付けますか?どっちもupdate()にしてるんですけど、同じ名前なのにやってることがだいぶ違ってなんかいまいちに感じます
0135デフォルトの名無しさん
垢版 |
2017/12/27(水) 21:37:23.78ID:q4iOOx1e
その専ブラがどのプラットホーム向けでいつリリースされるのかのほうが気になる。
0136デフォルトの名無しさん
垢版 |
2017/12/27(水) 23:05:30.53ID:xrH4goD9
>>134
updateはユーザーから見た動作であって実際のオブジェクトの動作はdownloadじゃないのかな?
知らんけど

と言う訳で
Download
DownloadUpdatedOnly ⇔ DownloadFull
0137デフォルトの名無しさん
垢版 |
2017/12/28(木) 01:24:24.92ID:GDDWlLSR
>>134
後者はrefreshとかどうか
ブラウザでページ更新して最新を取得するっていうときによく使われてる気がする
0138デフォルトの名無しさん
垢版 |
2017/12/28(木) 06:28:17.27ID:iIC53K2J
>>136-137
参考になりました、ありがとうございます
ペーペーなので他にもユーザ目線の命名が多そう…見直します

>>135
すみませんただの練習用なんです><5chブラウザ腐るほどあるだろうし…
0143デフォルトの名無しさん
垢版 |
2017/12/28(木) 23:07:16.13ID:Qj6V/Knj
ただ取るんじゃなくて「行って取ってくる」のが fetch だとググって知った。
ワンコがフリスビーとってくわえて戻ってくる感じ。
FreeBSD だと wget のかわりに fetch っていうコマンドを使うし
プログラミングではDBとのやりとりの時に使うことがあるね。

どうやって使い分けるのかっていうとうーん・・・
0144デフォルトの名無しさん
垢版 |
2017/12/28(木) 23:26:05.43ID:/lEDrM81
まあ、比較的高価だったり重かったり間に通信が入ったりする処理であることを
意識させる必要がある時ぐらいかね。

CPUがコアの外側のメモリから命令を拾ってくるのをフェッチっていうのも
そういうニュアンスなんだろうたぶん
0145デフォルトの名無しさん
垢版 |
2018/02/03(土) 02:30:03.15ID:1Zb7vqEQ
あるDLLをロードしたとき、そのDLL内部で使う情報を色々初期設定するために
InitializeDllって関数を作ったとき、それに対する終了処理としてつかう関数名は、
FinalizeDll?TerminationDll?どっちの名前を採用しますか?
もしくはもっと別の名前?
0148デフォルトの名無しさん
垢版 |
2018/02/03(土) 18:01:48.28ID:Rh9ysymE
>>145
どっちでもいいでしょw
どぢらでも意味は分かるし誤解のしようもない。

ついでに変なサフィックスもいらない
Initialize/Finalizeで十分では?

名前異空間が使えなくてバッティングを避ける目的ならHOGE_Initialize
みたいにプリフィクスでやるのが普通じゃない?
0149デフォルトの名無しさん
垢版 |
2018/02/03(土) 18:38:27.91ID:1Zb7vqEQ
補足しますと、元々DLLがロード・アンロードされるときに呼ばれるDllMainに渡される引数
DLL_PROCESS_ATTACHとDLL_PROCESS_DETACHで初期化処理終了処理を
突っ込んでたんですが、調子に乗って色々やり過ぎて不具合起こしたので
改めて明示的にEXE側から呼び出す初期化終了関数を作ったのでした。
(MSDNにも注意点として書かれれた)

そこで名称に疑問符が。

>>146
同感なのですが、後々DLLのアンロード時(アプリ終了時)に実行することを考えると
terminateもアリなのか?と思ってしまいました。

>>147
Initializeのイメージと被る感じがします・・・

>>148
まあどっちでもいいかもですがw
サフィックスはもうちょっとちゃんと考えますね。


finalizeで行こうと思います。
皆さんありがとうございました。
0150デフォルトの名無しさん
垢版 |
2018/02/04(日) 13:51:18.18ID:Bky4hvL+
>>149
>後々DLLのアンロード時(アプリ終了時)に実行することを考えると

それは使う側の都合じゃね?
>>146でいいと思うよ
0151デフォルトの名無しさん
垢版 |
2018/02/07(水) 15:10:28.31ID:BclnE8u9
goodsとかnewsと言った単数にしない単語をモデル名に使いたいとき、皆様はどのようになさるのでしょうか。productやarticle, postと言った別の単語で置き換えるのでしょうか。
置き換えると意味的に微妙に違和感が出るケースでしたので質問させていただきました。

参考
goodsが使われるケースがないか探している中で、ZOZOTOWNのAPIがgoodsを使っているのを見つけました。モデル名はどうしているのでしょうね...。
0152デフォルトの名無しさん
垢版 |
2018/02/07(水) 16:59:58.39ID:izr6WB3M
>>151
面白そうだからググってみたけど、その手の単語ってそうは多くないみたいね
http://www1.odn.ne.jp/xenom/gohou.box/gohou1.html

それを集約するオブジェクトがあって複数形が使えた方が都合がいいなら複数形がある別の可算名詞に
置き換える、そうじゃなきゃそのまま使う

まあ、柔軟に対応でいいんじゃないでしょうか
0153デフォルトの名無しさん
垢版 |
2018/02/07(水) 21:17:32.06ID:3BT7o9wr
>>152
どうもありがとうございます。柔軟に対応します。
0154デフォルトの名無しさん
垢版 |
2018/02/16(金) 06:10:05.04ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0155デフォルトの名無しさん
垢版 |
2018/04/10(火) 09:53:35.09ID:Kfr8PFFs
指定したプロセスのメモリ使用量を表示する場合名前は何にしますか?
具体的にはタスクマネージャのプロセスタブにあるメモリ (プライベート ワーキング セット)の値をX秒毎に取得してその値を表示するプログラムです
SurveillanceProcessMemory?
CheckProcessMemory?
ViewProcessMemory?
WatchProcessMemory?
etc・・・
0157デフォルトの名無しさん
垢版 |
2018/04/10(火) 14:10:33.38ID:RE4Ll6H9
その時点の情報表示 ViewProcessMemory
情報を監視(垂れ流し表示) WatchProcessMemory

なイメージ

checkは抽象的でよく分からない
0159デフォルトの名無しさん
垢版 |
2018/04/10(火) 21:31:43.12ID:rwK1ezW+
Monitorじゃねって混乱させたり、
Memoryの中見るんじゃなくて使用量見るんならMemoryUsageとかMemoryUseだよねとつっこんでみたり。
0161デフォルトの名無しさん
垢版 |
2018/04/19(木) 02:14:10.85ID:QzBHelKx
先頭が数字で半ば固有名詞扱いになってるものを識別子にしたい場合のお約束ってなんかある?
3D Y/C分離とか3次元ノイズリダクションとか
セットアップレベルの0IREとか7.5IREとかを読みやすさを損なわずに列挙体メンバにしたい
0162デフォルトの名無しさん
垢版 |
2018/04/19(木) 03:11:55.95ID:II5zdCld
月並みなことしか言えんけど...

■ 先頭が数字の名前の対処法

(1) 先頭にアンダーバーか適当なプリフィクスを付ける
_3DYCSeparation
m3DNoiseReduction

(2) アラビア数字の代わりに英単語で
ThreeDimensionsYcSepartion

■ 小数点
電気屋は小数点をSI接頭辞やRで置き換えるんだった気が...
_7R5Ire
4.7kΩ = _4k7Ohm

自分は小数点をpで置き換えたことがある
_7p5Ire
0163デフォルトの名無しさん
垢版 |
2018/04/19(木) 18:25:39.74ID:5inohPPn
公開する名前をアンダーバー始まりにするのは認めないぞ。
絶対の絶対だ。
0165デフォルトの名無しさん
垢版 |
2018/04/23(月) 19:10:14.27ID:A/jct/5p
誘導されて来ました

ネット上のAPIを叩いて、情報を取ってくるメソッドの名前って
どんな感じにつけたらいい?
例えば、どこかのサーバーにアクセスして天気予報データをJSONで
取ってくるケースだと、どういう名前にしたらいいか教えてください
0166デフォルトの名無しさん
垢版 |
2018/04/23(月) 20:50:16.54ID:lPog2avr
天気予報といえばこのURLだしフォーマットもJSON以外ありえないという前提なら、
FetchWeatherでいいだろ。
もっと大げさに指定したいならFetchWeatherDataFromUrlInJsonとか。
0169デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:12:36.34ID:ZKUvPQBu
つか、メソッド名はクラス設計とも関係してて、
主語のクラス名も明確にしてくれないとどのメソッド名(動詞)が一番しっくりくるか変わるし。

俺は、例えば、天気予報情報を提供するREST API経由のXXXサービスがあるとすると、
クラスとしてXXXWeatherClientクラスみたいの用意して、
メソッド名にGetWeatherInfoでGetで十分だわ。

クラス名がどこから取得するか物語ってる事になるし。ローカルキャッシュされたものを取得するなら
適当に、LocalCacheWeatherClientとか。
だから、俺はこんな設計に大抵するからGetで十分だな。
0170デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:17:38.91ID:ZKUvPQBu
抽象化してもしなくてもいいが、例えば
interface IWeatherClient
 GetWeatherInfoAsync():
用意して、
class XXXWeatherClient : IWeatheerClient
class YYYWeatherClient : IWeatherClient
class LocalCacheWeatherClient : IWeatherClient
だから、クラス名の方がどっから取ってくるか物語るのでメソッド名は汎用的・抽象的なGetで十分かな。
こういう設計する場合は。
0171デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:23:33.68ID:ZKUvPQBu
API呼ぶの1か所だけだし、抽象化もいらねぇしとかなら
class WeatherUtillity
 static FetchWeatherInfoAsync
でstaticメソッドあたりにしてこれなら名前はFetchでいいかなとは思うけど。
0172デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:25:00.97ID:fm62Hv3K
getの話はさんざんされてるけど、言語の慣用によっては、
属性のゲッター的軽い処理と見誤られることがあるので注意すべき。
0173デフォルトの名無しさん
垢版 |
2018/04/24(火) 19:31:36.38ID:ZKUvPQBu
まぁ、長々書いたけど、
Twitter APIとかDropbox APIとかいろんなREST APIのラッパーライブラリ
を見ると、Fetchを使ってるのはほぼ見ないかな。ほとんどGetだと思う。
0174デフォルトの名無しさん
垢版 |
2018/04/24(火) 20:13:15.61ID:DxRUWE0G
まあ、混在がない(FetchXxxだけでGetXxxがない)かつ、
全部をGetXxxにしてもそれが何を意味するか文脈的に自明なら全部Getでも問題ないねたぶん

でもpublicなメソッドは全部FetchXxxでも非publicなGetXxxメソッドが
存在するような場合は、使う人は良くても書いたり保守するのは混乱するかもね
0175デフォルトの名無しさん
垢版 |
2018/04/24(火) 21:51:29.46ID:UZrLd4N8
そんなん気にしてるのおまえらだけやぞw
しかも他人は絶対使わんやんおまえらのコードw
0176デフォルトの名無しさん
垢版 |
2018/04/24(火) 23:24:04.71ID:RWNhMG6P
REST APIの仕様であれば、Getばかりなのはそういうものなので、あたりまえ。
今回の質問者にふさわしいとは限らない。

プログラム全体と天気予報情報の関係によるだろ。
ほかのところはふつうにプロパティ参照みたいになってるのに、天気予報情報だけがサーバーに取得しにいくとかなら、それだけを特別にfetchと名付けるのは妥当。

つーか、質問者はもうfetchがいいって言ってるんだっつーの。w
0184デフォルトの名無しさん
垢版 |
2018/04/26(木) 21:22:57.77ID:gC2FApkc
文字型としてはchar32_tのみ、文字列型としてはUTF-8 stringを使う体系の名前
なんか格好いいのないですか
0189デフォルトの名無しさん
垢版 |
2018/04/27(金) 00:35:20.48ID:7vAN1kr9
StringUTF8_CharUCS4

かっこよくはないけど、字面のわかりやすさ重視で。

ほかのところ(Enum型名とか)でだいたいわかるのであれば、String_Char.UTF8_UCS4とかでも。
0190デフォルトの名無しさん
垢版 |
2018/04/27(金) 00:41:27.78ID:6Bhz5Awv
体系って言ってるんだからクラス名とかじゃないんでしょ
そもそもクラス名なら、内部でどういう符号化してるかなんて普通はどうでもいいはずw
0191デフォルトの名無しさん
垢版 |
2018/04/27(金) 00:51:53.60ID:W2h8WuA6
>>188 >>190
アバウトでごめん
例えばD言語のforeachだとUTF-8が入ったchar[]をdchar(char32_t)単位でループできるんだけど
そういうルールに従っていることを示せる、名前空間やプレフィクス等に使える名前みたいな……
0192デフォルトの名無しさん
垢版 |
2018/04/27(金) 01:01:21.64ID:W2h8WuA6
ずばりUCSにしてしまおうかとも考えましたがUnicode一般と区別がつかないですし
>>189で提案していただいたUTF_UCSみたいなのは"UTF"がそもそもそういう意味なので
格好悪いなあ、と
0193デフォルトの名無しさん
垢版 |
2018/04/27(金) 02:05:45.35ID:m8rmfrp+
振る舞わせたいことが決まってるならForeachableStrとか?
>>190も言ってるように「何で実装されてるか」を名前にするのはあんまり筋がよくない気がする
0194デフォルトの名無しさん
垢版 |
2018/04/27(金) 02:23:34.45ID:W2h8WuA6
>>193
クラス名ではなく、イテレート検索置換set/mapその他文字列関数やそれを用いる処理群に付ける名前で
既存のchar/string、wchar_t/wstring等のペアと区別するためのもの、と思っていただければ
0195デフォルトの名無しさん
垢版 |
2018/04/27(金) 02:47:42.29ID:6Bhz5Awv
正直そっちの世界よく知らんけど、単純に文字・文字列の順でそれぞれを
表すプリフィクスをくっつけちゃうとか。つまり、Uu8
0198デフォルトの名無しさん
垢版 |
2018/04/27(金) 11:26:33.92ID:3DjLi910
多重起動できる数を制限するのはなんて言う?
1つしか許さない場合もあれば2つまでは可能な場合もある
LimitMultiBoot、RestrictMultiBoot、他
0200デフォルトの名無しさん
垢版 |
2018/04/27(金) 12:22:21.74ID:BpdbHlVm
そもそも数なら数ってわかる名前にしろよw
基本がアカンのに凝るとこ間違っとるでw
0203デフォルトの名無しさん
垢版 |
2018/04/27(金) 13:27:06.30ID:Lc4wIlfn
>>201
実行ファイルを起動してできるプロセス = Instance

だったらMaxProcessesでもよさそうだけど、それだとまるで別のバイナリも含めた
実行可能なプロセスの数のような感じになっちゃう

そもそも質問文が曖昧に感じるけど、
プログラムが起動を許す自分の実体の最大値を表す数ならMaxInstancesでいいと思う
0204デフォルトの名無しさん
垢版 |
2018/04/27(金) 13:48:39.01ID:3DjLi910
>>202
多重起動できる数を制限する変数っておかしくない?
変数が何かするわけでもないし

>>203
プロセスもInstanceなんだありがとう
MaxInstancesだと「数」が格納されてそう

改めて言うと
自プロセスが多重起動できる数を「制限する」関数だから
動詞からはじめたい
0205デフォルトの名無しさん
垢版 |
2018/04/27(金) 13:51:21.38ID:+sB9m2tC
>>204
制限する個数を入れておく変数なら十分あり得るだろ
ていうか、MaxHogeっていうのはそういう変数や定数の名前にしかならんよ
0206デフォルトの名無しさん
垢版 |
2018/04/27(金) 14:04:49.98ID:Lc4wIlfn
>>204
じゃあLimitInstanceCountとか?

だけど、
if (getCurrentInstanceCount() >= MaxInstances) プログラム終了;
の方が分かりやすいと思うけどw
0207デフォルトの名無しさん
垢版 |
2018/04/27(金) 14:10:56.76ID:3DjLi910
>>205
変数を訊きたいなら「多重起動できる数はなんて言う?」になるのでは?

> 多重起動できる数を制限するのはなんて言う?
既に元の質問でこうなんだから変数はありえないとわかるし
そもそも例も動詞から始まってるんだから関数だとわかると思ったけど
それとも動詞から始まる変数もありなん?
0208デフォルトの名無しさん
垢版 |
2018/04/27(金) 14:16:37.58ID:3DjLi910
>>206
あぁごめん
そっちも変数だと思ってたのね
かみ合わないなと思ったらそういう事か

Limitにするよありがとう
0213デフォルトの名無しさん
垢版 |
2018/05/01(火) 17:59:48.31ID:csuC8ljm
invokeの意味はcallに近いからメソッドの呼び出しには相応しいけどプロセス起動には違和感ある
bootだとOSが起動しそう
start、launchあたりでいいんじゃないかな
プロセスであることに特段の意識を向けないならrunもイイと思う
0214デフォルトの名無しさん
垢版 |
2018/05/01(火) 18:32:13.66ID:IZMmswHj
callというより、summonだよ。
すごいやつを召喚する感じ。
commandの起動にはinvokeが一番ぴったりだよ。
■ このスレッドは過去ログ倉庫に格納されています

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