クラス名・変数名に迷ったら書き込むスレ。Part20
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/07/29(金) 21:32:01.00命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part19
http://hibari.2ch.net/test/read.cgi/tech/1293201229/
0584デフォルトの名無しさん
2011/12/19(月) 23:04:37.74>>580がなにか問題でも?
0585デフォルトの名無しさん
2011/12/19(月) 23:08:46.710586デフォルトの名無しさん
2011/12/19(月) 23:20:13.97問題は何もない
ただ「識別子の頭に数字をつけるため」にアンダースコアを使うという発想が
一般的じゃないという意味でヘンというだけ
かといってネタとも思えない
本当に普段からそういう目的でプログラム書いてそうだと思った
>>585 なら前例を多く見てきたから分かるけど、
数字をつけるためってのはちょっとね、初めてだったよ
0587デフォルトの名無しさん
2011/12/19(月) 23:32:25.950588デフォルトの名無しさん
2011/12/19(月) 23:37:24.31プライベートメンバの先頭にアンダースコアをつけない人にとってはなんら問題ないと思えることは予想できる。
ただ、プライベート(略)つける人が見たときに文句を言われることは必至だけどね。
0589デフォルトの名無しさん
2011/12/20(火) 00:20:13.170590デフォルトの名無しさん
2011/12/20(火) 00:42:21.513d6とか。
0591デフォルトの名無しさん
2011/12/20(火) 00:44:37.250592デフォルトの名無しさん
2011/12/20(火) 00:50:22.820593デフォルトの名無しさん
2011/12/20(火) 00:54:48.83メンバ変数も含めて。
enumのメンバー名なんかで、どうしても数値そのものをメンバ名にする必用が
あったりする場面以外では極力避けたい。
やっぱり視覚的に見づらいんだよな。
0594デフォルトの名無しさん
2011/12/20(火) 00:55:35.233d6と書いたら識別子なんて紛らわしくてたまらん
0595デフォルトの名無しさん
2011/12/20(火) 01:42:43.11ダイス数や面数そのものが変数名になることって無くないか?
自分もサイコロ処理は書いたことがあるが、
int nDice = 3;
int nFaces = 6;
int result = RollDice( nDice, nFaces );
…みたいな感じになったぞ。
0596デフォルトの名無しさん
2011/12/20(火) 01:59:36.01enum DICE={3d6,…};
0597デフォルトの名無しさん
2011/12/20(火) 11:45:37.59Graphicsとかだと既存とかぶるし
GraphicUtil?
0598デフォルトの名無しさん
2011/12/20(火) 12:06:25.11たとえばMathHelperなどがある。
0599デフォルトの名無しさん
2011/12/20(火) 12:23:57.74資産はAsset、負債はLiabilityですが、これを示すタイプの名前です。
どうも英語にはそういう概念がないのでは、という気配を感じていますが。
0600デフォルトの名無しさん
2011/12/20(火) 12:26:05.72{a, b, c, d, e, f}
ってシーケンスがあって日本語では
aはeの前にある
dはcの後ろにある
と書くところを英語だとどうなる?
front/back、prev/nextはなんかニュアンス違う気がする
0601デフォルトの名無しさん
2011/12/20(火) 13:26:18.49かな
後者にはsucceedもあるけど、ぱっと見で間違えそう
0602デフォルトの名無しさん
2011/12/20(火) 14:02:26.170603デフォルトの名無しさん
2011/12/20(火) 16:00:02.07既存とかぶってもいいように名前空間が。これもまたおすすめはしないけれど。
0604デフォルトの名無しさん
2011/12/20(火) 16:01:39.200605デフォルトの名無しさん
2011/12/20(火) 18:49:27.140606デフォルトの名無しさん
2011/12/20(火) 22:36:32.06before/after
ahead/behind
lead/follow
0607デフォルトの名無しさん
2011/12/21(水) 01:26:44.95しかし、数字を書き忘れると分散を求めるvar()と認識される可能性があります
なにか他に良い変数名はないでしょうか
0608デフォルトの名無しさん
2011/12/21(水) 01:54:35.370609デフォルトの名無しさん
2011/12/21(水) 04:13:48.590610デフォルトの名無しさん
2011/12/21(水) 09:17:55.69サブシステムを子要素、すべてのサブシステムを集約したクラスを親要素としてN個の1対1の相互参照にさせて
親に問い合わせると問い合わせを適切なサブシステムにディスパッチしてくれる
という構造でプログラムを作ったんだけどこの親と子の関係ってどんな名前がいいですかね?
0611デフォルトの名無しさん
2011/12/21(水) 09:33:28.040612デフォルトの名無しさん
2011/12/21(水) 09:36:22.56あんま想像できなかったけど、
相互作用を記述するにはGoFのMediatorパターンが知られている。
一個のMediatorに対し複数のColleagueがあるような形。
0613デフォルトの名無しさん
2011/12/21(水) 10:09:28.20親の名前と子の名前と関係の暫定名は何?
0614デフォルトの名無しさん
2011/12/21(水) 11:01:42.06親子という表現がよく分からんけど、Facadeパターンのように思える。
0615デフォルトの名無しさん
2011/12/21(水) 11:14:52.410616デフォルトの名無しさん
2011/12/21(水) 11:55:20.61例えばC言語で 3L とか 0xf なんて識別子使われたら困る
数値リテラルとして有効な書法だからね
んで例外作るくらいなら頭に数字は全部禁止!としたほうが
プログラマからしても楽だと思う
0617デフォルトの名無しさん
2011/12/21(水) 14:20:20.61回答どもです
hogeは実際に使ってるソースを見たことがないのでいまいち感覚が掴めない
tempは何度か他の変数に使ったことがあるし・・・う〜んどうしよう
レス参考にして考えてみようと思いますありでした
0618片山博文MZ ◆0lBZNi.Q7evd
2011/12/22(木) 12:34:11.54CTabDIFrameWndか?
0619デフォルトの名無しさん
2011/12/22(木) 12:42:46.080620片山博文MZ ◆0lBZNi.Q7evd
2011/12/22(木) 12:44:27.320621デフォルトの名無しさん
2011/12/22(木) 12:55:23.010622片山博文MZ ◆0lBZNi.Q7evd
2011/12/22(木) 14:34:01.920623デフォルトの名無しさん
2011/12/22(木) 17:17:07.720624片山博文MZ ◆0lBZNi.Q7evd
2011/12/22(木) 17:23:09.610625デフォルトの名無しさん
2011/12/22(木) 17:28:30.36コマンドが非コンスト操作で、クエリーがコンスト操作みたいな感じですね
0626デフォルトの名無しさん
2011/12/22(木) 17:55:18.160627デフォルトの名無しさん
2011/12/22(木) 19:19:35.930628デフォルトの名無しさん
2011/12/22(木) 19:27:32.620629デフォルトの名無しさん
2011/12/22(木) 20:30:24.530630デフォルトの名無しさん
2011/12/24(土) 18:33:34.032. currentSize
3. maxSize
上記3つのメンバ変数を持つ Widget(仮) クラスがあり、
currentSize は minSize 以上、maxSize 以下の大きさである
引数として与えられた newSize を
「minSize 以上 かつ maxSize 以下」
にクランプして、それを currentSize に代入する、Widgetクラスのメンバ関数の名前はどうしたらいいですか?
0631デフォルトの名無しさん
2011/12/24(土) 19:13:38.860632デフォルトの名無しさん
2011/12/24(土) 19:15:02.550633デフォルトの名無しさん
2011/12/24(土) 19:18:16.81クランプして設定するメソッドがあって、
クランプする事を強調したいのなら
setClampedSize とか
0634デフォルトの名無しさん
2011/12/24(土) 19:22:01.020635デフォルトの名無しさん
2011/12/24(土) 21:17:25.63>>631-632
Set〜だと直前に設定したはずの値をGet〜で取得できず、アクセッサの対として扱えないのが気になります
>>633
クランプが必要になるのであれば設定せずfalseを返す、というメソッドであれば bool trySet(Current)Size(newSize) でいいかなと思っています
メソッドの内容を見ずに、クランプして代入(設定)する/していることが分かる名前があればベストです
>>634
minSize/maxSizeの名前がおかしいのでしょうか?
代わりとなる名前を教えていただけると助かります
0636デフォルトの名無しさん
2011/12/24(土) 21:25:53.35ゲッターがないのが非対称に感じるというのならゲッターをつければいいのでは?
まさか裸の変数を晒すつもり?
っていうか、話を聞いてると結局何がしたいのか質問者もよく分かってないのかな。
だからWidgetなんていう投げやりなクラス名なのか。
0637デフォルトの名無しさん
2011/12/24(土) 23:26:18.22>ゲッターがないのが非対称に感じるというのならゲッターをつければいいのでは?
Size newSize(100, 200);
widget.setSize(newSize);
Size gotSize = widget.GetSize();
この地点で newSize == gotSize であるとは限らず、ゲッタ(getSize)とセッタ(setSize)が対にならない
なので、それが気になると書きました
Widgetという名前については、実際に使用しているGUI部品のベースクラスの名前とほぼ同一のものですが、
これについてもオススメがありましたらご教示ください
0638デフォルトの名無しさん
2011/12/24(土) 23:33:32.54値の範囲を制限するためのクラス(なんでしょ?)に範囲外の値をセットした時に
値が範囲内の適切な値に制限されても誰も変だとは思わないと思うけど。
だってそれがそのクラスの存在意義じゃないの?
0639デフォルトの名無しさん
2011/12/24(土) 23:42:50.37>この地点で newSize == gotSize であるとは限らず、
これはゲッタとセッタが対で有る事とは無関係
0640デフォルトの名無しさん
2011/12/24(土) 23:44:40.01>値の範囲を制限するためのクラス(なんでしょ?)
>>637
>Widgetという名前については、実際に使用しているGUI部品のベースクラスの名前…
>値が範囲内の適切な値に制限されても誰も変だとは思わないと思うけど。
>>635
メソッドの内容を見ずに、クランプして代入(設定)する/していることが分かる名前があればベストです
0641デフォルトの名無しさん
2011/12/24(土) 23:49:37.63論点はそこではありません。
>>635
>メソッドの内容を見ずに、クランプして代入(設定)する/していることが分かる名前があればベストです
この条件に当てはまる名前を探しています。
0642デフォルトの名無しさん
2011/12/24(土) 23:52:16.81値の範囲が規制される機能を表すのは、別にメソッド名じゃなくクラス名でも良いでしょ?
というより、値が規制されることを強制したいのならその方がむしろ自然。
逆に、仮に規制なしでも値を設定できるのであれば、今度は設定可能な値の範囲を
表すメンバー(mimSize, maxSize)をクラスが持っていることが不自然。
0643デフォルトの名無しさん
2011/12/25(日) 00:13:24.04クラス名でも構いませんが、メソッド名を求めているクラスは
1. 他のウィジェット(GUI部品)のインターフェイスまたは基本クラスであり、
2. サイズの設定/取得以外を行う以外のメンバ関数が存在します
また、例としてWidgetというクラスにminSize/maxSizeを持たせましたが、
実際にそれらのメンバ変数を持つのはWidgetクラスの派生クラス、例としてLabelクラスです
派生クラスでは SetClampedSize仮() メンバ関数を実装しますが、本当にクランプを行うかどうかは実装によります
0644デフォルトの名無しさん
2011/12/25(日) 00:30:15.17関係ない事持ち出すな
0645デフォルトの名無しさん
2011/12/25(日) 00:34:09.660646デフォルトの名無しさん
2011/12/25(日) 00:45:05.930647デフォルトの名無しさん
2011/12/25(日) 01:07:06.20やっぱりminSize/maxSizeを持たせるのなら、メソッド名は単純にsetSizeとかsetCurrentSizeとすべき。
メソッド名に値が規制されることを盛り込むセンスはちょっと変な気がする。
繰り返しになるけど。
0648デフォルトの名無しさん
2011/12/25(日) 01:52:45.55案は俺 setClampedSize を提案したが、よく考えてみれば、
「設定した値がクランプされて格納される」ことをメソッド名で示すのは難しいな
setClampedSize じゃ、クランプ済みのサイズを設定しろ、と言っているように見える
俺も >>647 に同意見だ
メソッドを使うプログラマに「して欲しいこと」はメソッド名に織り込めるが、
メソッドを呼び出した結果「内部状態がどう変化するか」は
メソッド名に入れるべきじゃないような気がする
その代わりに、「どのような意味・役割を持つのか」をクラス名に折り込み、
Widget クラスからは分離させた方が良いのではないか?
具体的には、ClampedSize などの名前のクラスを作り、
設定した値がクランプされて保たれる役割をこのクラスに担わせ、
Widget クラスはこの ClampedSize クラスのインスタンスを保持する
0649デフォルトの名無しさん
2011/12/25(日) 02:02:24.87普通コメントやドキュメントに書かれるね
0650デフォルトの名無しさん
2011/12/25(日) 02:37:08.73参考になった。setSize か setCurrentSize にしてみるよ
ありがとうございました
0651デフォルトの名無しさん
2011/12/25(日) 16:13:56.44setSize(calcClampedSize(300));
とかになんのかな
0652デフォルトの名無しさん
2011/12/25(日) 17:42:57.690653デフォルトの名無しさん
2011/12/25(日) 17:47:06.67public:
explicit XXX(Container<Hoge> & c) : c(c) { }
void Add(Hoge const & hoge) {
c.push(hoge);
}
private:
Container<Hoge> & c;
};
Container<Hoge> c;
void Func(XXX xxx) {
while(isNotEnd) {
xxx.Add(hoge(...));
}
}
コンテナのインターフェースを制限してpushだけ(あるいはほかの必要なメンバだけ)にしたクラスがあるんだけどなにかいい名前はないかな?
用途はこのFuncを始めとして一部の関数でコンテナに対して間違った操作をコンパイル時チェックできるようにしたいというだけです
ContainerAdapterとかだとちょっと不明瞭な気がするけどあまり気にしないでいいのかな
0654デフォルトの名無しさん
2011/12/25(日) 23:16:09.53元の方針では
void Widget::ClampSize(Size input, Size output)
Widget の最小/最大サイズにクランプした input を output に出力する
void Widget::SetSize(Size value)
Widget のサイズを設定する。最小未満または最大値より大きい値を指定されたのであればアサーション(または例外)
bool Widget::TrySetSize(Size value)
Widget のサイズを設定する。設定に成功したのであれば true を返す
の3つの関数があって、それらを呼び出していたという経歴があるのだよ
0655デフォルトの名無しさん
2011/12/26(月) 05:45:51.74Size Widget::ClampSize(Size input);
戻り値はクランプされた値
ってやりたいけど、それはそれとしておいて、
TrySetSizeがあるのなら、SetSizeSafeでもよかったのかもね。
0656デフォルトの名無しさん
2011/12/26(月) 05:47:41.87Size Widget::ClampSize(Size value) にかえるかどうかは適宜。
0657デフォルトの名無しさん
2011/12/26(月) 15:10:21.36だけど〜される人ってなんていうの?
攻撃者→attacker
被攻撃者→?
0658デフォルトの名無しさん
2011/12/26(月) 15:23:11.49ともかく対比として使うことのみが目的なら、-eeで済ますことが多い。今回ならattackee
0659デフォルトの名無しさん
2011/12/26(月) 20:29:51.330660デフォルトの名無しさん
2011/12/26(月) 20:36:58.06reviewer と reviewee とかもよく見るね
0661デフォルトの名無しさん
2011/12/26(月) 23:17:48.43整数の場合に最小値から更に減算した場合などはアンダーフローとは呼ばないのでしょうか?
また呼ばないとしたら最小値からの減算をなんと名付けるべきでしょうか?
0662デフォルトの名無しさん
2011/12/26(月) 23:22:37.91アンダーフロー、オーバーフロー
0663デフォルトの名無しさん
2011/12/26(月) 23:23:08.340664デフォルトの名無しさん
2011/12/26(月) 23:23:42.97人間の頭の中にある計算の意味次第だから
0665デフォルトの名無しさん
2011/12/26(月) 23:59:17.69ググった感じだと使わないと思うんだけど...
個人的にもそういう用法は聞いた(読んだ)ことないから違和感感じる。
0666デフォルトの名無しさん
2011/12/27(火) 00:02:27.770667デフォルトの名無しさん
2011/12/27(火) 00:03:06.63お前の感想など聞いてないわw
0668デフォルトの名無しさん
2011/12/27(火) 00:04:32.54>>919,979,981,987,997
英語188/200点ってことは、2、3個ミスったんですよね?
どういう箇所を間違えたんですか?
999 :デフォルトの名無しさん [↓] :2011/12/04(日) 20:28:27.13
>>998
俺は919じゃねーから知らね。センターは175だったし
ただ小卒レベルで偉そうにしてる老害が目障りだっただけ
1000 :デフォルトの名無しさん [↓] :2011/12/04(日) 20:34:56.90
ゆとり(笑)
0669デフォルトの名無しさん
2011/12/27(火) 00:07:09.020670デフォルトの名無しさん
2011/12/27(火) 00:11:49.20少なくとも符号付整数については、オーバーフローとは演算結果が正しくないことを言う。
プラス/マイナスどちらの方向に「オーバーフロー」したかは問わない場合が多い。
どっちが情報弱者だよ。
0671デフォルトの名無しさん
2011/12/27(火) 00:22:27.850672デフォルトの名無しさん
2011/12/27(火) 01:32:47.02浮動小数点数同士の計算の結果が、表現できる最小の絶対値以下になること
整数同士の演算結果が-128未満だの-65536未満だのになることはアンダーフローとは言わないが、
このことを「整数のアンダーフロー」と言われてみれば確かに伝わる、空耳アワーの時間がやってまいりました
0673デフォルトの名無しさん
2011/12/27(火) 02:12:15.31よくわからんけど漢字能力を鍛え始める時期を考えれば結構早期なんじゃない?
0674デフォルトの名無しさん
2011/12/27(火) 07:20:28.52初めから多寡の問題じゃないんだよ情弱君
0675デフォルトの名無しさん
2011/12/27(火) 10:05:14.13型の定義の部分を、宣言の部分にまとめてしまっても問題はないのですが、
あえて定義を独立させるとき、型名と定数名は、どのような命名規則になるでしょうか。
なお、現在考えている候補は以下のとおりです。
他に良い規則があればお願いします。
struct Hoge HOGE; //同じ名前で定数を大文字に、型をキャメルに
struct tagHoge HOGE; //適当なプリフィクス/サフィックスをつける(システムハンガリアン)
struct Hoge h; //むしろ型名がメイン
struct Fuga HOGE; //全く別の名前を付ける
0676デフォルトの名無しさん
2011/12/27(火) 10:07:32.14なにも規則はありませんよ
0677デフォルトの名無しさん
2011/12/27(火) 11:00:46.910678デフォルトの名無しさん
2011/12/27(火) 11:59:42.68独立した型名を使うことを考えてないなら struct Hoge Hoge; で隠しちゃえば、
別の名前考える手間も省けていいんじゃない?
0679デフォルトの名無しさん
2011/12/27(火) 12:50:37.72_tってtime_tとかの_t?
>>678
ああそれは確かに。でもちょっと怖いw
0680デフォルトの名無しさん
2011/12/27(火) 12:53:00.86class CHoge;
struct SHoge;
class IHoge { virtual 〜 } ;
template <class THoge> 〜
0681デフォルトの名無しさん
2011/12/27(火) 13:09:03.96コメントで元の日本語も添える
最近はめんどくさくなってきて全部コレでいい気がしてきた
0682デフォルトの名無しさん
2011/12/27(火) 17:06:21.280683デフォルトの名無しさん
2011/12/27(火) 19:09:01.64他の用途もある構造体なんだろうか。
定数用途専用なら無名でいいんじゃないかな。
struct { 〜〜 } hoge
■ このスレッドは過去ログ倉庫に格納されています