[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 19:05 / Filesize : 204 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

クラス名・変数名に迷ったら書き込むスレ。Part13



1 名前:デフォルトの名無しさん [2008/09/29(月) 13:13:43 ]
クラス名、変数名のつけ方に悩んだら書き込むスレです。

質問する人は、その変数に何を格納するのか(クラスだったらその役割)
プログラミング言語は何なのかを、それぞれ書いて、
いい変数名を思いついた人は、それに答えてあげましょう。

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

>>2 英和・和英・英英など各国語辞書と翻訳サイト。
>>3 類義語(シソーラス)辞書、図形・数式・数学用語の英単語。
>>4 関連スレと、いろいろな言語規約。
>>2-10 諸事情によりリンクがずれた場合。

前スレ。
◆ネーミング倶楽部◆: pc3.2ch.net/tech/kako/1035/10353/1035362308.html
Part1: pc5.2ch.net/tech/kako/1046/10465/1046541730.html
Part2: pc5.2ch.net/tech/kako/1058/10582/1058213523.html
Part3: pc5.2ch.net/test/read.cgi/tech/1067171530/
Part4: pc5.2ch.net/test/read.cgi/tech/1087209526/
Part5: pc8.2ch.net/test/read.cgi/tech/1109330204/
Part6: pc8.2ch.net/test/read.cgi/tech/1128266018/
Part7: pc8.2ch.net/test/read.cgi/tech/1144978008/
Part8: pc10.2ch.net/test/read.cgi/tech/1154448184/
Part9: pc11.2ch.net/test/read.cgi/tech/1168356029/
Part10: pc11.2ch.net/test/read.cgi/tech/1180146315/
Part11: pc11.2ch.net/test/read.cgi/tech/1191250784/
Part12: pc11.2ch.net/test/read.cgi/tech/1206118762/

210 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:15:41 ]
何語かわからない言語で書いたとすると、自分ならこんな雰囲気にするかもしれない。

class SerialPort
{
 static SerialPort Open(whichPort);
 Result Real(〜);
Result Write(〜);
Result Close();
}

211 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:17:53 ]
PortCommunicator にしとこうか

212 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:45:06 ]
そろそろポートじゃなくて、
ただのファイルIOと同じだということに気付いてもいいころだ

213 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 00:59:32 ]
それを言い出したら全部のI/Oが同じになってしまって、
デバイス固有の操作が扱いにくくならね?(ioctlみたいに)

214 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 01:15:14 ]
それを言い出したらも何も>>212は全然正しい認識じゃないから。
何だよファイルIOって。

まあディスク上のファイルだろうとデバイスだろうとデータの入出力は
同じストリームとして扱えるみたいな話を聞きかじって理解もせずに拡大解釈でも
してるんだろうけど。

215 名前:デフォルトの名無しさん [2008/10/10(金) 01:25:52 ]
何を拡大解釈してるって?

216 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 01:27:55 ]
過小評価してるんだろうな。

217 名前:デフォルトの名無しさん [2008/10/10(金) 01:36:47 ]
>>214はスーパーPHP使いなんじゃね?

218 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 02:35:25 ]
fncGetFileNamae



219 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 02:36:50 ]
public class PublicClass1

220 名前:デフォルトの名無しさん [2008/10/10(金) 02:40:52 ]
>>214
いくらなんでもソーセージをかじっちゃダメでしょw

221 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 02:52:55 ]
>>214はひどい

222 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 03:52:11 ]
>>215-221
自演乙

223 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 04:01:55 ]
>>222
恥かしい奴だな
>>214がどんだけかわかんねーの?
あ、俺は優しいから一応言っておくわ


>>222
本人乙

224 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 04:55:04 ]
>>215-223
自演乙


225 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 07:45:56 ]
>>214はそろそろ、COMとファイルのioctl以外のAPIの違いを説明すべきだ

226 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 08:27:11 ]
>>225
どっちもストリームとして扱えるというだけでしょ?
COMには、tellもseekもtruncateもfilelengthもownerもpermissionもない。

227 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:04:07 ]
>>215-226
自演乙

228 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 11:28:10 ]
>>226
>>255は間違ってる
COMとファイルIOの違いについて説明すべき
で、どちらもストリームとして扱える
以上



229 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 12:51:09 ]
>>255頑張れ

230 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:18:01 ]
英語の形容詞をそのまま変数名にするのはアリですか?
一番新しい要素をrecentと名づけるのをどう思います?

