クラス名・変数名に迷ったら書き込むスレ。Part20
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/07/29(金) 21:32:01.00命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part19
http://hibari.2ch.net/test/read.cgi/tech/1293201229/
0021デフォルトの名無しさん
2011/08/09(火) 04:45:05.840022デフォルトの名無しさん
2011/08/09(火) 04:46:50.370023デフォルトの名無しさん
2011/08/09(火) 05:00:29.600024デフォルトの名無しさん
2011/08/09(火) 05:11:34.130025デフォルトの名無しさん
2011/08/09(火) 08:09:44.090026デフォルトの名無しさん
2011/08/09(火) 09:28:53.72initialでいいかな
0027デフォルトの名無しさん
2011/08/09(火) 09:38:22.21?
0028デフォルトの名無しさん
2011/08/09(火) 09:48:41.85カラム名なら単純に consonant で良いんじゃないの
それか index の代わりに idx とか key とか
0029デフォルトの名無しさん
2011/08/09(火) 09:50:46.69別におかしくないよ
char consonant[] = { ' ', 'k', 's', 't', 'n', 'h', 'm', 'y', 'l', 'w', 'g', 'z', 'd', 'b' };
int consonant_index;
0030デフォルトの名無しさん
2011/08/09(火) 11:38:07.650031デフォルトの名無しさん
2011/08/09(火) 11:52:56.561. ユーザーがクリックして、システムがそれを処理する前のイベント
2. ユーザーがクリックして、システムがそれを処理した後のイベント
3. Hoge を見つけた時に発生するイベント
4. システムがロードを開始する直前に発生するイベント
5. システムがロードを開始する直後に発生するイベント
6. システムがロードを就労した直後に発生するイベント
0032デフォルトの名無しさん
2011/08/09(火) 11:59:08.63OnClicked
OnFindXXX
OnBeforeLoad
OnLoading
OnAfterLoad
0033デフォルトの名無しさん
2011/08/09(火) 12:35:12.090034デフォルトの名無しさん
2011/08/09(火) 12:45:40.77OnClicked
OnHogeFound
OnLoadStarting
OnLoadStarted
OnLoadFinished
0035デフォルトの名無しさん
2011/08/09(火) 13:26:39.23PreとPostはおk?
0036デフォルトの名無しさん
2011/08/09(火) 13:43:45.54CikExtcnEv
GotHogeScatEv
TakeLoadngEv
EmitLoadngEv
WipeLoadngEv
0037デフォルトの名無しさん
2011/08/09(火) 13:46:21.59>>36
あまり略さない形式でお願いします!
パスカル・キャメルとかはどうでもいいかな
0038デフォルトの名無しさん
2011/08/09(火) 14:06:03.02糞すぎる
ネタにしてもつまらん
0039デフォルトの名無しさん
2011/08/09(火) 19:48:04.210040デフォルトの名無しさん
2011/08/09(火) 20:37:45.80まずどういうクラスのイベントなのかが分からないと話が始まらないと思うけど。
言語が何か知らないけど、普通はイベントといえどクラスのメンバというか、
クラスに属する何物かだよな。
0041デフォルトの名無しさん
2011/08/09(火) 20:46:50.251. onClick1
2. onClick3 (システムがそれを処理するイベントはonClick2)
3. hogeFound
4. loadReady
5. loadStarted
6. loadFinished
0042デフォルトの名無しさん
2011/08/09(火) 22:17:39.150043デフォルトの名無しさん
2011/08/10(水) 00:32:23.97どうせ大した根拠無いんだろうに。
0044デフォルトの名無しさん
2011/08/10(水) 00:41:10.42不規則動詞の活用が覚えられないからに決まってるだろ
0045デフォルトの名無しさん
2011/08/10(水) 00:48:25.900046デフォルトの名無しさん
2011/08/10(水) 01:12:46.29004731
2011/08/10(水) 05:40:30.27・1番、2番
マウス関連のイベントを発生させる Mouse クラスが、自身に登録されている全てのリスナーに通知するイベント
1番のイベントはキャンセル用の出力パラメータを持ち、キャンセルされたのであれば、2番のイベントが発生しない
004831
2011/08/10(水) 05:43:01.23ファイルなどのバイナリストリームからツリー構造のデータを読み込むメソッド LoadDataTree() があり、このメソッドの呼び出し中にノードオブジェクトへ通知されるイベント
4番 : LoadDataTree() が現在のノードの読み込みを開始する時に現在のノードに通知するイベント
1番イベントと同じく、イベントを処理してキャンセルすることができ、キャンセルしたのであれば LoadDataTree() メソッドは即座に終了する
3番 : LoadDataTree() が現在のノードの子ノードを見つけたときに、現在のノードへ通知するイベント
Hoge == 子ノードだね
004931
2011/08/10(水) 05:45:03.806番 : LoadDataTree() が現在のノードの読み込みを終了した時に、現在のノードに通知するイベント
0050デフォルトの名無しさん
2011/08/10(水) 16:04:37.380052デフォルトの名無しさん
2011/08/10(水) 20:21:40.820053デフォルトの名無しさん
2011/08/10(水) 21:15:24.65分かってると思うけど、発生順序が違うだけの同じようなイベントを定義するのは
あんまり良いことじゃない。
どうしてもという場合は、イベントを発生させるクラスにとっての意味ではなく、
リスナー側にやって欲しい処理で命名した方が分かりやすいと思う。(本来邪道臭い気もするけどね)
順序が欲しくなるのは、イベントハンドラ内で利用される別のオブジェクトのデータが
先に更新されている必要がある場合が多いだろうから。
005431
2011/08/12(金) 06:50:56.03> あんまり良いことじゃない。
複雑で分かりにくくなることであれば、そこはかとなく理解している
ただ、今まででそれが必要になったことがあるので尋ねた
イベントハンドラ名に「On」を付ける意見が多いな
言語によっても違うだろうけど、Onは付けるべき、付けないでもいい?
0055デフォルトの名無しさん
2011/08/12(金) 09:31:43.01005631
2011/08/15(月) 05:54:31.830057デフォルトの名無しさん
2011/08/17(水) 19:50:20.77コンストラクタの引数に取り、IHogeインターフェースを実装したHogeAdapterクラスが既にあります。
その逆バージョンのクラスの名前をお願いします。
IHogeインターフェースをコンストラクタの引数にとり、Hogeクラスの派生クラスの
名前です。
0058デフォルトの名無しさん
2011/08/17(水) 20:03:13.18いくら設計議論のスレでなくても、さすがにそれは根本的に考え方がおかしいといわざるを....
0059デフォルトの名無しさん
2011/08/17(水) 20:05:50.81いや、考えようによっては、名前を決めるということは設計に他ならないともいえる。
だから、設計に口出すのも似たようなもんだとも思える。
0060デフォルトの名無しさん
2011/08/17(水) 22:41:29.34具体的にはStreamクラスがあります。基本は派生クラスのFileStreamやらでストリームを
扱います。ただ、WindowsのCOMに渡すとき、COMのIStreamインターフェースを
渡す必要があるのですが、そのために、既にStreamAdpaterクラスが用意されてます。
また、COMから返るのはIStreamインターフェースなのですが、通常のライブラリ
では、Streamクラスをベースに扱うようにできてるので、逆バージョンがほしいのです。
0061デフォルトの名無しさん
2011/08/17(水) 22:46:02.420062デフォルトの名無しさん
2011/08/17(水) 23:35:44.87ではベタにComStreamAdapterとか。
まあこれでよければ質問しないかもしれんけどw
でも変に捻っても意味ないよねこういうのは。
アダプダーだと考えなければ、単にComStreamというのもあり?
0063デフォルトの名無しさん
2011/08/18(木) 00:47:55.23StreamAdapterのまんまでIStreamAdapterぐらいしか思いついていませんでした。
ありがとうございます。
0064デフォルトの名無しさん
2011/08/20(土) 09:56:05.41前とか先とか関連だと思うのですが...
0065デフォルトの名無しさん
2011/08/20(土) 09:58:10.48predecessor
かな?
0067デフォルトの名無しさん
2011/08/21(日) 22:01:19.31public:
void hoge(bool _isXXX){ // _isXXXはXXXであるか判定する処理を行うかのフラグ
if (_isXXX) isXXX();
...
}
private:
bool isXXX(){...} // XXXであるか判定する
}
ここではアンダーバーをつけて区別しましたが、isXXXの名前がかぶってしまいます。
引数の方のisXXXの命名がおかしい気はするのですが、なんて命名すればいいのでしょうか?
0068デフォルトの名無しさん
2011/08/21(日) 22:40:37.91返り値使わずに捨ててるし
0069デフォルトの名無しさん
2011/08/21(日) 22:44:25.26ああメソッドの呼び出しの部分は省略しすぎました。
XXXであるかの判定結果は利用してる物としてください。
0070デフォルトの名無しさん
2011/08/21(日) 22:50:11.76class C {
public:
void hoge(bool doCheckXXX){ // doCheckXXXはXXXであるか判定する処理を行うかのフラグ
if (doCheckXXX) isXXX();
...
}
private:
bool isXXX(){...} // XXXであるか判定する
}
0071デフォルトの名無しさん
2011/08/21(日) 23:19:25.82ストリームからデータを読み取る関数 long ReadLong(), bool ReadBytes(int size) などを持つ
シーク機能は持たない
が定義されているとして、このインターフェイスを使用する側に x バイト以上の読み取りを禁止させるアダプタークラスの名前を考えて欲しい
・Xxx クラス(またはインターフェイス): IBinaryReader インターフェイスから継承
void SetReadableBytes(int) 関数で読み取ることができるバイト数を設定することができる
設定されたバイト数を超える読み込みが発生したのであれば、その地点で例外なんたらかんたら
0072デフォルトの名無しさん
2011/08/22(月) 00:00:28.56ニュアンスがちょっと違ってくるかもしれんが、
Blocked という単語を付けてはどうだろうか
たとえば、IBinaryReaderBlocked、IBlockedBinaryReader とか
0073デフォルトの名無しさん
2011/08/22(月) 00:06:20.46その発想だと、IBinaryReaderを実装したXxxクラスをIBinaryReaderとして扱ったとき、
予期しない(チェック不能な)例外が発生しうることになる。
ちょっとおかしいのでは?
個人的にはIBinaryReader自体にストリームがサイズという概念を持つかどうかを
表すプロパティ(HasLengthとか?)を持たせた方が自然に感じる。
0074デフォルトの名無しさん
2011/08/22(月) 00:32:26.18多分君ら勘違いしてる
0075デフォルトの名無しさん
2011/08/22(月) 04:20:11.60007671
2011/08/22(月) 04:20:40.83参考にさせて貰う
自分で考えたのは
IBinaryZoneReader、IBinaryPartReader
こんな感じ
>>73
サイズという概念を持たないものが IBinaryReader だとして、サイズを持つものはどういう名前にするべき?
アダプタークラスなんて書いたのが混乱の元になっているのかもしれない
IBinaryReader 自体はソースストリームからのバイナリ形式の読み取りを行うためのインターフェイス
Xxx も基本概念は同じだけど、読み取り可能バイト数(ReadableBytes)という概念を持つ
ReadableBytes = ソースストリームのサイズ(または残りのバイト数)とは限らない
007771
2011/08/22(月) 04:34:33.18Xxx newReader(reader, 3) // 3 = 読み取り可能バイト数
pTarget->onRead(newReader);
newReader->skip(newReader->getReadableSize()); // skip(x) = x バイトを読み捨てる
}
bool HogeTarget::onRead(Xxx reader) {
if (reader->getReadableSize() < 4) {
return false;
} else {
this.value = reader->readLong();
}
}
c++とかjavaに似せたコードで書くとこんな感じ?
0078デフォルトの名無しさん
2011/08/22(月) 05:27:51.680079デフォルトの名無しさん
2011/08/22(月) 07:12:45.69それかヘッダ(3バイト・・だと)を高速に読み出したいとか。
008171
2011/08/22(月) 12:09:47.92HogeTargetにXxxを引数として受け取るセッタを持たせたい
>>77ではonRead(Xxx)になっているが、SetValue(Xxx)に置き換えてくれ
同様に、クラス名もHogeTargetからLongTargetに置き換えてくれ
また、IBinaryReader派生物はソースストリームのシークをサポートしない
0082デフォルトの名無しさん
2011/08/22(月) 13:43:29.250084デフォルトの名無しさん
2011/08/22(月) 13:59:58.820085デフォルトの名無しさん
2011/08/27(土) 04:40:13.03はーまじはー
0086デフォルトの名無しさん
2011/09/02(金) 02:50:23.14CreateかLoadにするか迷ってます
0087デフォルトの名無しさん
2011/09/02(金) 03:15:40.650088デフォルトの名無しさん
2011/09/02(金) 03:28:18.750089デフォルトの名無しさん
2011/09/02(金) 09:46:35.380090デフォルトの名無しさん
2011/09/02(金) 23:39:04.370091デフォルトの名無しさん
2011/09/03(土) 09:13:19.780092デフォルトの名無しさん
2011/09/14(水) 10:07:17.60なんて言えばいいか、非侵入型のメンバ関数を集めたクラス?
class xxx // ←これ
{
const std::wstring & GetName(void * pTarget) const;
void Print(void * pTarget, const std::wstring & s);
int Hoge(void * pTarget, int foo, int bar);
};
int data;
xxx xxxInstance;
int dataHoge = xxxInstance(&data, 2, 3);
0093デフォルトの名無しさん
2011/09/14(水) 16:00:38.58いまいち掴めないんだが、xxxのインスタンスはターゲットを使って自己の内部状態を更新するの?
0094デフォルトの名無しさん
2011/09/14(水) 16:43:58.98誤: int dataHoge = xxxInstance(&data, 2, 3);
誤: int dataHoge = xxxInstance.Hoge(&data, 2, 3);
>>93
xxx クラスのメンバ関数の記述次第だが、
xxxInstance はメンバ関数を呼び出した際に、仮引数 pTarget が示す先を更新する可能性がある
xxxInstance はメンバ関数を呼び出した際に、xxxInstance 自身(this)を更新する可能性がある
0095デフォルトの名無しさん
2011/09/14(水) 17:03:26.48う〜む、それはやはりコード中での役割で名付けるべきなんじゃないかなあと思う
集めたから、ってだけでは名付けにくいな
0096デフォルトの名無しさん
2011/09/14(水) 17:38:43.76以下2つの記述は同じ動作を意味している感じ
class Foo
{
const std::wstring & GetName() const;
void Print(const std::wstring & s);
int Hoge(int foo, int bar);
...
};
Foo foo;
foo.Print("てst");
// -----
class xxx
{
const std::wstring & GetName(const Foo * pTarget) const;
void Print(const Foo * pTarget, const std::wstring & s);
int Hoge(const Foo * pTarget, int foo, int bar);
...
};
xxx xxxInstance;
Foo foo;
xxxInstance.Print(&foo, "てst");
0097デフォルトの名無しさん
2011/09/14(水) 19:37:20.12TargetHelperとかTargetExtenderみたいな感じだろうか
009892
2011/09/15(木) 01:32:42.52上記の場合、FooExtenderとか、Foo追加する機能Extenderがいいかもな
ありがとう。とりあえずその線で命名してみる
0099デフォルトの名無しさん
2011/10/05(水) 10:49:54.29そんな名前のメソッドをお願いします。
GetUserIDs(ARecordID)
みたいな。
更新したのニュアンスの英語をどこにつければいいでしょうか。お願いします。
0100デフォルトの名無しさん
2011/10/05(水) 12:45:24.43英文の中なら UserIDs と Updated の間に which を入れる
0101デフォルトの名無しさん
2011/10/05(水) 15:06:11.850102デフォルトの名無しさん
2011/10/05(水) 21:41:35.180103デフォルトの名無しさん
2011/10/05(水) 22:33:48.570104デフォルトの名無しさん
2011/10/06(木) 01:08:19.61でいいだろ
0105デフォルトの名無しさん
2011/10/06(木) 13:24:20.550106デフォルトの名無しさん
2011/10/06(木) 15:25:44.90やっぱ、しっくりくるものなさげですね。>>100みたいな感じにします。
0107デフォルトの名無しさん
2011/10/06(木) 16:14:58.500108デフォルトの名無しさん
2011/10/06(木) 16:23:54.890109デフォルトの名無しさん
2011/10/06(木) 17:45:20.740110デフォルトの名無しさん
2011/10/06(木) 17:57:06.130111デフォルトの名無しさん
2011/10/06(木) 18:00:50.42GetUpdatedByUserIDs(RecordID)ってのも名前に使うときはありなんですかね。
ググってたらそんな感じのがありましたんで。
0112デフォルトの名無しさん
2011/10/06(木) 18:48:33.150113デフォルトの名無しさん
2011/10/06(木) 19:01:37.420114デフォルトの名無しさん
2011/10/06(木) 20:33:47.81よくわからんが、GetModifiersとかGetUpdatersみたいな感じ?
>>110
むしろウンココード量産するタイプの奴はたいてい君のように嘯く
0115デフォルトの名無しさん
2011/10/06(木) 21:20:36.65↓
プログラマ脳による翻訳: ユーザーIDによって更新された"それ"を取得する
現実: ユーザーIDで更新されてください。
0116デフォルトの名無しさん
2011/10/06(木) 21:29:01.49>>104が惜しいくらいであとはセンス無し
0117デフォルトの名無しさん
2011/10/06(木) 21:56:32.16こういう場合、どういうセンスが求められているの?
0118デフォルトの名無しさん
2011/10/09(日) 15:46:05.85○○マネージャーは駄目だっていうけどこの場合マネージャーしか思い浮かばない
0119デフォルトの名無しさん
2011/10/09(日) 16:06:26.070120デフォルトの名無しさん
2011/10/09(日) 17:36:38.55一括管理って、具体的に何をするの?
0121デフォルトの名無しさん
2011/10/09(日) 18:46:08.07実際に確保解放するのをマネージャに任せて
他のリソースが必要なクラスはこのマネージャを仲介して貰う
マネージャは参照数などを管理したり別スレッドで実際の確保解放を行ったりする
■ このスレッドは過去ログ倉庫に格納されています