クラス名・変数名に迷ったら書き込むスレ。Part20
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/07/29(金) 21:32:01.00命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part19
http://hibari.2ch.net/test/read.cgi/tech/1293201229/
0951デフォルトの名無しさん
2012/01/18(水) 16:03:58.02FPS fps;
FrameCount frameCountForKeyInput;
String getKeyStateInsensitive()
{
if (frameCountForKeyInput.getSecond(fps) > 0.1) {
frameCountForKeyInput.reset();
return getKeyState();
}
return "";
}
でいいんじゃない
個人的にタイムアウトチェッカーとかカタカナ英語過ぎて許せないな
0952デフォルトの名無しさん
2012/01/18(水) 16:10:46.190953デフォルトの名無しさん
2012/01/18(水) 16:14:44.080954デフォルトの名無しさん
2012/01/18(水) 16:20:46.51100ms経たないとキーステートを取得できない関数をほしがってる人がどこに
0955デフォルトの名無しさん
2012/01/18(水) 16:47:38.05すぐ気づいたけど直すの簡単だし変数名のスレだからまあいいかとそのまま投稿w
0956デフォルトの名無しさん
2012/01/18(水) 16:53:33.24> FPSみたいにせいぜい1秒単位で処理すればいいもの
何このクソゲー
0957デフォルトの名無しさん
2012/01/18(水) 16:55:05.850958デフォルトの名無しさん
2012/01/18(水) 17:22:48.93これを実現するためのコードが無駄に重いっていう本末転倒
0959デフォルトの名無しさん
2012/01/18(水) 20:50:48.38ど素人が
0960デフォルトの名無しさん
2012/01/18(水) 22:31:07.560961デフォルトの名無しさん
2012/01/18(水) 22:42:36.51オブジェクト群を生成し適切に参照関係を結びそれぞれを適切な管理クラスに登録して
初めてユーザーがその機能を扱える状態になる
この「オブジェクト群を生成し適切に参照関係を結びそれぞれを適切な管理クラスに登録する」までを隠蔽して一つの命令にしたんだが何かいい名前はないだろうか
CreateXXXだと単一オブジェクトの生成のみのイメージがあるのでちょっと気に入らない
0962デフォルトの名無しさん
2012/01/18(水) 22:52:12.620963デフォルトの名無しさん
2012/01/18(水) 22:53:29.430964デフォルトの名無しさん
2012/01/18(水) 22:57:03.88Abstract Factoryパターン的な発想?
だとしたら、メソッド名よりもそのオブジェクト郡の生成と関連付けを行う
クラスのクラス名に凝った方が良いのでは?
メソッド名は普通にgetXXXXで良いように思うけど。
0965デフォルトの名無しさん
2012/01/18(水) 23:17:42.54オブジェクト群の生成や管理を隠しておいて十分なら、
クラスの中にぶち込んで、そいつをユーザに使わせたら?
シンプルなインタフェースだけ公開して。
隠し切れずに部分的に外に出てたり、外の物を積極的に使ったりする場合は、
GoF的にはFacadeパターンってのがある。
0966デフォルトの名無しさん
2012/01/18(水) 23:28:40.52setup
prepare
0967デフォルトの名無しさん
2012/01/18(水) 23:29:57.40BuildXXX
0968デフォルトの名無しさん
2012/01/18(水) 23:33:50.83追記
BuidXXXと書いたけど
XXXはオブジェクト群の意味するものの名前
DirectShowで言えばBuildFilterじゃなくてBuildGraphという感じ
0969デフォルトの名無しさん
2012/01/18(水) 23:48:49.390970961
2012/01/19(木) 00:22:35.33辞書で日本語訳を見たところdeployが感覚的に一番近い感じでした
システムに要素を配置する的なニュアンスで
0971デフォルトの名無しさん
2012/01/19(木) 00:28:30.570972デフォルトの名無しさん
2012/01/19(木) 00:51:12.40オブジェクト群;
public:
コンストラクタ(登録するべき管理クラス群) {/*生成リンク登録*/}
} ;
寿命管理用のホルダー.insert(new アプリ上での機能の名前(管理クラス群)) ;
0973デフォルトの名無しさん
2012/01/19(木) 20:41:55.190974デフォルトの名無しさん
2012/01/21(土) 22:30:58.65コードを延々と書き進めていたら、変数命名の要素でchrとcharが
入り乱れているのに気が付いた。 chrcodeとかchardataとかchrlistとか。
どちらも伝統ある省略法だけど、使い分ける事は可能かな?
それとも、単純に短い方が正義?
0975デフォルトの名無しさん
2012/01/21(土) 22:36:32.01略しないのがトレンド
0976974
2012/01/21(土) 23:00:39.15CharacterCode、CharacterData、CharacterList・・・長過ぎませんか?(^^;
まあいいや、試しに実際にコードを置き換えてみます。
早い回答有難う御座います。
0977デフォルトの名無しさん
2012/01/21(土) 23:08:16.20親切のつもりだろうが現実的には可読性を著しく低下させる
変数名は省略しコメントにロングネームを添えよ
0978デフォルトの名無しさん
2012/01/21(土) 23:30:45.44コメントが必要な変数名はソースの可読性を低下させる
コメントは「処理や計算」を目で追う場合のサポートとして付けるべき
サポートが必要な変数名はクソ
0979デフォルトの名無しさん
2012/01/21(土) 23:37:53.54大量の省略表記規約がある環境はストレスマッハ
だが、あらゆる省略表記が混在する地獄よりはまし
変数が適切な空間にあれば変数名は短くシンプルに済むはずなんだ
0980デフォルトの名無しさん
2012/01/21(土) 23:44:02.95識別子を適切に設定してさえいれば短いほうが円滑に物事が回る
いちいち長い名前を付けなければ混乱するという状況に落った場合
それは名前付以け前のどこかに問題があるはずだ
名前空間の使い方を間違えてるとか、スコープが不適切な変数とかね
0981デフォルトの名無しさん
2012/01/22(日) 01:31:21.050982デフォルトの名無しさん
2012/01/22(日) 01:38:40.76また病気が始まったな。
職場の人間はよく知っているし、そもそも人の名前は機能や意味を表すためのものではないから
ここでの類推としてはまったく不適切。
名前空間まで含めた完全修飾名を普通は使わないたとえとしてなら適切。
>>976
名前に求められることは、そこから変数や関数の意味や機能を読み取れることだから、
その意味では個人的はcharなら許容範囲だとは思う。
0983デフォルトの名無しさん
2012/01/22(日) 01:43:33.97chrとかcharとかcharacterって一体何の情報何だろう
もしかして型名?
0984デフォルトの名無しさん
2012/01/22(日) 02:07:34.73「参照先のビット列を文字コードとして解釈することが求められている」
と読み取れる
0985デフォルトの名無しさん
2012/01/22(日) 02:09:29.45スコープ狭いのはぶっちゃけ1文字とかでもいい。
0986デフォルトの名無しさん
2012/01/22(日) 02:29:59.04・母音を抜く
・文字数で切る
・語素の境界で切る
・複合語の頭文字を並べる
追加して
0987デフォルトの名無しさん
2012/01/22(日) 02:46:03.850988デフォルトの名無しさん
2012/01/22(日) 03:09:09.05db, id, ok くらいはまあいいとして、グローバルスコープでxferとか付けちゃうのは微妙
0989デフォルトの名無しさん
2012/01/22(日) 04:38:21.16× count → cnt
0990デフォルトの名無しさん
2012/01/22(日) 04:43:28.28だったらutf8だとかeucだとか文字エンコードも併記すべきな気がするぞ…
0991デフォルトの名無しさん
2012/01/22(日) 10:09:32.31それが正解だね
スコープが狭くて文脈や宣言部分で意味がすぐわかるのにだらだら長い名前かくと
アルゴリズムの構造を記述している部分より識別子のほうが長くなって逆に読みにくくなる
何でもかんでも長くてはっきりした名前を付けないと気が済まない人って偏執狂的で頭の固い、応用や機転の効かない老害なんだろうなーって感じるよ
0992デフォルトの名無しさん
2012/01/22(日) 10:17:54.23違うだろ
複雑な機能や概念について対話するときにその対象のことを指し示すのにいちいち詳細を語っていてはきりがないから
その機能や概念を示すものとして何か短い字句を割り当てているだけ
ようするに名前の本来の役割は面倒な詳細を隠蔽してより上位のレベルでの対話を円滑にするためのものだ
内容を細かく示そうとする名前の付け方は原理的に間違っている
0993デフォルトの名無しさん
2012/01/22(日) 10:56:30.09逆
お前の感覚と違って現実は老害ほど略したがる
0994デフォルトの名無しさん
2012/01/22(日) 11:05:11.85http://toro.2ch.net/test/read.cgi/tech/1327197884/
0995デフォルトの名無しさん
2012/01/22(日) 11:40:53.73longNameMemberHogeVector.erase(std::remove(longNameMemberHogeVector.begin(), longNameMemberHogeVector.end()), longNameMemberHogeVector.end());
}
void Hoge::func(void) {
std::vector<hoge> & v = longNameMemberHogeVector;
v.erase(std::remove(v.begin(), v.end()), v.end());
}
どちらの読性が高いかは一目瞭然だろう
詳細に近づけば近づくほど識別子がなにを意味するのかはどうでも良くなり、そこに書かれている処理の内容が重要になってくる
そこでは長い名前は視覚的に処理の内容の認識を遅らせるため害悪となる
0996デフォルトの名無しさん
2012/01/22(日) 11:46:03.95改行とインデントを適切に行えば
そんな事は起こらない
短い名前なんてのは適当なループ変数程度にしか使えないよ
0997デフォルトの名無しさん
2012/01/22(日) 11:49:23.30基本的には混乱とバグの元になる
配列の一要素の参照を作るとかなら
速度的に仕方が無いとして許容出来るけど
0998デフォルトの名無しさん
2012/01/22(日) 11:58:10.91それも極端だな
1単語だとそれが何を指してるのかを確認する作業が入る
理想は2〜3ぐらいで5単語超えたら設計を疑う
0999デフォルトの名無しさん
2012/01/22(日) 12:00:26.15自然言語でitとかアレとかソレなどといった代名詞があらゆる文化圏でごく自然に現れたのはそのほうが人間の脳にとって優しくて実用上の理にかなうからだよ
結局のところ名前なんてものは「完結で小さい情報量でより複雑で大きな情報や物を指し示す」以上でも以下でもない
もちろん同程度の情報量で明快な名前を付けられるならそれに越したことはない
だが、わざわざ情報量をいたずらに増やしてまで明快さを求めるのは馬鹿げている
短い文脈のなかで馬鹿丁寧に長ったらしい識別子を連続して使うことはハッキリ言って無駄でしかない
まるで新人PGが関数を使わずにコピペで同じコードを繰り返し書くことのように愚かな行為だ
1000デフォルトの名無しさん
2012/01/22(日) 12:11:51.57極論挙げて否定しようとしたって馬鹿と思われるだけ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。