231 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 17:22:44 ]
公開しないなら別にそれでおk

232 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:19:13 ]
first、last、next、prev 等もよく使うし、問題ないかと

233 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 22:13:32 ]
サンクス

234 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 19:39:55 ]
形容詞の後ろについてる one とか thing が省略されてると思えば、
形容詞単体を名詞的に使うのもありだと思うけど。
the + 形容詞だけで名詞扱いで使うこともあるし。

235 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 19:47:34 ]
メソッド名は動詞、変数/クラス名は名詞でって良く言うけど
そんなに厳格に分けなきゃならんもんかねえ。

236 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 20:22:21 ]
>>235
なんか教条主義的な思考をする人みたいだね。

別に、誰か偉い人が言ったから/規約でそう決まっているから、「分けなきゃならん」
わけじゃない。

そうしないと(一般に)分かりにくくなる、という合理主義でしょ。
逆に言えば仮に規則を破ることでクラスや変数の役割がむしろ分かりやすくなるのなら
何も問題はないはず。

237 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 20:50:18 ]
>>236
レス感謝。

つまり主観(=分かりやすさ)が入るから決め事としてしまった方がいい、と。

238 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 18:59:22 ]
arr = [1,2,3]
item = arr.remove(1)
とやると
arr = [1, 3], item = 2
になるような「取り出す」メソッドって何がいいですかね。
extractがよさげなんだけどコンピュータだと元を残しつつ取得みたいな使われ方が多いような気がして。
deleteのついでに戻り値で返すおまけ機能にしちゃうのがいいのかな。



239 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 19:21:50 ]
remove

240 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 19:47:17 ]
removeAndGet

241 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 19:52:19 ]
takeとかpickとか

242 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 20:27:31 ]
Pythonではpopになってる

243 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 20:43:27 ]
remove

244 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:03:39 ]
fetch

245 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:20:30 ]
getとremoveでいいんじゃね。

そもそも1つのメソッドに複数の機能を持たせようとする時点で(ry

246 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:06:11 ]
>>238
そういう「行数を節約するだけのメリットと引き換えに」、「処理の直感性を犠牲にする」
処理が本当に適切かどうか再考すべきだと思う。

直感的に把握できないような処理だから命名に困るんだよ。

247 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:06:28 ]
それってスタックを実装したいってだけなのでは?
popだろ

248 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:08:51 ]
さらに一般化して splice



249 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:27:55 ]
rubyならslice!かな。

しかし、別に「複数の機能」でも「行数の節約」でもないだろ。
列から一つ取り出したいってのは、実世界でもあって不思議じゃない。
だからこそ、各言語で同じような基本処理が定義されているわけで。

250 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:31:46 ]
popAtだな。

251 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:35:11 ]
>>249
そう言われるとそんな気もしてきちゃうすまんw
では気を取り直して

PullOut
Steal

252 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:36:29 ]
インデックスで指定だからAtを付けた方がよかったか。

253 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 23:37:22 ]
Atとか付けるとSmalltalkやObjective-Cを思い浮かべてしまう

254 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:35:51 ]
GoTo() は禁止ですか?

255 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 13:16:03 ]
スペースで桁をそろえる件だけど、コードコンプリートの1版と2版を見比べるとおもしろいのにね。

256 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 13:24:10 ]
>255
流石に同じモノ2冊は敷居が高いなあ

257 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 21:30:55 ]
>>255
どうおもしろいのか教えてください

258 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 12:46:01 ]
>>255
1版は持ってる.
そろえないほうがいいって書いてあった.
2版はどう変わってるの?



259 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 18:52:30 ]
>>258
2版は持ってる.
そろえないほうがいいって書いてあった.

260 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:11:19 ]
わー、おもしろい

261 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 16:36:04 ]
255の笑いのツボはどうなっているんだ。

262 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 13:14:32 ]
class Hoge {
public:
  Fuga* XXXFuga(Fuga* pFuga)
  {
    Fuga* temp = pFuga_;
    pFuga_ = pFuga;
    return temp;
  }
private:
  pFuga_;
};

XXXFugaですが、XXXの部分はどんな動詞がいいですか?

263 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 13:15:51 ]
exchange

264 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 13:16:29 ]
>>262 replace

265 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 14:03:41 ]
setlocaleってこんなだよな

266 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 14:10:26 ]
swap

267 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 14:19:31 ]
reset か set

268 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:06:05 ]
>>263
わかりやすいんですが、関数名にはあまり使われない単語な気がして、単純な操作の関数につけるのはちょっと気になります。
>>264
わかりやすくて良いと思いました。
>>266
返り値はvoidで、引数に渡したものの内容が入れ替わってくるイメージがあります。
>>267
resetは、Hogeを生成直後の状態に戻すための変更というイメージがあります。
setは、最もシンプルでいいんですが、返り値なしのイメージが強くて、返り値がある関数は区別した方が良いのか悩みます。

setにしようかやめようか悩みます(set以外ならreplaceの予定)。
返り値がある関数にsetをつけることについて、皆さんは抵抗ありますか?



269 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:09:51 ]
そんなこというならset_and_getでいいじゃん

270 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:45:21 ]
265は無視ですかそうですか

271 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:50:40 ]
呼び出し側でgetしてからsetすればいいだけだろ。
なんでもラップして行数稼げれば勝ちみたいな歪んだ性癖は改めた方がいい。

272 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 16:28:59 ]
>>269
SetAndGetFugaと書くと、英語として汚くないですか?
>>270
すみません、標準ライブラリに返り値を返すset〜があるという意味でしたか。
setlocaleはメンバ関数ではないので、setter/getterが存在するオブジェクト指向とはニュアンスの違いを感じます。
>>271
行数を稼ぐとか言うのではなく、引数とメンバを交換する機能が必要なケースはあると思います。
262の例をget/setで実装すると、setを呼び出した時、pFuga_に格納されてる古いオブジェクトの寿命管理はどうなるの?と。
shared_ptrを使えば寿命管理は気にしなくてもよくなりますが、Fugaを使う場所全てshared_ptrに書き直さないといけなくなりますし、
破棄のタイミングをはっきりさせたい場合にも、問題になると思います。

やはりsetに返り値があるのは気になるので、replaceにします。
ありがとうございました。

273 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 17:38:41 ]
二つの仕事を一つで済まそうという例があると、行数稼ぎするなとか言うやつがいるが、
アトミックに動作しなきゃならん場合なんて山ほどあるんだから、ごちゃごちゃ言うな

274 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 17:50:20 ]
>>271
発想のレベルの低さに驚愕した

275 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 17:53:03 ]
setとgetをアトミックにやるんだぜっていう事を表現したいなら、
そのまんま SetAndGet みたいのがいいんじゃないの?
アセンブラでは test and set とかよくあるし。

276 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 21:55:00 ]
>>272
更新して一つ前の値を返す関数なんて割とありがちで、
使われているコードを見れば(必ずしも明示的な名前じゃなくても)それと分かるから
普通にsetでもいい気がする。

replaceでも意味は分かると思うけど、なまじ名前に意味がある分
コードをみて一瞬考え込むかもしれない。

277 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 21:57:21 ]
コレクションから指定条件(添え字とか)で削除して、削除したものを返す
なんてのもふつーにあるよな。


278 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:08:17 ]
上のpopのやつに話を戻したいのか?
質問者いなくなったみたいだけど。



279 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 02:28:57 ]
「条件Aを満たした場合、処理Bを行う。」というのが
プログラム中数箇所にあるので、これを関数(使用言語はCです)にしたいのですが、
どういう名前が良いのか悩んでます。

「条件A」は数行に渡ってしまう比較的複雑なもので、処理Bを行うかどうかの
判定にしか使われないものです。
このため「条件A」を満たしているかどうかを判定する関数を作るにしても
適切な関数名が思いつかず、現状は何の関数化も行わずにコピペを数回行うという
書いた本人も、読んだレビュアもがっかりするようなことを繰り返しています。


280 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 02:35:44 ]
>>279 コードの意味も目的も示さずに名前が決められると思うな。

281 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 02:41:55 ]
B_IfA()

282 名前:255 mailto:sage [2008/10/22(水) 03:37:32 ]
むわ。こんなにレスついてたなんて。ごめんね、遅くてorz

初版
単に見やすいと言うだけではなく、ひとかたまりの処理であることを明確にすることも可能となる
単にそろえただけで、処理の区別が明確とならない悪い例
EmployeeName   = InputName
EmployeeAddress = InputAddress
EmployeePhone  = InputPhone
BossTitle      = Title
BossDept      = Department

2版
この10年間で得た知識から、このインデントスタイルは見栄えはよいかもしれないが、
(中略)
面倒であることがわかった。

こんな感じです。

2冊あえて買ったという訳じゃなくて、改版されたから買っただけなんだけどね。

283 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 06:47:08 ]
つまり
悪い例=面倒

どうおもしろいんですか?

284 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 11:32:31 ]
初版における良い例。
EmployeeName   = InputName
EmployeeAddress = InputAddress
EmployeePhone  = InputPhone

BossTitle = Title
BossDept = Department

285 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 11:41:47 ]
あるデータをシステムに import / から export するクラスがあります。
これのクラス名には、なんという名前がいいでしょうか。
import だけ、または export だけなら XxxImporter とか XxxExporter でいいと思うんですけど、
両方を行うクラスについて、いい名前が思いつきません。
たすけてえらいひと。

286 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 12:00:54 ]
Xxx

287 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 12:40:53 ]
>>286
今は
DataImporter
とかなんで、これが
Data
となるのはちょっと。。。

288 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:03:07 ]
>>285 XxxPorter



289 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:23:21 ]
XxxTrader


290 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:24:50 ]
import + export = transport

291 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:29:34 ]
>>288
そうか、imとexの両方を行うんだから、それを外したporterというのはありそうですね。
>>289
import and export という意味なら、たしかにtradeまたはexchangeがいいのかもしれません。

アドバイスありがとうございました。検討します。


292 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:54:19 ]
DataImporterという名前がすでにまずいのでは。
適した名前空間の中に入っているから大丈夫だとするのであれば、Dataでも問題はないはず。

293 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:40:20 ]
>>292
Dataというモデルクラスがすでにあるので、むりです。
(実際には、DataはUserだったりItemだったりOrderだったりしますが。)

294 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:01:29 ]
DataIOとか。

295 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:30:18 ]
>>293
よく分かんないんだけどそのUserクラスにエクスポートメソッドをつけるのって愚かなことなの?
インターフェイスでもいいけど。

296 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:31:40 ]
要するにシリアライザ/デシリアライザ、なんでしょ?
一緒にしない方が分かりやすくないか?

シリアライザとデシリアライザを集約するクラス(Dataクラス?)が
Serializer.Save()とDeserializer.Load()を公開すれば必要十分に思うが。。

297 名前:1/2 mailto:sage [2008/10/23(木) 20:40:56 ]
class User {
  protected $_id, $name, $email, $password;

  public function __construct($id, $name, $email, $password)
  {
    $this->_id = $id;
    $this->_name = $name;
    $this->_email = $email;
    $this->_password = $password;
  }
}

298 名前:2/2 mailto:sage [2008/10/23(木) 20:41:45 ]
>>297つづき
class Hogehoge {
  function getUser($id)
  {
    //データベースからデータを取ってくる
    return new User($id, $name, $email, $password);
  }

  function getUsers()
  {
    //データベースからデータを取ってくる
    foreach () {
      $users[] = new User($id, $name, $email, $password);
    }
    
    return $users;
  }
}

$hogehoge = new Hogehoge();
$hogehoge->getUser(1234);
$hogehoge->getUsers();

みたいなことをすためのHogehogeのクラス名ってどんなのがいいですか?
ちなみに上のやつはPHPです。



299 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 20:52:11 ]
Useless

300 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:09:01 ]
MyDatabase

301 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:12:17 ]
>>297
PHPには静的メソッドとかクラスメソッドとかいう概念はないの?
あればUserクラスのメソッドにすればよさそうだが。


302 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:25:22 ]
ああ・・・そうします

303 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:35:27 ]
データベースへのアクセスをラップするクラスじゃなかったのか・・・

304 名前:デフォルトの名無しさん [2008/10/24(金) 15:46:21 ]
文字列の中から一文字置き換える関数を作った場合
関数の引数名はそれぞれどのような名にしますか?

305 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:48:17 ]
すみません
>>304ですが、C言語です

306 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:47:15 ]
引数は文字列、検索する文字、置き換え後の文字の3つ?

307 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:08:26 ]
char *s
char old_char
char new_char

308 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 18:13:59 ]
>>306
はぃ、



309 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 19:33:33 ]
searchやsubstituteなどを考えるより、old/newやbefore/afterの方がわかりやすい気がする

310 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 20:46:40 ]
newは予約語となっている言語があるので注意が必要。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<204KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef