ぱっと見て「ヘタだなぁ」と思うコード その3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/06/11(日) 09:34:11過去スレ
ぱっと見て「ヘタだなぁ」と思うコード
http://pc8.2ch.net/test/read.cgi/tech/1141867015/
ぱっと見て「ヘタだなぁ」と思うコード その2
http://pc8.2ch.net/test/read.cgi/tech/1142741989/
0002デフォルトの名無しさん
2006/06/11(日) 09:35:430003デフォルトの名無しさん
2006/06/11(日) 11:29:050004デフォルトの名無しさん
2006/06/11(日) 11:33:160005デフォルトの名無しさん
2006/06/11(日) 11:35:40「禁止」じゃなくて、せめて「専用スレを立ててやってください」ぐらいの表現にしようよ
0006デフォルトの名無しさん
2006/06/11(日) 11:36:28しょうがないな。
0007デフォルトの名無しさん
2006/06/11(日) 11:37:400008デフォルトの名無しさん
2006/06/11(日) 11:54:59グローバル変数言ってるやつは、
0009デフォルトの名無しさん
2006/06/11(日) 12:42:03へたと決め付けるのはいかがなものかと。
0010デフォルトの名無しさん
2006/06/11(日) 12:54:15gotoと同じく使わないのが常識だからな。
最近プログラムを始めたばっかりのボーヤはどうやら知らないらしい。
0011デフォルトの名無しさん
2006/06/11(日) 13:23:47gotoはたまに使うよ。
以下は例としてイマイチだけど、「共通のエラー処理を一箇所でやりたい」場合には使える。
int WriteLog(char* Message) {
FILE *LogFile;
LogFile = fopen("result.log", "a");
if (NULL == LogFile) {
goto ERROR_BREAK;
}
if (0 > fprintf(LogFile, "%s\n", Message) {
goto ERROR_BREAK;
}
fclose(LogFile);
return 0;
ERROR_BREAK:
printf("Logging FAILED!\n");
fclose(LogFile);
return 1;
}
0012デフォルトの名無しさん
2006/06/11(日) 13:34:360013デフォルトの名無しさん
2006/06/11(日) 13:35:21その構成で1000行とかやられると死ぬ。
行数が短い分にはなにやってもかまわない。
と、俺は思ってる。
ループの中でcontinueとかbreakとか
関数の中でif(!条件)ならreturnとか普通にやっちゃうよ。俺も。
でも、これ、行数が長すぎると駄目。
001411
2006/06/11(日) 13:44:36その使い方は(漏れは)あんまりしないけど、アリな希ガス。
>>13
……goto地獄の経験者か。
さすがに1関数はテキストエディタ1画面分に押さえ込むから
上の書き方はカンベソしてくだちい。
0015デフォルトの名無しさん
2006/06/11(日) 13:44:530016デフォルトの名無しさん
2006/06/11(日) 13:47:48return(ERROR_BREAK(LogFile));
ってすれば良くない?
0017デフォルトの名無しさん
2006/06/11(日) 13:54:13それはファイルオープンどこに書けばいいんだよ。
001811
2006/06/11(日) 13:56:46入れ子関数ってGCCの拡張機能だった希ガス。
www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_4.html
。・゚・(ノД`)・゚・。 ほかのコンパイラでも行けるんなら漏れもそうしたいYO!
0019デフォルトの名無しさん
2006/06/11(日) 13:58:26理由も無く1000行とかなってる時点で
その他がどんなにまともでも下手なコードだし。
0020デフォルトの名無しさん
2006/06/11(日) 14:01:46だから、短いんならどんなことしたっていいと思うよ。俺は。
0021デフォルトの名無しさん
2006/06/11(日) 14:05:49関数の中でif(!条件)ならreturnとか
がダメなんじゃなくて、
関数が長いのが根本的にダメなんじゃないの?
長い関数内でgoto使うなじゃなくて、
長い関数書くなが正解。
0022デフォルトの名無しさん
2006/06/11(日) 14:09:11どうだろうね?
例えば、単純なifのみで長くなるんならそれはそれでいいのかもしれないぞ。
ネストもそんなになくて、ただ、初期設定っぽい処理がだらだら長くなるだけとか。
0023デフォルトの名無しさん
2006/06/11(日) 14:12:56それはどこのWinMain()ですか?
まああの辺なら多少長くてもいい気はするけど。
0024デフォルトの名無しさん
2006/06/11(日) 14:14:10Win32Apiの関数は全部そんな感じだな。
まともに短く切ってると関数1つにつき1つラッパーを作らないと駄目なぐらいだ。
0025デフォルトの名無しさん
2006/06/11(日) 15:52:450026デフォルトの名無しさん
NGNGそれは人間が読み書きするコードじゃないから、問題ないよ。
0027デフォルトの名無しさん
2006/06/11(日) 16:48:120028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
2006/06/11(日) 16:51:46お前らどうやってまとめて処理するの?
実務経験のない奴はだまっておいてね。
0030デフォルトの名無しさん
2006/06/11(日) 16:58:57できるだけ、Cを使わないようにする。
Windowsなら、構造化例外を使う。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
2006/06/11(日) 17:07:44gotoの全てが悪いとは言わない。が、>>25の例が明らかに悪いのはおまえにも分かるだろう?
gotoは例外処理と同じで、使いどころが分かってない奴には使わせないのがいい。
>>25
あれでマンセーされたのが>>750の不幸だった。
昔の時点で矯正されていたら今頃はもう少しまともだったろうに。
初心者のネタとマジを見抜けないと悲惨だ。
0033デフォルトの名無しさん
2006/06/11(日) 17:42:24こういうのは長くなるとやっかいな飛び方をするようになる。
短いときはどう書いてもいいけど・・・って話になるからやっぱり
gotoを使うなってより長い関数を作るなってほうが重要だと思う。
初期化も長くなったときはちゃんと終了用(初期化失敗用)の関数を用意したほうがいいと思う。
つまり>>16みたいな形にする。
0034デフォルトの名無しさん
2006/06/11(日) 18:14:37お前ら馬鹿だろw
0035デフォルトの名無しさん
2006/06/11(日) 18:52:06中東の現状を見ても分かるでしょ。
0036デフォルトの名無しさん
2006/06/11(日) 19:01:03グローバル変数、TRUE(FALSE)、最適化等も同様
0037デフォルトの名無しさん
2006/06/11(日) 19:11:080038デフォルトの名無しさん
2006/06/11(日) 19:16:300039デフォルトの名無しさん
2006/06/11(日) 20:06:49その関数からgotoを無くすのに凄まじく時間が掛かった経験がある。
まじで殺意を覚えたよ
0040デフォルトの名無しさん
2006/06/11(日) 20:11:120041デフォルトの名無しさん
2006/06/11(日) 20:11:310042デフォルトの名無しさん
2006/06/11(日) 20:18:34gotoより関数の行数が長いことのほうが駄目じゃね?
0043デフォルトの名無しさん
2006/06/11(日) 20:22:580044デフォルトの名無しさん
2006/06/11(日) 20:23:14普通放置するか、新しく書き直すだろう。
0045デフォルトの名無しさん
2006/06/11(日) 20:25:550046デフォルトの名無しさん
2006/06/11(日) 20:49:12こっちよりはまだマシと思われ
if (LogFile = NULL)
004739
2006/06/11(日) 20:56:38スタックオーバーフローする危険があったんで
goto無くして再帰をループに変更する方法しか思いつかなかった。
0048デフォルトの名無しさん
NGNGやっぱり半可通だった。
0049デフォルトの名無しさん
2006/06/11(日) 21:00:13うむ。
まったくよくわからん。
0050デフォルトの名無しさん
2006/06/11(日) 21:04:29素でどこら辺が半可通なのかがよくわからん。
その程度書き間違えるのは頭が可哀想な子だよね、とか?
005139
2006/06/11(日) 21:08:260052デフォルトの名無しさん
2006/06/11(日) 21:30:05「ヘタだなぁ」と思うコードの例か?
おまえの環境は知らんけど、俺の環境では fclose() に NULL を渡した
ときの挙動はドキュメントにない。
あと、fprintf() でエラーチェックしてるくせに、fclose() でエラー
チェックしないのはバグと言われてもしょうがないレベルだと思うぞ。
まあ、stdout にエラーメッセージを表示するなんてことは普通やらん
が仕様ならしょうがないかもな。
0053デフォルトの名無しさん
2006/06/11(日) 21:35:030054デフォルトの名無しさん
NGNG左に定数を置くスタイルは昔から是非が議論されてるけど、
そのあたりの議論を把握してないで、そのスタイルを採用して
そうだから「半可通」。
0055デフォルトの名無しさん
2006/06/11(日) 21:36:57言われてわかった。正直すまんかった。
0056デフォルトの名無しさん
2006/06/11(日) 21:38:31そういう意味じゃなくて>>52はコードバグってると言いたいと。
0057デフォルトの名無しさん
2006/06/11(日) 21:42:36とにかく漏れがアホであることは間違いなかったので済まん。
0058デフォルトの名無しさん
2006/06/11(日) 21:46:06「頭脳明晰な俺が『fclose() に NULL を渡す経路がある』と
読み間違えるからgotoは使っては駄目なんだ」
と言いたいのでは?
0059デフォルトの名無しさん
2006/06/11(日) 22:16:37FILE *LogFile;
LogFile = fopen("result.log", "a");
if (NULL == LogFile) {
goto ERROR_BREAK1;
}
if (0 > fprintf(LogFile, "%s\n", Message) {
goto ERROR_BREAK2;
}
fclose(LogFile);
return 0;
ERROR_BREAK2:
fclose(LogFile);
ERROR_BREAK1:
printf("Logging FAILED!\n");
return 1;
}
ってかおまい、エラー処理でgoto 使ったことないだろ。
0060デフォルトの名無しさん
2006/06/11(日) 23:10:25> ERROR_BREAK1:
こんな意味のない名前をつける奴は「ヘタだなぁ」と思う。
0061デフォルトの名無しさん
2006/06/11(日) 23:23:140062デフォルトの名無しさん
2006/06/11(日) 23:37:44なんか飛び先が2つになった時点で全然綺麗に見えなくなってきた。
そういうコードになるならわざわざgoto使う意味がわからない。
0063デフォルトの名無しさん
2006/06/11(日) 23:44:070064デフォルトの名無しさん
2006/06/11(日) 23:47:550065デフォルトの名無しさん
2006/06/11(日) 23:48:24int WriteLog(char* Message) {
FILE *LogFile;
LogFile = fopen("result.log", "a");
if (NULL == LogFile) {
goto ERROR_BREAK;
}
if (0 > fprintf(LogFile, "%s\n", Message) {
fclose(LogFile);
goto ERROR_BREAK;
}
fclose(LogFile);
return 0;
ERROR_BREAK:
printf("Logging FAILED!\n");
return 1;
}
とどう違う?
0066デフォルトの名無しさん
2006/06/11(日) 23:49:050067デフォルトの名無しさん
2006/06/11(日) 23:50:240068デフォルトの名無しさん
NGNG飛び先が二つあるのと、fclose(...)が二箇所になってしまってるのが、いまいちだな。
0069デフォルトの名無しさん
2006/06/11(日) 23:51:33if(LogFile){
fclose(LogFile);
}
でいいんじゃないか。
0070デフォルトの名無しさん
2006/06/11(日) 23:53:55FILE *LogFile = NULL;
にして閉じるときに
if(LogFile)fclose(LogFile);
ってやればいいんだろ?
つーか、それにしたってちょっとつまづくだけで
飛び先2つにしたりアホな改変やるやつがいるってことがわかった。
やっぱりgotoは駄目だな。
0071デフォルトの名無しさん
2006/06/11(日) 23:54:050072デフォルトの名無しさん
NGNG...
if (エラー判定1) break;
...
if (エラー判定1) break;
...
return;
} while(0);
...
エラー処理
return;
これなら、goto使わずに、エラー処理まで飛ばせるけど、
goto使ったほうがましか。。。
0073デフォルトの名無しさん
2006/06/11(日) 23:57:27LogFile の初期化は不要
>やっぱりgotoは駄目だな。
「使うのが難しい」という事と「使うのが駄目」は同じでは無いよw
0074デフォルトの名無しさん
2006/06/11(日) 23:58:020075デフォルトの名無しさん
2006/06/11(日) 23:58:28俺もそうするか、もしくは fopen() できなかったら
エラーメッセージ吐いてすぐリターンかな。
多くの場合は、fopen() のエラーと fprintf()/fclose() の
エラーでは、対応方法が違うからメッセージ変えたほうが親
切だし。
0076デフォルトの名無しさん
2006/06/11(日) 23:59:59いや、でも、一瞬そうするしかないような錯覚に陥らせるのも事実だし、
初期化の方法が複雑になったときに確かに飛び先を分岐させるとかそういう方向へ
いってしまうことが十分考えられる。
最初に出たgotoの初期化失敗時の記述はたしかに綺麗と言えばそうだったが、
なんの拡張性ももたないコードなのかもしれないとちょっと思った。
0077デフォルトの名無しさん
2006/06/12(月) 00:01:11fopenする前にエラー処理に飛ばされる可能性も考えると、
初期化しといた方がいいな。
0078デフォルトの名無しさん
2006/06/12(月) 00:05:57誰にでも分かるVBにしませんか?
0079デフォルトの名無しさん
NGNG見たことあるけど、あれもイマイチだしなぁ。
0080デフォルトの名無しさん
2006/06/12(月) 00:07:420081デフォルトの名無しさん
2006/06/12(月) 00:08:04流れ的にCの話をしているんだと思うが。
C++の話なら迷わず例外を投げるはずだ。
0082デフォルトの名無しさん
2006/06/12(月) 00:08:44コンパイラがC++0xに準拠するまで待つw
008373
2006/06/12(月) 00:09:30関数自体に拡張性を持たせるべきと思うなら
あの関数自体のインターフェースに文句をつけるべきでは?
>>77
一部で防衛的プログラミングと呼ばれている手法ね。
「ローカル変数も全て初期化すべき」とかいう考え方に似ているねw
凝集度という言葉を知っていますか?
0084デフォルトの名無しさん
2006/06/12(月) 00:11:38ええ?
インターフェースが変わると変わっちゃうコードかなぁ?
なんかおかしなこといってねぇ?
0085デフォルトの名無しさん
NGNGhttp://www.atmark.gr.jp/~s2000/r/rtl/try.html
returnは使えない。
returnもマクロ化すれば使えるだろうけど、こういうマクロはかえって、
バグの温床になりそうで、使えない。。。
0086デフォルトの名無しさん
2006/06/12(月) 00:15:300087デフォルトの名無しさん
2006/06/12(月) 00:22:00int WriteLog(char* Message) {
/* 2006-06-12 引数チェック追加 */
if(Message == 0){
goto ERROR_BREAK;
}
FILE *LogFile = 0;
LogFile = fopen("result.log", "a");
if (NULL == LogFile) {
ERROR_BREAK;
というようなメンテナンスされると無力なんだよな。
008883
2006/06/12(月) 00:22:16おかしな事を言っているつもりは無いけど。
>>76 が「拡張性」って錦の御旗のような言葉を使ったから
少しはぐらかしてみただけだよ。
単にYAGNIって言えば良かった?
0089デフォルトの名無しさん
2006/06/12(月) 00:22:54ラベル使ってるのか。同じスコープ内で使ったら見つからないバグとして現れそうだな・・・。
俺もsetjmp使った例外機構モドキ作ったことあるけど、
その上でsetjmpやgotoを使う場合を考えると、どうしても実用化には持ち込めなかった。
0090デフォルトの名無しさん
2006/06/12(月) 00:23:34お前もう黙っとけw
0092デフォルトの名無しさん
2006/06/12(月) 00:32:18そうだね。端的に言って流れを飛ばすマクロは利点に比べて副作用が大きすぎるように思う。
0093デフォルトの名無しさん
2006/06/12(月) 00:34:33ローカル変数って関数のショッパナで宣言&初期化なるんじゃなかったっけ?
0094デフォルトの名無しさん
2006/06/12(月) 00:38:09ただしスレの流れ的には、C言語が対象のようなので、おまえは当分
ROM っとけと思う。
0095デフォルトの名無しさん
2006/06/12(月) 00:45:13え?で?どっちなの?
0096デフォルトの名無しさん
2006/06/12(月) 00:50:59Cでも規格によって書けたり書けなかったりする。
0097デフォルトの名無しさん
2006/06/12(月) 00:52:10(古い)C言語ではそう。
最近のコンパイラは平気でC99なコード通したりするけどな。
0098デフォルトの名無しさん
2006/06/12(月) 01:24:28穴の相手ないスクール水着は脱げるのか脱げないのか、どっちになったのだね
0099デフォルトの名無しさん
2006/06/12(月) 01:27:520100デフォルトの名無しさん
2006/06/12(月) 01:53:21議論がループして面白くないよ
0101デフォルトの名無しさん
2006/06/12(月) 02:20:02コールバック関数を受け取る非メンバ関数。
int hoge( int (CALLBACK*)(void) );
こーいうのがあるとグロー○ル変数を使わざるを得なくなる。
0102101
2006/06/12(月) 02:24:32int hoge( int (*CALLBACK)(void) );
0103デフォルトの名無しさん
2006/06/12(月) 04:31:18int ret = 0;
if(!init1()) goto fin1;
if(!init2()) goto fin2;
if(!init3()) goto fin3;
if(exec()) ret = 1;
exit3();
fin1: exit2();
fin2: exit1();
fin3; return ret; }
bar(){
int ret = 0;
if(init1()){
if(init2()){
if(init3()){
if(exec())
ret = 1;
exit3();
}
exit2();
}
exit1();
}
return ret; }
baz(){
if(!init1()) return 0;
if(!init2(){ exit1(); return 0; }
if(!init3()){ exit2(); exit1(); return 0; }
if(!exec()){ exit3(); exit2(); exit1(); return 0; }
exit3(); exit2(); exit1();
return 1; }
0104デフォルトの名無しさん
2006/06/12(月) 04:58:00インデントはタブにすべき、スペースにすべきいってる奴といっしょ。
てか何年前から同じこと話してるの。
でも、馬鹿は自分の方法が絶対に正しいと信じて疑わないんだよな。
タブ使いたきゃタブ使えばいいし、スペースがよかったらスペース使え。
結論も出たところでグローバル変数以外の話題どうぞ↓
0105デフォルトの名無しさん
2006/06/12(月) 05:12:32if(a==2){
}
if(a == 2){
}
if (a == 2) {
}
if ( a == 2 ) {
}
if ( 2 == a ) {
}
0106デフォルトの名無しさん
2006/06/12(月) 05:25:31}
理由は もし A が 2 なら という言葉と順序が同じだから意味わかりやすい。
0107デフォルトの名無しさん
2006/06/12(月) 06:21:07>>106と同じ。
・制御文の後の"(”との間は空ける
・関数の関数名と"(”との間は詰める
が対になったコーディング規約に慣れてるため。慣れだけなんだが。
あと、"()”の内側の空白は、条件が長めになったときに冗長なだけで、見やすくもなんともないので
省略する習慣。これまた習慣だけ。
0108デフォルトの名無しさん
2006/06/12(月) 07:31:56俺は
if(a == 2){
だな。
別にaと==の間とかも空けなくてもいいと思ってるけどなんか空けてる。
この辺はホントなんとなくなのでどうでもいいっちゃどうでもいい。
ただ、ifと(の間を開けてるコードとかはなんかむかつく。
この辺もなんかむかつくだけなのでどうでもいいっちゃどうでもいい。
別に下手だとは思わないけどな。
0109デフォルトの名無しさん
2006/06/12(月) 08:08:470110デフォルトの名無しさん
2006/06/12(月) 10:02:13int m_hoge;
public:
int get_hoge(){return m_hoge;}
void set_hoge(int v){m_hoge = v;}
};
いちいちgetとsetを使ってるのは下手糞なコードだと思う。
なんかクラスっぽくないし。
これは、
class T{
int m_hoge;
public:
int Hoge(){return m_hoge;}
void Hoge(int v){m_hoge = v;}
};
こうやるのがオブジェクトとゆうクラスっぽくてカッコいいと思うよね。だけどなぜか
少数派っぽいのよね・・
0111デフォルトの名無しさん
2006/06/12(月) 10:23:03お里が知れるっていうか。
0112デフォルトの名無しさん
2006/06/12(月) 10:39:22確かに後者の方がスマートだが、C++初心者が見たら「邪道だ」と言いかねない様な気がする。
0113デフォルトの名無しさん
2006/06/12(月) 10:43:13動作を関数名にするのはCからの流れというか、
たしかに下のほうがクラスっぽくはあるけどね。
>>111
同一プロジェクト内で統一されてれば文句はないなぁ。
0114デフォルトの名無しさん
2006/06/12(月) 10:49:030115デフォルトの名無しさん
2006/06/12(月) 10:52:510117デフォルトの名無しさん
2006/06/12(月) 10:54:48if((a & 0x0400) == 0x0400){
}
こんなコードを見たことがある
0118デフォルトの名無しさん
2006/06/12(月) 10:57:430119デフォルトの名無しさん
2006/06/12(月) 10:59:100120デフォルトの名無しさん
2006/06/12(月) 11:01:220121デフォルトの名無しさん
2006/06/12(月) 11:01:32漏れには
「ちょっとだけ新しいことを覚えて分かったつもりの半可通が自分よりへたっぽい香具師を見つけて喜ぶスレ」
に見える
0122デフォルトの名無しさん
2006/06/12(月) 11:02:160123デフォルトの名無しさん
2006/06/12(月) 11:03:29> 同一プロジェクト内で統一されてれば
あえてそんなルールにする意味がわからない。
0124デフォルトの名無しさん
2006/06/12(月) 11:27:28どのレスらへんが?
0125デフォルトの名無しさん
2006/06/12(月) 11:29:390126113
2006/06/12(月) 11:29:55それが好きな人もいるかもしれない。
スペースの空け方は好みの問題でしょ。
ちなみに自分のとこは
if (a == 2) {
}
で統一されてる。
0127デフォルトの名無しさん
2006/06/12(月) 11:37:22これって、スペース打つの疲れない?
0128デフォルトの名無しさん
2006/06/12(月) 11:39:530129デフォルトの名無しさん
2006/06/12(月) 11:46:46それは・・・誤り。
その引数を「引数としたいデータのポインタをメンバーとする構造体のポインタ」
とすればグロー○ル変数は使わずに済む。
#自分は決してそんな事はしないけど
0130デフォルトの名無しさん
2006/06/12(月) 12:30:49プロダクトのコードで、カッコの内側を空けてるスタイルなんて見たこと無いもん。
ネットでいかにも素人くさいやつが書いてるのはたまに見るけど。
カッコの内側を空けるのがすきなやつって、普段どんな本やコードを読み書きしてるか
想像付くよな。
0131デフォルトの名無しさん
2006/06/12(月) 12:34:38そういえば、ずっと前に見たことあるなぁ。
0132デフォルトの名無しさん
2006/06/12(月) 12:36:02信じがたいな。その経験でよく偉そうに語れたものだ。
Boostでも検索してみろ
0133デフォルトの名無しさん
2006/06/12(月) 12:44:08下手なヤシが括弧の内側を空けなかったからと言って、上手くなるわけでもない。
上手いヤシが括弧の内側を空けたからと言って、下手になるわけでもない。
単に見る人の主観の問題なのに、
プログラミングレベルにこじつける神経が理解できない。
0134デフォルトの名無しさん
2006/06/12(月) 12:50:08横道にそれるが、これだとm_hogeをプライベートにしてる意味無くね?
0135デフォルトの名無しさん
2006/06/12(月) 12:54:18もともとC++の特性を学ぶ為に作られたコードだから、そこまで考えて書いたコードじゃないんじゃね?
0136デフォルトの名無しさん
2006/06/12(月) 12:58:26これ常識
0137デフォルトの名無しさん
2006/06/12(月) 13:25:39(25) public variable
インスタンス変数は,極力publicにせず,妥当なアクセスメソッドを設けること.
理由: オブジェクト指向の標準.クラスの内部状態に勝手にアクセスさせるのはよくない.ただし,以下の条件をすべて満たす場合,インスタンス変数をpublicにし,直接アクセスさせてもよい.
l そのインスタンス変数が他のインスタンス変数と独立であり,単独で変更されても内部の整合性をくずさない.
l どちらにしても,getX()/setX() メソッドを書く.
l インスタンス変数の実装が将来に渡って変更されないことが根拠付けられる.
また,上記に当てはまらない場合でも,極度に速度を気にする場合は,この限りではない.(ただし,慎重にコメントすること)
例: Stackクラスにおいて,itemCount属性をpublicにしてはならないが,Pointクラスにおいてx, yをpublicにしてもいいかもしれない(極端に速度を気にする場合, ex. Java3D の Vector/Point クラス).
0138デフォルトの名無しさん
2006/06/12(月) 13:28:51if( a==0) とか、if( a+b > 1 ) とか、if (a - b >0)
なんてのが俺のコードには混在している。
でもこの程度の判定文で不統一でも何も困らない。
0139デフォルトの名無しさん
2006/06/12(月) 13:43:58?
複数のフラグ(ビット)が全部TRUEか調べたいときそういうふうに書かいたりしないか?
0140デフォルトの名無しさん
2006/06/12(月) 13:44:13これは酷い。
0141デフォルトの名無しさん
2006/06/12(月) 13:49:09しません
0142デフォルトの名無しさん
2006/06/12(月) 13:58:450143デフォルトの名無しさん
2006/06/12(月) 14:00:530x0400 が 0x04A5 に変わっても ((a & x) == x) ってしないの?
即値使ってるのがダメってこと?
0144デフォルトの名無しさん
2006/06/12(月) 14:11:10if(!(a ^ 0x04A5))
の方がいいのかな?
0145デフォルトの名無しさん
2006/06/12(月) 14:14:080146デフォルトの名無しさん
2006/06/12(月) 14:36:32a = 0x14A5 で false になっちゃうよ。
0147デフォルトの名無しさん
2006/06/12(月) 14:50:34double sroot(double x);
・
・
・
double sroot(double x){
return sqrt(x);
}
これは酷い。
0148デフォルトの名無しさん
2006/06/12(月) 14:57:090149デフォルトの名無しさん
2006/06/12(月) 14:58:420150デフォルトの名無しさん
2006/06/12(月) 15:03:24するーと?
0151デフォルトの名無しさん
2006/06/12(月) 15:08:28後で自前のとっても速いsqrtに置き換えるつもりだったのでは?
と無理を押して擁護してみる
0152デフォルトの名無しさん
2006/06/12(月) 15:28:45自社内で共通関数ライブラリを作る時に
チェックや変換系は全て同じライブラリからの呼び出しにしたい、
でも車輪を再発明するのは嫌だ、
なんて時の苦肉の策、て感じかな。
ととても頑張って擁護してみる。
0153デフォルトの名無しさん
2006/06/12(月) 15:38:380154デフォルトの名無しさん
2006/06/12(月) 16:08:460155デフォルトの名無しさん
2006/06/12(月) 16:22:100156デフォルトの名無しさん
2006/06/12(月) 16:47:010157デフォルトの名無しさん
2006/06/12(月) 17:07:18なんでだよ。square root (平方根)の略だろうが。
0158デフォルトの名無しさん
2006/06/12(月) 20:26:52ただでさえ意味がわからねービットフラグを16進なんかで比較していい気になってるところが
確かに気持ち悪いなぁーって思う。
しかも、複数のビットが立ってることを同時に判定してるとかわけわかんね。
これでわかりやすいコード書いてると思ってたらかなり重症。
0159デフォルトの名無しさん
2006/06/12(月) 20:47:120160デフォルトの名無しさん
2006/06/12(月) 20:59:49えらく使いにくいマクロだなぁ、おい。
if(FLAGS_IS_AGE(a, 0x14A5))){
....
}
ってやるのか? (w
>>159
アフォの煽りにいちいち反応しないで、マスクしとけ。(w
0161デフォルトの名無しさん
2006/06/12(月) 21:27:32#define IS_ENEMY 0x0001 //敵の攻撃か?
#define IS_BLACK 0x0002 //そいつ黒い?
#define IS_THREE 0x0004 //3連続?
#define IS_PIZZA 0x0008 //ドム?
#define IS_JET_STREAM_ATK (IS_ENEMY | IS_BLACK | IS_THREE | IS_PIZZA)
ってやるべきだと思うね。
0162デフォルトの名無しさん
2006/06/12(月) 21:35:250163デフォルトの名無しさん
2006/06/12(月) 21:48:38できれば
(a & x) == x
なんて判定もわけわからんから関数かマクロにしたい。
0164デフォルトの名無しさん
2006/06/12(月) 21:53:32こんなバギーなマクロ組むくらいだったら、そのまま直に書いた方がいいと思われ。
まともな関数書く割には、大して汎用性と可読性の向上にならないと思われ。
つまりは好きにしろといったところだ。
0165デフォルトの名無しさん
2006/06/12(月) 21:59:1732、次世代でも64しか拡張性ないし。
0166デフォルトの名無しさん
2006/06/12(月) 22:10:560167デフォルトの名無しさん
2006/06/12(月) 22:24:17それはわけわからなきゃダメでしょ。
数値が何を意味するのかは別の問題。
0168デフォルトの名無しさん
2006/06/12(月) 22:37:18ドムから3連続の白い敵の攻撃を受けたって言う判定はどうするのさ?
0169デフォルトの名無しさん
2006/06/12(月) 22:43:540170デフォルトの名無しさん
2006/06/12(月) 22:49:49こんなの。
/* 2006-06-12 引数チェック追加 */
0171デフォルトの名無しさん
2006/06/12(月) 23:07:19コーディング規約がどうなっていようと俺は片っ端からすべて取ることにしているw
だからどうだってんだよな。
日付なんて入れて後でどうしようってのか意図がわからない。
0172デフォルトの名無しさん
2006/06/12(月) 23:11:31俺がちょっとこの範囲をコメントにしとこうってときに邪魔なんじゃボケ。
これも片っ端から//に変えさせてもらう。
0173デフォルトの名無しさん
2006/06/12(月) 23:17:30コード以前に、開発体制そのものが下手という例だな。
バージョン管理がなされてない。
0174デフォルトの名無しさん
2006/06/12(月) 23:27:500175デフォルトの名無しさん
2006/06/12(月) 23:32:20ふつーに物量多すぎて、ふつーに大変なだけでひたすら組みまくって、終わらないってただそれだけだけどなw
俺はそれしか経験したことないけど。
0176デフォルトの名無しさん
2006/06/12(月) 23:45:42でないと出口が見えないどころか遠のいていくぞ。
と言っても、まともなマネージャがいないとそういうリソー
スが取れないんだよなぁ…。
0177デフォルトの名無しさん
2006/06/12(月) 23:51:16部分的に古いコーディングスタイルを新しいものに変えたときとか。
そういうものが残っているコードは自分では仕様変更の経緯とか追えない状況になってるし。
0178デフォルトの名無しさん
2006/06/12(月) 23:51:550179デフォルトの名無しさん
2006/06/12(月) 23:53:02正直、残ってたからなんだ。って感じなんだよね。
それでどうにかしろって言われたところですげー困るし。
無いほうがいいよ。
0180デフォルトの名無しさん
2006/06/12(月) 23:56:30ていうか、確実じゃないと意味がない。
0181デフォルトの名無しさん
2006/06/13(火) 00:03:58コミットログの方が便利だし。
0182デフォルトの名無しさん
2006/06/13(火) 00:17:190183デフォルトの名無しさん
2006/06/13(火) 00:21:25擁護するわけじゃないが、 annotate じゃ削除された行については何にも出ないよ。
コメントアウトなんかで無効にして残す場合は適切な、特に
復活させる条件についてのコメントを添えてあれば文句は無い。
0184デフォルトの名無しさん
2006/06/13(火) 00:22:30どうやればコールバック関数の代わりに
構造体のポインタを渡せるのか教えて欲しい…マヂで。
まさか関数のインターフェースを書き換えるとか?
それなら素直に引数を追加しますよ。
0185デフォルトの名無しさん
2006/06/13(火) 00:28:040186デフォルトの名無しさん
2006/06/13(火) 00:29:380187デフォルトの名無しさん
2006/06/13(火) 00:30:51Win32Apiのコールバックだと引数にvoid*ってあるっしょ?
そこに好きなのいれればいいんじゃね?
俺もそこにthisポインタ入れて便利に使ってるよ。
Win32Apiだと
CreateWindowExのpParamにWM_CREATEメッセージのlParamを渡せるからそこにthisポインタ突っ込んで
そのメッセージを受け取ったところでSetWindowLong、で、別のメッセージのときはGetWindowLongで
とりあえずコールバック関数でthisポインタの取得完了。
0188デフォルトの名無しさん
2006/06/13(火) 00:36:10物によって、そのユーザが自由に使えるパラメータが渡せない物もある。
コールバック関数へのポインタのみなら、渡しようがあるまい?
0189デフォルトの名無しさん
2006/06/13(火) 00:36:42はぁ?お前101嫁ねーの?Win32APIの話なんかしてねーよ。
0190デフォルトの名無しさん
2006/06/13(火) 00:37:50どうすればいいのかを聞いてるんだろ
0191デフォルトの名無しさん
2006/06/13(火) 00:39:020192デフォルトの名無しさん
2006/06/13(火) 00:45:070193デフォルトの名無しさん
2006/06/13(火) 00:47:070194デフォルトの名無しさん
2006/06/13(火) 00:48:05素直にできないって言えよ。
0195デフォルトの名無しさん
2006/06/13(火) 00:48:130196デフォルトの名無しさん
2006/06/13(火) 00:48:53LISPってCより新しいんだっけ?
0197デフォルトの名無しさん
2006/06/13(火) 00:50:000198デフォルトの名無しさん
2006/06/13(火) 00:50:510199デフォルトの名無しさん
2006/06/13(火) 00:57:250200デフォルトの名無しさん
2006/06/13(火) 01:03:26129は101を読んだ上で、「引数としたいデータのポインタをメンバーとする構造体のポインタ」を
渡せると言っている。きっと、正攻法な素晴らしい方法があるに違いない。
0201デフォルトの名無しさん
2006/06/13(火) 01:04:340202デフォルトの名無しさん
2006/06/13(火) 01:45:51まぁこれは逃亡するしか無いだろうから、もう答えは期待できないな。
0203デフォルトの名無しさん
2006/06/13(火) 01:56:58typedef int (*CB)(void);
typedef struct{
CB f;
void* arg;
}CB_ARG;
CB_ARG cb={foo,arg};
hoge( (int (*)(void))&cb );
引数を渡すまではできたので、
誰かコールバック内で引数を取り出してください
0204デフォルトの名無しさん
2006/06/13(火) 02:01:500205デフォルトの名無しさん
2006/06/13(火) 03:48:410206デフォルトの名無しさん
2006/06/13(火) 04:30:550207デフォルトの名無しさん
2006/06/13(火) 07:08:55あるっけ?
いまのところLPVOIDもセットで渡せる奴しかみたことないけど?
0208デフォルトの名無しさん
2006/06/13(火) 11:23:57>>189
0209デフォルトの名無しさん
2006/06/13(火) 12:39:13バージョン管理にチェックインする人は「やれやれ」って思う。
0210デフォルトの名無しさん
2006/06/13(火) 12:47:58処理系依存になる(そもそもセキュアな環境では無理かもしれない)
けどしかたない。
0211デフォルトの名無しさん
2006/06/13(火) 21:32:56LISP より古い高級言語って FORTRAN、ALGOL と COBOL ぐらいしかないよ。
0212デフォルトの名無しさん
2006/06/13(火) 22:30:32え?俺はするけど?
そうしないとたとえばクライアントからのクレームや問い合わせがあったときに、いちいち
開発環境をセットアップしてビルドしなきゃならないじゃん。
0213デフォルトの名無しさん
2006/06/13(火) 22:37:270214デフォルトの名無しさん
2006/06/13(火) 22:39:37その目的には、クライアントに納品したのと同じパッケージ(メディアなりアーカイブファイルなり)を
保存しておかないのか?
0215デフォルトの名無しさん
2006/06/13(火) 22:39:490216デフォルトの名無しさん
2006/06/13(火) 22:41:56つまり、OSやコンパイラもチェックインするということか?
そこまでするのなら、HDD丸ごとバックアップ取るけど。
0217デフォルトの名無しさん
2006/06/13(火) 22:42:49もちろんするよ。
それとバージョン管理にバイナリ入れるのは、テスト機に同一バイナリを配布するのがらくだから。
また、テスト機で過去のバージョンのバイナリを簡単に取り出せるから。
0218デフォルトの名無しさん
2006/06/13(火) 22:43:39しないよ。
0219デフォルトの名無しさん
2006/06/13(火) 22:46:581〜2週間サイクルで何度もリリースを繰り返したりする場合、バイナリがリポジトリに
入ってたほうが何かと楽なんだよ。
そうじゃない奴にどう説明しても無駄だからもうレスしない。じゃ。
0220デフォルトの名無しさん
2006/06/13(火) 22:52:220221デフォルトの名無しさん
2006/06/13(火) 22:52:58いちいち開発環境を作り直すというのがわかんね。
0222デフォルトの名無しさん
2006/06/13(火) 22:58:51完膚なきまでに屈服させないと気がすまないのか?
0223デフォルトの名無しさん
2006/06/13(火) 23:00:14いちいち他のチームのライブラリとかビルドしてるのか?
0224デフォルトの名無しさん
2006/06/13(火) 23:04:02てか、つまんね。
>>209 やれやれと思うんなら、こんなところで愚痴らずにチェックインした人間に文句家。
0225デフォルトの名無しさん
2006/06/13(火) 23:13:570226デフォルトの名無しさん
2006/06/13(火) 23:24:33>>196 はイヤミだと思うよ。
0227デフォルトの名無しさん
2006/06/14(水) 00:16:41でも、もうそんなパッケージは更新しないわけでやっぱりなんかガラクタが残った感があるな。
つーか、デカイ。でかすぎ。
並のでかさじゃない。
何も考えずに丸ごととってきたら俺の会社のPC死亡確定だなw
なにせヤバイ、HDDの容量がヤバイ。
このプロジェクトだけだって30GBは超えてるのに、前のバージョンまでとってくるなんてヤバイw
0228デフォルトの名無しさん
2006/06/14(水) 00:34:30バイナリをダウンロードするのに余計に掛かる時間でビルドできるだろ!と思ってしまうが、
チェックアウトするメンバー全員がビルド環境を持ってるわけではない&デイリービルドしてない
ところではもはや常識ではないのだな。
0229デフォルトの名無しさん
2006/06/14(水) 00:45:120230デフォルトの名無しさん
2006/06/14(水) 00:46:25exeだけつけときゃいいような希ガス。
libとdllは混乱の具合が半端じゃねぇし、使うべきじゃねぇとは思うけど、
実際あると一番困るのがこれのバージョン管理なんだよな。
0231デフォルトの名無しさん
2006/06/14(水) 00:47:27世界で一番難しい言語らしいぞ。
0232デフォルトの名無しさん
2006/06/14(水) 00:49:41普通は、最終的な生成物だけを含めるものだよね。
0233デフォルトの名無しさん
2006/06/14(水) 00:54:59何が気に入らないの?反論してる人たち。
0234デフォルトの名無しさん
2006/06/14(水) 00:59:130235デフォルトの名無しさん
2006/06/14(水) 01:13:01毎回そのまんまコミットする奴がいるのよ。
0236デフォルトの名無しさん
2006/06/14(水) 01:18:11拡張子でrejectしろ。出来ない構成管理ツールなら捨てろ。もうこの話やめろ。
0237デフォルトの名無しさん
2006/06/14(水) 01:21:000238デフォルトの名無しさん
2006/06/14(水) 01:27:500239デフォルトの名無しさん
2006/06/14(水) 01:45:45GOTOとかコードの見た目の議論とか!
0240デフォルトの名無しさん
2006/06/14(水) 02:48:120241デフォルトの名無しさん
2006/06/14(水) 02:51:050242デフォルトの名無しさん
2006/06/14(水) 06:44:03なんでそんなにこの話したくないの?
話されるとまずいの?
別に君のしたい話してるわけじゃないし、嫌ならスルーすればいいじゃない。
やめろってどういうことだよ。
0243デフォルトの名無しさん
2006/06/14(水) 07:00:460244デフォルトの名無しさん
2006/06/14(水) 07:02:13スレタイなんてあくまで話のきっかけにテーマがあればいいって程度だろ?
話題があるならそれでいいじゃん。
たかだか2ちゃんのスレで何を形成しようとしてるの?
0245デフォルトの名無しさん
2006/06/14(水) 07:02:580246デフォルトの名無しさん
2006/06/14(水) 07:04:01はぁ?てめぇで勝手にルール作るな。
0247デフォルトの名無しさん
2006/06/14(水) 07:26:40それが2chで唯一のルール。でないと議論が分散するだろ?
おまいとおれらのためのルールなんだよ。わかってくれ。
0248デフォルトの名無しさん
2006/06/14(水) 07:30:19はぁ?だから勝手にルール作るなよ。
どこに書いてあんだよ。
ソースもってこい。
ついでに死ね。
0249デフォルトの名無しさん
2006/06/14(水) 07:42:320250デフォルトの名無しさん
2006/06/14(水) 08:39:290251デフォルトの名無しさん
2006/06/14(水) 09:18:170252デフォルトの名無しさん
2006/06/14(水) 09:29:30君の使ってる構成管理ツールは、拡張子ではじくことが出来るの?出来ないの?
ゴミを入れる初心者に文句言えるの?言えないの?
0253デフォルトの名無しさん
2006/06/14(水) 10:12:37入れないけど。理由は面倒くさいので説明しないけど。
0254デフォルトの名無しさん
2006/06/14(水) 10:27:070255デフォルトの名無しさん
2006/06/14(水) 10:27:51うちじゃ別に管理しているよ。
0256デフォルトの名無しさん
2006/06/14(水) 10:28:25それ何回?
0257デフォルトの名無しさん
2006/06/14(水) 10:29:58だからいいんじゃないのか
0258デフォルトの名無しさん
2006/06/14(水) 10:33:530259デフォルトの名無しさん
2006/06/14(水) 10:40:030260デフォルトの名無しさん
2006/06/14(水) 10:45:15しかも、説明もなしに例えば閉じ括弧だけとか。
0261デフォルトの名無しさん
2006/06/14(水) 11:08:220262デフォルトの名無しさん
2006/06/14(水) 11:10:59だからスレタイ嫁と何度いったら(r
0263デフォルトの名無しさん
2006/06/14(水) 11:12:13main(argc,argv)
int argc;
char **argv:
{
return 255;
}
0264デフォルトの名無しさん
2006/06/14(水) 11:21:220265デフォルトの名無しさん
2006/06/14(水) 12:06:430266デフォルトの名無しさん
2006/06/14(水) 13:09:45気がするのだが、実のところどっち?
正直K&R1stに固執する連中を理解できん。
0267デフォルトの名無しさん
2006/06/14(水) 13:27:48なんかオレが呼ばれたような希ガス
0268デフォルトの名無しさん
2006/06/14(水) 13:34:130269デフォルトの名無しさん
2006/06/14(水) 13:45:01K&Rを知らない世代がいるとは・・・
The C programming language(プログラミング言語C)という本のこと。
著者2人の頭文字をとってK&R
0270デフォルトの名無しさん
2006/06/14(水) 13:48:06例えばSetTimer使うアプリで前回のデータとデータ比較するとき
グローバル変数使わないとできなくないですか?
プロシージャの引数増やせるなら使わないでもいいんですが…。
0271デフォルトの名無しさん
2006/06/14(水) 13:53:35スレ違い
ついでにグローバル変数使わなくてもできるよ
0272デフォルトの名無しさん
2006/06/14(水) 14:01:07目の付け所がおかしいもん。
0273デフォルトの名無しさん
2006/06/14(水) 14:04:350274デフォルトの名無しさん
2006/06/14(水) 14:05:58hWndに構造体へのポインタでも仕込んどけば?
0275デフォルトの名無しさん
2006/06/14(水) 14:08:390276デフォルトの名無しさん
2006/06/14(水) 14:13:15じゃないかと邪推
0277デフォルトの名無しさん
2006/06/14(水) 15:13:150278デフォルトの名無しさん
2006/06/14(水) 15:33:170279デフォルトの名無しさん
2006/06/14(水) 15:56:100280デフォルトの名無しさん
2006/06/14(水) 16:23:190281デフォルトの名無しさん
2006/06/14(水) 20:28:400282デフォルトの名無しさん
2006/06/14(水) 20:40:560283デフォルトの名無しさん
2006/06/14(水) 21:04:100284デフォルトの名無しさん
2006/06/14(水) 21:29:29そんなことは無い。とだけいっておく。
後は自分で勉強しろ。
0285デフォルトの名無しさん
2006/06/14(水) 22:16:17Win32なら普通に32bitで戻せる。
0286デフォルトの名無しさん
2006/06/14(水) 22:19:08SetTimerを知らんのだけど引数がintでポインタにキャスト可能な環境なら
構造体のポインタ突っ込めば任意の情報を渡せる。
0287デフォルトの名無しさん
2006/06/14(水) 22:31:02変数 static にすればグローバルにせんでもいいんでない?
0288デフォルトの名無しさん
2006/06/14(水) 22:31:450289デフォルトの名無しさん
2006/06/14(水) 23:35:121度セットするとn�_秒に1回プロシージャにタイマーメッセージを投げる。
0290デフォルトの名無しさん
2006/06/14(水) 23:47:20そういう問題じゃないじゃん。
0291デフォルトの名無しさん
2006/06/14(水) 23:56:230292デフォルトの名無しさん
2006/06/15(木) 00:02:00. /////_ハ ヽ< 釣れた!> ハ
レ//j け ,fjlリ / ∨∨V ヽ h. ゚l;
ハイイト、"ヮノハ // |::: j 。 >>291
/⌒ヽヾ'リ、 // ヾ、≦ '
. { j`ー' ハ // ヽ∧∧∧∧∧∧∨/
k〜'l レヘ. ,r'ス < 初めてなのに >
| ヽ \ ト、 ヽ-kヾソ < 釣れちゃった!>
. l \ `ー‐ゝ-〈/´ / ∨∨∨∨∨∨ヽ
l `ー-、___ノ
ハ ´ ̄` 〈/‐-、
0293デフォルトの名無しさん
2006/06/15(木) 00:06:372ch初心者?そういうのはマ板でやってよ。
0294デフォルトの名無しさん
2006/06/15(木) 00:11:280295デフォルトの名無しさん
2006/06/15(木) 00:30:50戻せるけど、俺は0〜255を戻すようにしてる。他社製のアプリケーションと連携取ったり
するときに、相手側が0〜255までしか対応してなかったことがあったりしたので。
0296デフォルトの名無しさん
2006/06/15(木) 01:32:350297296
2006/06/15(木) 01:41:030298デフォルトの名無しさん
2006/06/15(木) 05:52:27ERRORLEVELは今でも255までだよ。
main()からは256以上でも戻せるけど。
0299デフォルトの名無しさん
2006/06/15(木) 05:54:480300デフォルトの名無しさん
2006/06/15(木) 08:21:45確かにunsigned intのTimerIDというものが渡せて、
イベント発生毎にTimerIDが渡ってくるので現状はそれで実現はできるが、
64bitCPUに変わったらどうなるか知らん。ってそんなとこまで考えんでもいいか。
0301デフォルトの名無しさん
2006/06/15(木) 13:00:07staticに逃げるのも間違ってるだろ。
0302デフォルトの名無しさん
2006/06/15(木) 13:23:12では正解をご教授ください。
0303デフォルトの名無しさん
2006/06/15(木) 13:46:34でもやり方は自分で調べろ。
〜というのがここまでの流れ〜
0304デフォルトの名無しさん
2006/06/15(木) 13:48:290305デフォルトの名無しさん
2006/06/15(木) 13:59:230306デフォルトの名無しさん
2006/06/15(木) 14:15:24余計分かりにくいコードになるんじゃないの?
それ自体が不具合だ。
0307デフォルトの名無しさん
2006/06/15(木) 14:30:47グローバル変数使えばいいんじゃね?^^;
0308デフォルトの名無しさん
2006/06/15(木) 14:34:27そんなもん、入り口ですぐに本来の型にキャストしておけばいいじゃん。
そう言った割り切りは時に必要だぞ。
#それとも、qsort()/bsearch()の比較関数さえ否定する?
0309デフォルトの名無しさん
2006/06/15(木) 14:43:180310デフォルトの名無しさん
2006/06/15(木) 15:10:52SetTimer()に関して言えば、TimerIDにデータを突っ込むのは間違い。
タイマの種類を識別するIDに、ポインタ突っ込んでどうするよ?
0311デフォルトの名無しさん
2006/06/15(木) 15:23:280312デフォルトの名無しさん
2006/06/15(木) 15:30:20やったことねーけど
0313デフォルトの名無しさん
2006/06/15(木) 15:33:20つまりポインタでもおk
0314デフォルトの名無しさん
2006/06/15(木) 17:11:13と断っておけばスレ違いではない、とでも
思ってるか知らんが、何で君らそういう間抜けに
付き合ってんの?
0315デフォルトの名無しさん
2006/06/15(木) 18:05:02>>309とか>>311とかな。こいつぜってーSetTimerなんて知らないぜ。
0316デフォルトの名無しさん
2006/06/15(木) 18:06:120317デフォルトの名無しさん
2006/06/15(木) 18:10:350318デフォルトの名無しさん
2006/06/15(木) 18:10:390319デフォルトの名無しさん
2006/06/15(木) 18:13:11俺はもともと相手してないけど。
>>317
だな。技術スレ以外のノイズ高すぎだなw
0320デフォルトの名無しさん
2006/06/15(木) 18:31:32>まだ初心者なんですが
と断っておけばスレ違いではない、とでも
思ってるか知らんが、何で君らそういう間抜けに
付き合ってんの?
315 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/15(木) 18:05:02
いい加減、脊髄反射的に擬似反論レスする奴の相手やめようぜ。
>>309とか>>311とかな。こいつぜってーSetTimerなんて知らないぜ。
316 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/15(木) 18:06:12
>>315おまえもな
317 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/15(木) 18:10:35
>>310>>312こいつらも知らないくせにレスしてるからな。
318 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/15(木) 18:10:39
こんなゴミレスであっても一人の初心者が一つの知識を身につけられたのだとしたらこれに勝る喜びはない。
319 名前:デフォルトの名無しさん[sage] 投稿日:2006/06/15(木) 18:13:11
>>315
俺はもともと相手してないけど。
>>317
だな。技術スレ以外のノイズ高すぎだなw
0321デフォルトの名無しさん
2006/06/15(木) 18:36:380322デフォルトの名無しさん
2006/06/15(木) 18:37:160323デフォルトの名無しさん
2006/06/15(木) 18:47:370324デフォルトの名無しさん
2006/06/15(木) 19:26:05>まだ初心者なんですが
と断っておけばスレ違いではない、とでも
思ってるか知らんが、何で君らそういう間抜けに
付き合ってんの?
といいつつ自分もつられていることにすら気づかない
大間抜けの>>314であった
0325デフォルトの名無しさん
2006/06/15(木) 21:37:010326デフォルトの名無しさん
2006/06/15(木) 21:40:48出場者を連れてこられても困ります。
0327デフォルトの名無しさん
2006/06/15(木) 22:45:270328デフォルトの名無しさん
2006/06/16(金) 00:29:40いいもの教えてやろう
SetProp
0329デフォルトの名無しさん
2006/06/16(金) 03:06:20使って良いものか時々悩む。
プロジェクトの初期段階でフレームワーク構築してる時とか。
0330デフォルトの名無しさん
2006/06/17(土) 04:04:150331デフォルトの名無しさん
2006/06/17(土) 05:51:32return i == j ? 1.0 : 0.0;
}
このコードは駄目だとJAVA WORLD様はおっしゃったとさ。
0332デフォルトの名無しさん
2006/06/17(土) 06:34:030333デフォルトの名無しさん
2006/06/17(土) 08:30:48Java よく知らんからそれが正しいかどうかは別にして
(i == j) ? 1.0 : 0.0;
i == (j ? 1.0 : 0.0);
のどっちかわかり (* にくい *) から、() つけたほうがいいと思う。
>>332
Recursive, Reentrant
0334デフォルトの名無しさん
2006/06/17(土) 08:33:44それだけ聞かれても困るが。
グローバル変数のstatic化は寧ろ歓迎すべきだし、
関数のstatic化もスコープ限定と言う意味で同様だし、
自動変数の場合にのみ状況を弁えて使わなければならないけどね。
0335デフォルトの名無しさん
2006/06/17(土) 08:58:48披露できる君はすごいね。(w
0336デフォルトの名無しさん
2006/06/17(土) 09:02:210337デフォルトの名無しさん
2006/06/17(土) 10:44:530338デフォルトの名無しさん
2006/06/17(土) 11:33:020339デフォルトの名無しさん
2006/06/17(土) 11:33:030340デフォルトの名無しさん
2006/06/17(土) 11:42:34return i == j ? 1.0 : 0.0;
を予測するのは難しいということだろ。
0341デフォルトの名無しさん
2006/06/17(土) 14:59:38半角ってなんですか?
0342デフォルトの名無しさん
2006/06/17(土) 15:14:450343デフォルトの名無しさん
2006/06/18(日) 01:50:531バイト文字だよね。
0344デフォルトの名無しさん
2006/06/18(日) 03:06:320345デフォルトの名無しさん
2006/06/18(日) 11:14:50三項演算子の優先順位は元々低いからたぶんその意見は違う。
私は()付ける派ですけど、付けない人はごろごろいるはず。
>>340
おそらくそれが正解なのだろうけど、
クラスの設計によってはそれでOKという可能性はある。
仮にもOOなのだから、
ソースの極一部だけ切り取ってこれはだめと言われてもちょっと困るかな。
0346デフォルトの名無しさん
2006/06/18(日) 13:19:43> ソースの極一部だけ切り取ってこれはだめと言われてもちょっと困るかな。
やっと正解らしきものが出たな。
完全ないちメソッドであるにもかかわらず、なにをするメソッドなのかさっぱり分からない。
わかりやすいメソッド名、仮引数名をつけましょう、というのがJAVA WORLD様の主張。
さらには「プロなら三項演算子など使わず、if文を使って見やすいコードを書く」という
驚愕の主張もなさっているが。
0347デフォルトの名無しさん
2006/06/18(日) 13:42:59Gui.Control.ToggleButton.State.Set(state ? 1 : 0);
なんてコードもif文使った方が見やすくなると信じているのだろうか。
if (state) {
Gui.Control.ToggleButton.State.Set(1);
} else {
Gui.Control.ToggleButton.State.Set(0);
}
と書いても
int iState;
if (state) {
iState = 1;
} else {
iState = 0;
}
Gui.Control.ToggleButton.State.Set(iState);
と書いても三項演算子より見やすいとは思えないのだが。
0348デフォルトの名無しさん
2006/06/18(日) 13:52:520349デフォルトの名無しさん
2006/06/18(日) 16:35:41下手だなと思ってしまう
0350デフォルトの名無しさん
2006/06/18(日) 16:39:400351デフォルトの名無しさん
2006/06/18(日) 16:44:21俺は
int iState;
if (state) {
iState = 1;
} else {
iState = 0;
}
Gui.Control.ToggleButton.State.Set(iState);
こっち↑派。(即値やめるかコメント付けるかするけど)
三項演算子はなんか嫌い。
たまに自分でもどっちがどっちだかわからなくなる。
0352デフォルトの名無しさん
2006/06/18(日) 17:06:560353デフォルトの名無しさん
2006/06/18(日) 17:13:06Gui.Control.ToggleButton.State.Set(iState);
0354デフォルトの名無しさん
2006/06/18(日) 17:15:540355デフォルトの名無しさん
2006/06/18(日) 17:20:36>>353 が下手で >>351 が下手じゃない理由を教えてくれ
0356デフォルトの名無しさん
2006/06/18(日) 17:24:58三項演算子を使うという立場なら、>>347のコードの方がシンプルだしわかりやすい。
また、stateの値をなにか別の概念の値に変換してセットするならともかく、同じ概念のものを経由
しているところが冗長。
三項演算子を使わないというポリシーなら>>351でいいと思うが?
0357デフォルトの名無しさん
2006/06/18(日) 17:31:12Gui.Control.ToggleButton.State.Set(iState);
ならいいのかな?
0358デフォルトの名無しさん
2006/06/18(日) 17:33:30良し悪しをいってるわけじゃなくて下手だと思うかどうかであって、そのコードは>>356と
全く同じ理由で下手だと思う。
0359デフォルトの名無しさん
2006/06/18(日) 17:40:360360デフォルトの名無しさん
2006/06/18(日) 17:43:460361デフォルトの名無しさん
2006/06/18(日) 17:45:25嫌いな奴は意味不明なほど毛嫌いしていて
メリットがあっても絶対に使わない。
0362デフォルトの名無しさん
2006/06/18(日) 17:59:57ほらよくいるじゃん、〜は〜であるべきと他人に説教する石頭の頑固じじいとか。
0363デフォルトの名無しさん
2006/06/18(日) 18:09:25どんな環境で生活してんだよw
0364デフォルトの名無しさん
2006/06/18(日) 18:17:580365デフォルトの名無しさん
2006/06/18(日) 18:43:01public void getInfo(HttpResponse response) {
super.setInfo(response);
}
}
AbstractFooBar#setInfo() は、AbstractFooBar が持ってる情報を
responseに格納する処理。
responseにセットするという意味で、setInfo と名づけたんだろうな。
MyFooBar を書いた人は、AbstractFooBar から情報を得るという意味で
getInfo と名前を変えたんだろうな。
なんか、こう、うーん、設計からして間違ってるような。。。
0366デフォルトの名無しさん
2006/06/18(日) 18:47:45漏れはVCしか使った事ない若造だけど、三項演算子は
デバッガでトレースするのがめんどいので避ける。
0367デフォルトの名無しさん
2006/06/18(日) 18:49:58素朴な疑問なんだが、>347のような三項演算子の使い方でもデバッガでトレースするの?
0368デフォルトの名無しさん
2006/06/18(日) 19:15:44しますが何か。
C++だとマクロや演算子オーバーロードとか
見た目じゃ判断つかないものがあるし。
もちろんじっくり読めば、どんな書き方でも分かりますが、
仕事では書く回数より、読まねばならない回数の方が多いわけで…
書く手間を惜しむよりは、読む・追う手間を優先してます。
0369デフォルトの名無しさん
2006/06/18(日) 19:20:29Gui.Control.ToggleButton.State.Set( isNotZero(state) );
みたいにマクロかインライン関数で置換してやれば良いと思ったけど…
Javaには無かったっけ。
0370デフォルトの名無しさん
2006/06/18(日) 19:26:510371デフォルトの名無しさん
2006/06/18(日) 20:07:34なんかこう、下手というものとは違った、また独特な雰囲気が・・・
0372デフォルトの名無しさん
2006/06/18(日) 20:24:03これは変な書き方をするとひどく汚いソースコードになってしまうので、
そうなってしまうくらいなら利用を全面的に控えさせた方がいいというだけです。
上手い奴はちゃんとうまく書く。
下手な奴は銃殺刑モノ。
0373デフォルトの名無しさん
2006/06/18(日) 20:25:49下手だと思ったら、さっさと書き直せ。
0374デフォルトの名無しさん
2006/06/18(日) 20:28:460375デフォルトの名無しさん
2006/06/18(日) 20:33:200376デフォルトの名無しさん
2006/06/18(日) 20:40:010377デフォルトの名無しさん
2006/06/18(日) 21:04:300378デフォルトの名無しさん
2006/06/18(日) 23:31:34特に>>351とか初期化と代入がわかれてるのとか。
0379デフォルトの名無しさん
2006/06/19(月) 00:13:23ハァ?
0380デフォルトの名無しさん
2006/06/19(月) 00:43:55可視性が悪くとも速度を求めるとこならコードを圧縮するし、
人的エラーを回避するためならあまり見かけない書き方をすることだってある。
部分的なソースだけみて判断することなどできない。
ただ、Microsoftのサンプルは糞だが
0381デフォルトの名無しさん
2006/06/19(月) 00:44:54下手なのと自分が普段使わないからって否定してるのとを混同してるヤツだな
0382デフォルトの名無しさん
2006/06/19(月) 01:00:420383デフォルトの名無しさん
2006/06/19(月) 01:01:370384デフォルトの名無しさん
2006/06/19(月) 01:01:58__,,/ _, ----`ヽ :.
:. / _ ___ 、\
/ / i \ \\ :.
:. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ
,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
:. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
|i .i l :N_, -弋 \弌弋ナ:}:.:}
:. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な…
.| :メヽ.', `ozZ} izN。ハ::{ なんなんですか?
:. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか?
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであなたたち
:. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 喧嘩してるんですか?
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
:. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:.
/ / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ',
./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ',
{ /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ
ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧|
ヽ! )人 : : :人 : : : / \! :.
" ヽ : : : : :/イ{ :.ノ: : : :.\ :.
:. \__///: :\______/: : : : : : : ヽ
/ //: : :|;|: : : : : : i: : : __: : : : ',
:. / 、 {;{ |;| . : i/. : : : : : :|
/ `Y;{. . . .|;|. : : : /i: : : : : : : : :l
0385デフォルトの名無しさん
2006/06/19(月) 01:02:35マァマァ
ここって"if (0 == fp)"とかで盛り上がるスレですから。
0386デフォルトの名無しさん
2006/06/19(月) 01:06:56>可視性が悪くとも速度を求めるとこならコードを圧縮するし、
icc使い倒してみてから同じ台詞を言ってくれ。
最早、生半可の知識で人間が工夫しても、コンパイラに勝てない時代なのかもしれないよ。
0387デフォルトの名無しさん
2006/06/19(月) 01:10:010388デフォルトの名無しさん
2006/06/19(月) 19:31:480389デフォルトの名無しさん
2006/06/19(月) 20:04:200390372
2006/06/19(月) 23:23:41全般的に変な奴がこのスレにいるなぁと思う次第。
>>380-
小手先の技術でほんの少しスピードが速くなったからと言って、
それはコンピュータの速度向上の所為であっという間に見えなくなってしまう。
だからこそ、現在のプログラミングは見通しのよい、
誰にでも分かるものが要求されている。
速度向上で大事なのは>>389のような
>処理手順を見直したり、アルゴリズムを見直したり
という大局観。
プログラマなんだから計算量理論くらい習っているんでしょ?
小手先で何かやったからってそれが意味がないことにそろそろ気づくべき。
化石プログラマと呼ばれちゃいます。
0391デフォルトの名無しさん
2006/06/19(月) 23:31:270392デフォルトの名無しさん
2006/06/19(月) 23:49:33だがしかし、ふつー、それを「コードを圧縮する」とは表現せんわな。
0393390
2006/06/19(月) 23:49:49それならいいんだけど、文面からはとてもそう読めない(w
コードを圧縮って言われてもなぁ。
「標準ライブラリで用意されているような物を長々と書くな!ライブラリを使え!」
の意味なら分からなくもない。
0394デフォルトの名無しさん
2006/06/19(月) 23:50:49無駄な一時変数は「問答無用で」悪
0395デフォルトの名無しさん
2006/06/19(月) 23:53:38>>351のは無駄な、じゃないだろ
0396390
2006/06/19(月) 23:55:310397デフォルトの名無しさん
2006/06/19(月) 23:58:210398391
2006/06/20(火) 00:00:20ある程度は好意的に受け取ってもいいんじゃまいか?と思った。
まぁここは2chだし、そうもいかないんだろうけど。
0399デフォルトの名無しさん
2006/06/20(火) 00:03:340400デフォルトの名無しさん
2006/06/20(火) 00:14:57ある意味小手先のテクを言ってるんだと思う。
0401デフォルトの名無しさん
2006/06/20(火) 00:25:550402デフォルトの名無しさん
2006/06/20(火) 00:45:07昨今の計算機では速度はほとんど問題にならないのはその通り。
だからこそ、速度が必要な個所では徹底的に速度が要求されるわけで、
小手先の技術使ってでも速くする必要があるわけだが。
0403デフォルトの名無しさん
2006/06/20(火) 00:56:07つまり糞重いゲーム3重起動してる中でツール5種類使ってるとか。
そのような場面を想定した場合、6種類目のツールは少しでも速い必要があるな。
0404デフォルトの名無しさん
2006/06/20(火) 01:00:420405デフォルトの名無しさん
2006/06/20(火) 01:05:00馬鹿?
0406デフォルトの名無しさん
2006/06/20(火) 01:06:40きちんとプロファイルを取って分析する能力が求められる時代になってきたと思うよ。
#典型的な例
for (int iy = 0; iy < height / 2; ++iy) {
for (int ix = 0; ix < width / 2; ++ix) {
array[ix + iy * width] = array[ix * 2 + iy * 2 * width];
}
}
これを
int xEnd = width / 2;
int yEnd = height / 2;
for (int iy = 0; iy < yEnd; ++iy) {
int oy = iy * width;
for (int ix = 0; ix < xEnd; ++ix) {
int od = ix + oy;
int os = ix * 2 + oy * 2;
array[od] = array[os];
}
}
こう書いたところでコンパイラによっては同程度のコードを吐く。
0407デフォルトの名無しさん
2006/06/20(火) 01:10:350408デフォルトの名無しさん
2006/06/20(火) 01:14:18これは時代とかじゃなくて当たり前の事です
0409デフォルトの名無しさん
2006/06/20(火) 01:43:26素晴らしいセンスの持ち主がおるな。
0410デフォルトの名無しさん
2006/06/20(火) 01:48:40おれも習ってないよ「計算量理論」
それってプログラムに必要なの?
0411デフォルトの名無しさん
2006/06/20(火) 01:53:36知ってるよな?
0412デフォルトの名無しさん
2006/06/20(火) 02:23:56あぁ!それなら知ってる。ありがとw
0413デフォルトの名無しさん
2006/06/20(火) 08:05:10その手のコードならGPU使うのが定石かな。
0414デフォルトの名無しさん
2006/06/20(火) 11:10:460415デフォルトの名無しさん
2006/06/20(火) 11:33:00(1 .. 100).each { |i|
begin
open("http://vista.x0.com/index.php?page=#{i}").each_line { |l|
if /(vi\d{10}.jpg)/ === l and !File.exist?($1)
open($1, 'wb') { |out|
out.write(open("http://vista.x0.to/img/#{$1}", 'rb').read)
}
end
}
ensure
end
}
0416デフォルトの名無しさん
2006/06/20(火) 13:42:03if (c > -1) {
append(c);
c = read();
while (c > -1) {
append(FOO);
append(c);
c = read();
}
}
0417デフォルトの名無しさん
2006/06/20(火) 14:26:110418デフォルトの名無しさん
2006/06/20(火) 17:28:55俺ならループの外でxEndとyEndを書いてる分
下の方がいいのかなあ、と思う反面、oy,od,osってのは
わざわざ別にしなくてもいんじゃねの?とも思うんだけど。
0419デフォルトの名無しさん
2006/06/20(火) 17:42:12ボトルネックにもなってないのに常に後者の書き方してたらアフォ。
0420デフォルトの名無しさん
2006/06/20(火) 18:10:18見てて恥ずかしいよねw
0421デフォルトの名無しさん
2006/06/20(火) 18:47:58後者のコードもinner loopに不要な式があったりしてどうかと思う。
あれを最適化してもらう目論見なら、前者で十分。
ところで画像処理とか音声処理とかやってると、ちょろちょろっと配列を操作する
コードが結構いろいろなところに出てくるので、最初のうちにアレコレ調べて初めから最適な
コード(SSEとかも使う)を書いたほうが、何も考慮しないで後でプロファイラ使うより結局は楽なことが多いよ。
ボトルネックの解消なんか繰り返してると結局全面的に書き直す羽目になったりする。
0422デフォルトの名無しさん
2006/06/20(火) 18:48:53>ボトルネックの〜なったりする。
後からボトルネックの〜なったりする。
ですた。ごめんなさい。
0423デフォルトの名無しさん
2006/06/21(水) 01:41:17>最初のうちにアレコレ調べて初めから最適なコード(SSEとかも使う)を書いたほうが
それなら、アセンブラ使った方が良いと思うが…
わざわざC/C++とかで書くのは、英語が分かるのに
日本語で書いて機械語翻訳で英文作るのと同じくらい
ナンセンス。
0424デフォルトの名無しさん
2006/06/21(水) 11:10:490425デフォルトの名無しさん
2006/06/21(水) 12:02:08>423
「英語が分かる」の程度によっては長文を早く書けるので便利。
ソース修正して実行させてまた修正してを繰り返すのと同じく、
日本語修正して繰り返し試行できるしね。
自分が知ってて読めるけど作文では思いつかない単語や構文も使ってくれるし。
また、対訳形式になってる翻訳ソフトだと日本語との整合性を保ったまま
英語と日本語の両方の文書が一度に書けてオトク。
0426デフォルトの名無しさん
2006/06/21(水) 12:52:21普通アセンブラとC/C++組み合わせるんじゃないの?
全部アセンブラなプロジェクトはほとんど無いだろ。
0427デフォルトの名無しさん
2006/06/21(水) 18:21:13アセンブラでのコードを書くほど高速化が必要じゃない部分を、
わざわざアセンブラで書く人は趣味でやってる人ぐらいでしょ。
0428デフォルトの名無しさん
2006/06/21(水) 18:39:53だけじゃないよ。
例えばCPUのレジスタを直接制御する必要があったらアセンブラが必要になるし。
#逆に寧ろ、趣味でもないのに高速化の目的でアセンブラを使うのもおかしな話だが。
0429デフォルトの名無しさん
2006/06/21(水) 18:42:130430423
2006/06/22(木) 00:52:14>423の何処に「全部」アセンブラでと書いてあるのかと個一時間…
そう読めてしまうのは分かるが、ツッコミ入れる前に
自分が誤解していないか、よく考えた方がいいぞ。
お前みたいなのがぱっと見でヘタだと判断して要らん修正し、
デグレを発生させるんだぞ?
0431デフォルトの名無しさん
2006/06/22(木) 00:53:200432デフォルトの名無しさん
2006/06/22(木) 00:56:49紛らわしい識別子命名規則でやってるのかね貴方は
0433デフォルトの名無しさん
2006/06/22(木) 01:08:57代入式で変数名を間違えたりするとアウト
undefを読んでもエラーにならない処理系ならなお悲惨
0434デフォルトの名無しさん
2006/06/22(木) 04:50:04#所詮、427を527と書いただけなんだから。
0435デフォルトの名無しさん
2006/06/22(木) 06:42:27むしろ、誤解した結果
> それなら、アセンブラ使った方が良いと思うが…
というレスがなされたと思われる。
0436デフォルトの名無しさん
2006/06/22(木) 11:46:58そもそも>>421読んでアセンブラ使わないとは思わないだろ。
SSE使うとか書いてるのに。
0437デフォルトの名無しさん
2006/06/25(日) 13:37:050438デフォルトの名無しさん
2006/06/25(日) 22:16:480439デフォルトの名無しさん
2006/06/25(日) 23:11:500440デフォルトの名無しさん
2006/06/27(火) 18:24:55if(hoge) {
#endif
:
:
#ifdef HOGE
}
#endif
0441デフォルトの名無しさん
2006/06/27(火) 19:07:17>>440
それだけだと間抜けだけど、ifdefの条件が機種依存かつ複雑化すると、結局そういうコードになりそう。
というか、オープンソースで見たことある。なんのコードだったか忘れたのが申し訳ない。
0442デフォルトの名無しさん
2006/06/27(火) 22:55:04なにに突っ込んでるのかよくわからんが、ヘッダファイルなら
#ifdef __cplusplus
extern "C" {
#endif
:
:
#ifdef __cplusplus
}; /* end of extern "C" */
#endif
と言うコードはよくみるけど。
0443デフォルトの名無しさん
2006/06/27(火) 23:39:17if(hoge)
#endif
{
:
:
}
こうしろってことじゃないの?
0444デフォルトの名無しさん
2006/06/28(水) 00:00:17if(hoge){
...
}
ってする派だから、>>443 のように書くぐらいなら >>440 のように書く。
if(hoge)
{
...
}
って書く奴なら、違和感ないのかもしれないけど…。
0445デフォルトの名無しさん
2006/06/28(水) 01:28:18#ifndef HOGE
{
#else
if(hoge){
#endif
...
}
0446デフォルトの名無しさん
2006/06/28(水) 03:22:18わざわざ論理反転させる意味があるのでなければこっちの方が良くない?
#ifdef HOGE
if(hoge){
#else
{
#endif
...
}
0447デフォルトの名無しさん
2006/06/28(水) 07:47:13if(hoge){
形式だけど、#ifを使うときは
#if HOGE
if(hoge)
#endif
{
としてる。その辺は臨機応変に。
関数の一覧を作る機能が貧弱なIDEで
>>445-446の書き方をすると、
純粋に'{'と'}'の対応が取れないと判断されて
作成に失敗したりする。某M社のIDE。
0448デフォルトの名無しさん
2006/06/29(木) 17:54:55int hoge(){
こんなマクロってやっぱヘタかな。俺的に超重宝しているのだが
0449デフォルトの名無しさん
2006/06/29(木) 17:57:11↓使い方
int hoge(){
Repeat(i, 100){
printf("%d",i);
}
return 0;
}
こんなマクロってやっぱヘタかな。俺的に超重宝しているのだが
0450デフォルトの名無しさん
2006/06/29(木) 17:57:130451デフォルトの名無しさん
2006/06/29(木) 17:59:080452デフォルトの名無しさん
2006/06/29(木) 18:03:32それがなぜ好ましくないかを実感・納得してもらうのはなかなか難しい。
コギャル語(まだあるのか?)で書かれた文章を読む方の身にもなってみろといえばわかるか。
チームで開発する時その手の俺用語がいっぱいあるといちいち定義を確認しないといけないし
余計な依存ヘッダが増えて解読が面倒なんだよ。
それにタイプ数減らすことが直接生産性に繋がるわけでもないしからメリットもほとんどない。
Repeatの挙動を一気に変える事なんてないしな。
0453デフォルトの名無しさん
2006/06/29(木) 18:09:33>>449 で納得
0454デフォルトの名無しさん
2006/06/29(木) 18:16:36スゲーよ!それ!
俺もこれからそれ使うよ!
0455デフォルトの名無しさん
2006/06/29(木) 20:49:27納得させるのは無理だw
下手なコードだからスレ違いでは無いけれど
0456デフォルトの名無しさん
2006/06/29(木) 20:51:52しばらくお待ちください。
0457デフォルトの名無しさん
2006/06/29(木) 21:17:590458デフォルトの名無しさん
2006/06/29(木) 21:47:33if (pObj) { pObj->Release(); pObj = 0; } なんてのを多用する。
これを SAFE_RELEASE(pObj) なんていうマクロにすることもある。
これを外挿して、
多くのループが必要で、かつカウンタや回数に長い変数名を使う
必要がある特殊なコードならRepeat なんていうマクロもありなのかもしれない・・・
0459デフォルトの名無しさん
2006/06/29(木) 21:50:49ヘタじゃないと思うけどなぁ
マクロアセンブラとかだとそういうの当たり前だから
そっちの出身者にとっては抵抗感少ないですよ
0460デフォルトの名無しさん
2006/06/29(木) 22:48:080461デフォルトの名無しさん
2006/06/29(木) 22:52:42良い例なのかもしれない。
0462デフォルトの名無しさん
2006/06/29(木) 22:54:58抵抗感少ないと言っているようなものでは?
0463デフォルトの名無しさん
2006/06/29(木) 23:22:59>>1
> グローバル変数の話題は禁止。
DQN への餌やりはご遠慮ください。
0464デフォルトの名無しさん
2006/06/29(木) 23:27:50Repeat(i, cnt) を使いたいという理由の有無が問題なわけで。
例えば何らかの理由で 8 重ループなんてのがあちらこちらに
出てくるようなケースだと、
Repeat8(i1,i2,i3,i4,i5,.i6,i7,i8, 2, 2, 3, 2, 4, 2, 2, 2) なんてのを
define したくなるかもしれない。
でも1重ならよほどのことが無ければ別に必要ないんでは?
0465デフォルトの名無しさん
2006/06/29(木) 23:42:37.i6 の typo はおいとくとして、こんなマクロ組むと i3 のループ回数はどれ
だったっけ? とかがぱっと見てわからない。
Repeat8 の是非は別にして、少なくとも
Repeat8(i1, 2, i2, 2, i3, 3, i4, 4, i5, 2, i6, 2, i7, 2, i8, 2)
とした方がいい。
それとも、「ヘタだなぁ」と思うマクロ の見本?
0466デフォルトの名無しさん
2006/06/29(木) 23:49:110467デフォルトの名無しさん
2006/06/29(木) 23:52:010468デフォルトの名無しさん
2006/06/30(金) 00:08:01>>466
0469デフォルトの名無しさん
2006/06/30(金) 00:47:430470デフォルトの名無しさん
2006/06/30(金) 11:43:060471デフォルトの名無しさん
2006/06/30(金) 12:41:320472デフォルトの名無しさん
2006/06/30(金) 15:04:49いや…お前のじゃないのか(;´Д`)
0473デフォルトの名無しさん
2006/06/30(金) 20:19:490474デフォルトの名無しさん
2006/06/30(金) 20:41:070475デフォルトの名無しさん
2006/06/30(金) 21:20:43あとtypedefで独自型を勝手に作るのも駄目か?
typedef char Int8;
typedef unsigned char UInt8;
typedef short Int16;
typedef unsigned short UInt16;
typedef int Int32;
typedef unsigned UInt32;
typedef float Float32;
typedef double Float64;
俺はこの方が見やすいからこうしてる。また、俺はなんでもクラス化するのが
好きだから最終的にはCVariantとかCInt(コンストラクタで符号の有無を指定)
とかやってる。もちろんCStringも独自に開発した。とくに俺のCStringはランダム要素n
0476475
2006/06/30(金) 21:26:300477デフォルトの名無しさん
2006/06/30(金) 21:39:25何のためにサイズを明記したいのかわからないが、これから64bit環境に
移行していくに当たって、サイズにかかわらないコーディングを心がける
という観点からすれば、下手。
0478デフォルトの名無しさん
2006/06/30(金) 21:48:59サイズ明示したほうがいいな、きっと。
0479デフォルトの名無しさん
2006/06/30(金) 21:56:040480デフォルトの名無しさん
2006/06/30(金) 21:57:310481デフォルトの名無しさん
2006/06/30(金) 22:01:19sys/types.hでu_charなんかがtypedefされていない処理系の話だと思うんだけど、
u_charとかu_intというtypedefじゃ駄目なの?
0482デフォルトの名無しさん
2006/06/30(金) 22:01:26ひんと: 通信 (* パケット *)
0483デフォルトの名無しさん
2006/06/30(金) 22:02:14?
0484デフォルトの名無しさん
2006/06/30(金) 22:02:57?
0485デフォルトの名無しさん
2006/06/30(金) 22:17:510486デフォルトの名無しさん
NGNGそんなの使う機会がない。
0487デフォルトの名無しさん
2006/06/30(金) 22:35:350488デフォルトの名無しさん
2006/06/30(金) 22:36:500489デフォルトの名無しさん
2006/06/30(金) 22:37:240490デフォルトの名無しさん
2006/06/30(金) 22:38:210491デフォルトの名無しさん
NGNGそれで納得するお前がヘタ。
0492デフォルトの名無しさん
2006/06/30(金) 22:43:560493デフォルトの名無しさん
2006/06/30(金) 22:58:56VoIPやってるとバイナリで規定されているフォーマットというかプロトコルなんかいくらでもあるぞ。
0494デフォルトの名無しさん
2006/06/30(金) 23:01:270495デフォルトの名無しさん
2006/06/30(金) 23:03:320496デフォルトの名無しさん
2006/06/30(金) 23:10:00そういうのヘッダファイルがあるんじゃないの?
0497デフォルトの名無しさん
2006/06/30(金) 23:14:17寝言は寝て言え。ってーかお前らホントに世界が狭いのナー。
酔っぱらってるんで煽りみたいな文体になっちゃってわるいが、
VoIP 関連ははRTSP始めとしてバリバリにバイナリの世界だし
ライブラリなんぞもほとんど整備されてない。
ファイルフォーマットに関しても静止画や動画のコンテナは殆どが
バイナリで規定されている。
最近のプロトコルはそういうの嫌ってXMLとか使ってるんだろうけど。
0498デフォルトの名無しさん
NGNG通信で構造体をそのまんま送ることなんてないだろ。
0499デフォルトの名無しさん
2006/06/30(金) 23:23:18どうでもいいけどさ、君は>>475のようなtypedefを推奨するの?
はっきりいって、ヘタでしょ、あれ。
0500デフォルトの名無しさん
2006/06/30(金) 23:23:490501デフォルトの名無しさん
2006/06/30(金) 23:24:29今も昔も、通信のメインストリームはASCIIです。
0502デフォルトの名無しさん
2006/06/30(金) 23:25:20stdintとか使え、と言うなら話は分かるが。
0503デフォルトの名無しさん
2006/06/30(金) 23:26:12そりゃ、高レベルの話だろ。ASCII(?)だろうがなんだろうが、ビット列なのに代わりはない。
0504デフォルトの名無しさん
2006/06/30(金) 23:27:190505デフォルトの名無しさん
2006/06/30(金) 23:27:25typedef char int8; はヘタで、typedef signed char int8; としろ、
という話なら合意するけど。
あとさすがに float とかは使わないな。漏れも世界が狭いのかもしれないけど。
0506デフォルトの名無しさん
2006/06/30(金) 23:27:57そりゃ、Windowsだけ
0507デフォルトの名無しさん
2006/06/30(金) 23:28:200508デフォルトの名無しさん
2006/06/30(金) 23:29:43いや、テキストで定義されたプロトコルも昔からかなり多いよ。
RPCまでテキストになってきてるのは最近だけど。
といってもASCIIだけでバイナリを意識しないんじゃ dns 一つ引けやしない
わけだけれどもね。
0509デフォルトの名無しさん
2006/06/30(金) 23:29:45話がずれてる。
typedef char Int8;
ほれ、これ使うの?
0510デフォルトの名無しさん
NGNGと、話に参加できない人がつぶやいております。
0511デフォルトの名無しさん
2006/06/30(金) 23:31:20もうわかったから。
0512デフォルトの名無しさん
2006/06/30(金) 23:32:53他にもバイナリでやり取りされるプロトコルはたくさんあるだろ。
0513デフォルトの名無しさん
2006/06/30(金) 23:33:220514デフォルトの名無しさん
2006/06/30(金) 23:34:28あー、ごめん。仕事柄、どっちかというと低レベルな分野を扱うことが多いので、
つい何の前提もなく、そっちのほうを主眼においていたわ。
TCP/IPなら、IP層の話をしてたつもり。
0515デフォルトの名無しさん
2006/06/30(金) 23:36:38読解力がないのはオマエ。>>475のようはtypedefはどうか、という話題であって、>>475の使い方がどうか、という話じゃないから。
0516デフォルトの名無しさん
NGNG文脈っていうか、脈絡がなくね?
0517デフォルトの名無しさん
2006/06/30(金) 23:37:04つまり、それこそがこの業界のメインストリームであり、>>475は素晴らしいと
おっしゃるのですな。
0518デフォルトの名無しさん
2006/06/30(金) 23:38:10はいはい、えらいえらい。
0519デフォルトの名無しさん
2006/06/30(金) 23:40:13>>475は、最終的にはCVariantとかCIntとかを使うと書いてるだろうが。
その過程のtypedefだろ。
0520デフォルトの名無しさん
NGNGたぶん全員、お前より高級。
0521デフォルトの名無しさん
2006/06/30(金) 23:42:11お前が一番痛いなw
0522デフォルトの名無しさん
2006/06/30(金) 23:42:57別にすばらしくはないが、>>475みたいなのが必要になるケースはあるということ。
0523デフォルトの名無しさん
2006/06/30(金) 23:43:32はいはい、えらいえらい。
0524デフォルトの名無しさん
2006/06/30(金) 23:47:09>>519
0525デフォルトの名無しさん
2006/06/30(金) 23:48:31と同じレベルだな。
0526デフォルトの名無しさん
2006/06/30(金) 23:50:130527デフォルトの名無しさん
2006/06/30(金) 23:51:41あと、
int i;
と
short s1;
short s2;
とかの場合、きめうちで受け取ったほうが変換したりするの?
0528デフォルトの名無しさん
2006/06/30(金) 23:52:33バカ丸出し
0529デフォルトの名無しさん
2006/06/30(金) 23:52:42stdintじゃビット幅がわかんないから明示するという話でしょ
0530デフォルトの名無しさん
2006/06/30(金) 23:53:29まぁ知らないだけで馬鹿じゃないと自負してるけど、答えたくないってことですね。了解。
0531デフォルトの名無しさん
2006/06/30(金) 23:55:19バカ丸出し
0532デフォルトの名無しさん
2006/06/30(金) 23:58:050533デフォルトの名無しさん
2006/07/01(土) 00:16:020534デフォルトの名無しさん
NGNGもうって、だれか知識自慢してた?
0535デフォルトの名無しさん
2006/07/01(土) 00:32:040536デフォルトの名無しさん
2006/07/01(土) 00:33:560537デフォルトの名無しさん
2006/07/01(土) 00:35:550538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
2006/07/01(土) 00:42:27> 多分>>475の使い方は糞、でFA。
で、理由は?
0540デフォルトの名無しさん
2006/07/01(土) 00:43:21>>498
バカ丸出し
0541デフォルトの名無しさん
2006/07/01(土) 00:43:58多分、適材適所じゃないから。
0542デフォルトの名無しさん
NGNGえ、構造体をそのまま送るの?
0543デフォルトの名無しさん
2006/07/01(土) 00:52:07ハードウェア扱ってる奴なら普通にサイズを意識して typedef するけど、
そういうのは無視と言うことか?
あと、上のほうの議論で言えばプロトコルスタックを作ってる奴とか。
て言うか、どこに使うかもわからんのに「適材適所じゃない」とか言える
なんて、ひょっとしてエスパー君? (w
0544デフォルトの名無しさん
2006/07/01(土) 00:54:39だから適材適所ならいいって言ってるだろ。
俺は>>475は多分適材適所で使ってるとは思わないだけだ。
0545デフォルトの名無しさん
2006/07/01(土) 00:56:070547544
2006/07/01(土) 01:00:26これは好みだがな。
0548デフォルトの名無しさん
2006/07/01(土) 01:01:57送らないの?
0549デフォルトの名無しさん
NGNGあんまり見たくない。
0550デフォルトの名無しさん
NGNGえー、送るのー?
知識自慢にきこえちゃうわけだ。
0551デフォルトの名無しさん
2006/07/01(土) 01:04:38送らないの?
0552デフォルトの名無しさん
2006/07/01(土) 01:05:26お前痛いよ。
黙ってろ。
0553デフォルトの名無しさん
NGNG送っちゃうわけ?
0554デフォルトの名無しさん
2006/07/01(土) 01:10:55送らないの?
0555デフォルトの名無しさん
2006/07/01(土) 01:13:32お前ら黙れ
0556デフォルトの名無しさん
2006/07/01(土) 01:23:320557デフォルトの名無しさん
NGNG構造体をそのまま送っちゃうとか言ってる人に、教えてあげる義理もないから、
これ以上言わないよ。
0558デフォルトの名無しさん
2006/07/01(土) 01:26:03送らないの?
0559デフォルトの名無しさん
NGNG文字列型の代名詞が「CString」ってのも、味わいぶかいですな。
0560デフォルトの名無しさん
2006/07/01(土) 01:28:11そういう奴多いよ。
0561デフォルトの名無しさん
2006/07/01(土) 01:28:55え?CStringじゃないの?
0562デフォルトの名無しさん
NGNGCStringでもいいよ。お好きなように。
0563デフォルトの名無しさん
2006/07/01(土) 01:31:33バイト列にプロトコルに従ってデータつめて送るなんて想像も
つかない世界なのか?
エンディアンなんてプロトコル定めた時点で決めてあるはず。
もしくはネットワークバイトオーダ。
揚げ足取りにもなってねー。
0564デフォルトの名無しさん
2006/07/01(土) 01:32:03ぱっと見て「ヘタだなぁ」と思う週末の使い方。
おれも含めて。
0565デフォルトの名無しさん
NGNG分かってないのは一人だけだから、説明してあげることもないよ。
0566デフォルトの名無しさん
2006/07/01(土) 01:34:040567デフォルトの名無しさん
2006/07/01(土) 01:35:330568デフォルトの名無しさん
2006/07/01(土) 01:38:310569デフォルトの名無しさん
2006/07/01(土) 01:43:10Windowsの人はあれが普通なのか?
0570デフォルトの名無しさん
2006/07/01(土) 01:45:36typedefするのがデフォなのか?
0571デフォルトの名無しさん
2006/07/01(土) 01:52:04> 俺は>>475は多分適材適所で使ってるとは思わないだけだ。
どこで使うかなんてどこにも書いてないと思うけど、俺には見えないものが見えてるの?
それとも、主観で嫌いと言うことで FA ?
>>570
この変数のサイズは、絶対 2 でないと困るって言う時に君ならどうする?
0572デフォルトの名無しさん
2006/07/01(土) 01:54:06しつこいな。
CVariantやCIntを使い、CStringを使うような奴が適材適所で使ってるとは思えんと
言ってるわけだが。
0573デフォルトの名無しさん
2006/07/01(土) 01:55:24ushort
0574デフォルトの名無しさん
2006/07/01(土) 01:59:28typedef unsigned char u8
typedef signed char s8
typedef float f32
とかは結構やってる(Quake、HL、Irrlicht等)。
ただいくらなんでも>>475のは汚らしい。
0575デフォルトの名無しさん
2006/07/01(土) 02:00:58それは良く見るし、俺もたまに使うよ。
0576デフォルトの名無しさん
2006/07/01(土) 02:11:55詳しく聞かれると逆切れ?
世の中、CString とか使ったアプリとそのアプリから呼ばれるドライバとかの両方を
書くプログラマもいるんだけどね。
まあ、最終的には >>545 ってことかな。
0577デフォルトの名無しさん
2006/07/01(土) 02:12:51・Int8やらfloat64やらといった物理構造を意識しまくりのtypedef
この両者を、レイヤーが異なることを明示せずに
並べて書くのが良くない気がする。
0578デフォルトの名無しさん
2006/07/01(土) 02:14:120579デフォルトの名無しさん
2006/07/01(土) 02:16:12別に切れてないが。
俺はそう思っただけの話だ。そう思わないのならそれでいい。
スレタイ読めるか?「思う」かどうかのスレだぞ。
脈絡もなく>>475のようなtypedefを使う奴はヘタだと思うぞ。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
2006/07/01(土) 02:26:07>>574のようなtypedefは使いまくりだったけど、データの意味を表す
typedefの方が多かったよ。
0582デフォルトの名無しさん
2006/07/01(土) 02:34:09ぱっと見て「切れかかってる」と思うレス
0583570
2006/07/01(土) 02:37:420584デフォルトの名無しさん
2006/07/01(土) 02:40:21まあ俺は/usr/include/sys/types.hのスタイルを好むが>>475のようなスタイルを好む奴もいるってことでしょ。
0585デフォルトの名無しさん
2006/07/01(土) 02:44:470586デフォルトの名無しさん
2006/07/01(土) 02:48:41方や社会の掃き溜めでアホが不毛な雑談で暇潰し。
この差は一体・・・
0587デフォルトの名無しさん
2006/07/01(土) 02:48:46そういうのマ板でやってよ。
0588デフォルトの名無しさん
2006/07/01(土) 02:53:48ビット幅を意識すべきところなんてどこにでも転がってるじゃん。
なんでわかってないことにしたいのかなぁ?
0589デフォルトの名無しさん
2006/07/01(土) 02:59:130590デフォルトの名無しさん
2006/07/01(土) 02:59:550591デフォルトの名無しさん
2006/07/01(土) 03:02:19思うんだけど、用意されてるのに、自前のtypedefをするのはどうかと思う。
用意されてないなら問題なし。
0592デフォルトの名無しさん
2006/07/01(土) 03:06:060593デフォルトの名無しさん
2006/07/01(土) 03:07:09いつもの奴。
0594デフォルトの名無しさん
2006/07/01(土) 03:11:03大体において文字列クラスを自作する奴は、余計な型変換をサポートしてしまうために、
それを使うコードはなんだかわけわかめ状態になりやすい。
また、そのクラスを使う奴は、いちいち標準ライブラリの使い方と同じか異なるかを
確かめないといけないのでウザい。
0595デフォルトの名無しさん
2006/07/01(土) 03:12:40ウザいことこの上ない。富○通とか。
0596デフォルトの名無しさん
2006/07/01(土) 03:23:09用意されてても、処理系毎に異なるので結局自前で typedef する時もある。
まあ、さすがに typedef の元は処理系で用意している奴にするけど。
0597デフォルトの名無しさん
2006/07/01(土) 03:51:07typedef enumで型を作りまくったことはある。
でも、使っていたコンパイラでははじいてくれなくて、
あまり意味がなかった。
0598デフォルトの名無しさん
2006/07/01(土) 04:09:34構造体つかうよ。
0599デフォルトの名無しさん
2006/07/01(土) 05:43:15m9(^Д^)プギャー!!
0600デフォルトの名無しさん
2006/07/01(土) 05:43:59それはヘタ
0601デフォルトの名無しさん
2006/07/01(土) 06:30:13富士通にいたことあるけど、STL使ってたよ。
vector、list、stringだけだったけど。
0602デフォルトの名無しさん
2006/07/01(土) 07:13:48それは下手というより>>597がそういう経験をしてその間違いをしないように成長したということを褒めてあげようや
未だにやってんならm9(^д^)
0603デフォルトの名無しさん
2006/07/01(土) 11:19:45ヘタな時間の使い方だ。
0604デフォルトの名無しさん
2006/07/01(土) 11:47:39Pascal からの転属組の俺には、>>597 の考え方はよく理解できる。
0605デフォルトの名無しさん
2006/07/01(土) 13:48:22部署やプロジェクトによって違う。
某大規模プロジェクトはSTL完全禁止。
0606デフォルトの名無しさん
2006/07/01(土) 13:59:480607デフォルトの名無しさん
2006/07/01(土) 14:05:16さぁ?
STLはbuggyだから禁止だという噂はあった。
0608デフォルトの名無しさん
2006/07/01(土) 14:15:36同様の理由によりvirtualとRTTIも勿論禁止。
あと、値渡しと区別しにくいから参照禁止。ポインタで渡してね」
0609デフォルトの名無しさん
2006/07/01(土) 14:27:43うーん、書いてみて、これはこれでありそうだ。
0610デフォルトの名無しさん
2006/07/01(土) 14:57:21VC6のSPいくつかまでの話だよな。たしか・・・。
0611デフォルトの名無しさん
2006/07/01(土) 15:00:15コードサイズが膨らむからってより、
複雑になるからって理由で禁止にしたいな。
特にテンプレートとRTTIに関しては、テンプレートは用意されてるもん(=デバッグ済み)を使う分にはいいけどね。
無駄に複雑でなにより適切というより悪用のほうが多い。
0612デフォルトの名無しさん
2006/07/01(土) 15:02:420613デフォルトの名無しさん
2006/07/01(土) 15:05:32「標準」じゃないって部分で多くのプロジェクトで使用禁止だろうな。
0614デフォルトの名無しさん
2006/07/01(土) 15:27:34Javaで非標準を禁止していたら仕事にならないよ。
PerlでCPAN禁止とか、PHPでPEAR禁止とか。
0615デフォルトの名無しさん
2006/07/01(土) 15:56:07classを自前で作るリスクに比べればコードサイズなんて・・・・
0616デフォルトの名無しさん
2006/07/01(土) 16:00:45java自体がダレダレで超いい加減だからなw
マジで動作あやしいことこの上ない。
0617デフォルトの名無しさん
2006/07/01(土) 16:02:04STLを使う分にはいいと思うけど、テンプレートは何かいいことあるか?
なんかテスト項目増えるだけじゃね?
0618デフォルトの名無しさん
2006/07/01(土) 16:58:060619デフォルトの名無しさん
2006/07/01(土) 17:00:46各々の技術レベル知識レベルで勝手にヘタだなぁと「思う」だけのスレに何の意味もない。
0620デフォルトの名無しさん
2006/07/01(土) 17:05:27何でこのスレ読んで書き込んでんの?
0621デフォルトの名無しさん
2006/07/01(土) 17:20:45性能に影響出るほどexception使っちゃ駄目だろ。
0622デフォルトの名無しさん
2006/07/01(土) 17:28:23自分より技術レベルや知識レベルが下の奴を探し出して煽るため。
0623デフォルトの名無しさん
2006/07/01(土) 17:29:23ほとんど使い捨てに近いプログラムを
エラー処理とかきっちり馬鹿丁寧に作るのは下手なコードだと思う。
0624デフォルトの名無しさん
2006/07/01(土) 17:33:280625デフォルトの名無しさん
2006/07/01(土) 17:35:380626デフォルトの名無しさん
2006/07/01(土) 17:40:45ほとんど使い捨てのつもりのプログラムが以外に使い続けられてしまう件について
0627デフォルトの名無しさん
2006/07/01(土) 17:45:47以外に使いつづけられてしまったときに堅く作り直せばいいんじゃないの?
XP的には。
0628デフォルトの名無しさん
2006/07/01(土) 17:48:100629デフォルトの名無しさん
2006/07/01(土) 18:34:12他人が使う場合には、使い捨てとわかっていてもエラー処理を書く。
0630デフォルトの名無しさん
2006/07/03(月) 00:50:03シングルス=2位
ダブルス=優勝
ミックスダブルス=優勝
団体戦=優勝
ミャオミャオタソ頑張ったけど、シングル2位だとワールドカップのオセアニア代表は無理か・・・
0631デフォルトの名無しさん
2006/07/03(月) 10:59:560632デフォルトの名無しさん
2006/07/03(月) 21:42:39多分 使い捨て ≡ なんかをちょっとテストするためのプログラムとか、
ちょっとしたデータ変換のためのスクリプトとかを意識してるんだろう
けど、世の中には銀行とかのデータ移行用のプログラムみたいに一回
しか使わないのにきちんと作る必要があるものもあるよ。
もう少しきちんと考えて書かないと、知識レベルが低く見られるよ。
0633デフォルトの名無しさん
2006/07/03(月) 21:55:240634デフォルトの名無しさん
2006/07/03(月) 22:07:330635デフォルトの名無しさん
2006/07/03(月) 22:35:00妄想 or 下っ端乙。
それ何回も使うよ。
0636デフォルトの名無しさん
2006/07/03(月) 22:59:07それってどれよ?
お前のプロジェクトは知らんけど、銀行の合併で一回こっきり
しか使わない移行プログラムなんていくらでもあるぞ。
0637デフォルトの名無しさん
2006/07/03(月) 23:19:030638デフォルトの名無しさん
2006/07/03(月) 23:23:340639デフォルトの名無しさん
2006/07/03(月) 23:25:17下っ端に確定。
君の知らないところで使われてるから。
0640デフォルトの名無しさん
2006/07/03(月) 23:26:470641デフォルトの名無しさん
2006/07/03(月) 23:27:420642デフォルトの名無しさん
2006/07/03(月) 23:38:25しれんが、たとえそうであっても、普通それを使い捨てのプログラムとは言わんわな。
でもフツーはそんなデータの移行はしないがな。
0643デフォルトの名無しさん
2006/07/03(月) 23:42:05もうアホかとバカかと。
0644デフォルトの名無しさん
2006/07/03(月) 23:45:33別にどうでもいいけど。
0645デフォルトの名無しさん
2006/07/03(月) 23:47:290646デフォルトの名無しさん
2006/07/04(火) 00:01:230647デフォルトの名無しさん
2006/07/04(火) 00:04:37kwsk
0648デフォルトの名無しさん
2006/07/04(火) 02:20:50「実績」ができてしまうと何度も使われる。
逆に何度も使うと思って丁寧に書くと、完成した頃には
ニーズが失われて結局使われない。
_、_
( ,_ノ` )y-~ 世の中そんなもんさ。
0649デフォルトの名無しさん
2006/07/04(火) 02:34:32まずは他人の書いたコードを40万行読んでその上自分で20万行書け。
話はそれからだ。
0650デフォルトの名無しさん
2006/07/04(火) 03:01:20読む:2行
書く;1行
にまからないでしょうか?
0651デフォルトの名無しさん
2006/07/04(火) 05:41:39ほほう、そこまでいかないと
if (0 == p) { ... }
について語る資格が無いということですな。
0652デフォルトの名無しさん
2006/07/04(火) 06:02:39ワロタwww
上手いwww
座布団やりたいwww
0653デフォルトの名無しさん
2006/07/04(火) 06:05:00Exactly
0654デフォルトの名無しさん
2006/07/04(火) 06:22:000655デフォルトの名無しさん
2006/07/04(火) 07:05:380656デフォルトの名無しさん
2006/07/04(火) 08:25:550657デフォルトの名無しさん
2006/07/04(火) 09:46:13うまい!
が,それは「約分」だ
0658デフォルトの名無しさん
2006/07/04(火) 09:48:02おまい、頭いいな
0659デフォルトの名無しさん
2006/07/04(火) 12:35:00一度しか使わない前提で作ったのなら作りが雑でもかまわないと思うけどね。
そんなコードを使いつづけてるほうが悪いわけで。
0660デフォルトの名無しさん
2006/07/04(火) 16:31:07使い回してしまう運用やら別プロジェクトにあるんじゃないか?
「そんな前提聞いてません」と言われたら困ってしまうが。
0661デフォルトの名無しさん
2006/07/04(火) 16:33:210662デフォルトの名無しさん
2006/07/04(火) 17:22:130663デフォルトの名無しさん
2006/07/04(火) 18:51:520664デフォルトの名無しさん
2006/07/05(水) 01:21:06わりと納得できることしか書いてなかった。
命名について章を割いてたのは
ありそうでなかったことなので評価出来るのでは?
Writing Solid Code で冒頭からハンガリアンマンセーしてたのには辟易したが。
(言語・環境問わずに無条件でマンセーしてた。)
やっぱ立ち読みして買うべきだな、書籍は。
0665デフォルトの名無しさん
2006/07/05(水) 01:41:48上司は逆に、動いていれば作りが雑でも構わないと思うだろうね。
そもそも運用が始まったら、実装担当は指示の無い限り
コードに干渉しないのが常識なんだから、手出し出来る内に
最大限の努力を払っておくべきだと思うが。
実装と運用がごっちゃのカオス状態が常識だと言うんなら
汚いコード書こうが別に構わんが。
0666デフォルトの名無しさん
2006/07/05(水) 01:50:380667デフォルトの名無しさん
2006/07/05(水) 02:11:400668デフォルトの名無しさん
2006/07/06(木) 01:11:38現実では無理だからといって理想を拒否するなよ。
できませんで終わるな。
これならできるという道を模索せよ。
0669デフォルトの名無しさん
2006/07/06(木) 01:17:49意味不明
0670デフォルトの名無しさん
2006/07/06(木) 08:26:050671デフォルトの名無しさん
2006/07/06(木) 08:28:550672デフォルトの名無しさん
2006/07/06(木) 09:20:420673デフォルトの名無しさん
2006/07/06(木) 09:31:540674デフォルトの名無しさん
2006/07/07(金) 02:20:571 1 △
― − ― = ―
3 □ ○
を満たす、0でない数字 □ △ ○ を挙げてください
重複はしません。約分して下さい。
0675デフォルトの名無しさん
2006/07/07(金) 06:36:212桁有りなら、□が4以上の数全部じゃね?
1桁だけなら、□が4以上の数で○が整数1桁で、且つ、□と被らない数探せばいいんじゃね?
0676デフォルトの名無しさん
2006/07/07(金) 07:46:281桁だけなら
□=2
○=6
△=-1
0677デフォルトの名無しさん
2006/07/07(金) 08:34:140678デフォルトの名無しさん
2006/07/07(金) 15:48:49char cmojiretu2[50];
int isoeji = 0;
int icnt = 0;
int out = 0;
char ccnt;
printf("\n圧縮前文字列→%s\n", cmojiretu); //圧縮前文字列の表示
printf("圧縮前文字数→%d\n", strlen(cmojiretu)); //圧縮前文字数の表示
do {
if(ccnt == cmojiretu[isoeji])
icnt++; //icntを1つずつずらす
else{
for(; icnt > 9; icnt -= 9)
out += sprintf(cmojiretu2 + out, "@9%c", ccnt);
if(icnt <= 3)
while(icnt--) cmojiretu2[out++] = ccnt;
else
out += sprintf(cmojiretu2 + out, "@%c%d", ccnt, icnt);
icnt = 1;
ccnt = cmojiretu[isoeji];
}
}while(cmojiretu[isoeji++]);
cmojiretu2[out++] = '\0';
printf("\n圧縮後文字列→%s\n", cmojiretu2); //圧縮後文字列の表示
printf("圧縮後文字数→%d\n", strlen(cmojiretu2)); //圧縮後文字数の表示
return 0; //main関数を終了させる
}
このC言語のコメントがわかりません、わかる方コメントをお願いします
0679デフォルトの名無しさん
2006/07/07(金) 16:27:07私にはあなたの質問の意味がわかりません。
0680デフォルトの名無しさん
2006/07/07(金) 17:10:250681デフォルトの名無しさん
2006/07/07(金) 17:12:30ぱっと見て「コメントの付け方がヘタだなぁ」と思うコード
0682デフォルトの名無しさん
2006/07/07(金) 17:27:290683デフォルトの名無しさん
2006/07/07(金) 17:36:40ヘタの見本のようなコードだな。
どこから持ってきたコードだ?
0684デフォルトの名無しさん
2006/07/07(金) 19:03:35質問じゃなくて皮肉じゃないの?
確かに書かれているコード通りの
コメントを書く意味がわからないよw
コメントの基本は何をしてるかじゃなくて
何をしたいかだからね…
0685デフォルトの名無しさん
2006/07/07(金) 19:08:090686デフォルトの名無しさん
2006/07/07(金) 19:09:000687デフォルトの名無しさん
2006/07/07(金) 19:25:520688デフォルトの名無しさん
2006/07/07(金) 19:33:27ヘタすぎる。
0689デフォルトの名無しさん
2006/07/07(金) 20:00:56char cmojiretu[50] = "AAABCCCCCCCCDDDEFGHHHHJJJ";
char cmojiretu2[50];
int isoeji = 0;
int icnt = 0;
int out = 0; // ←これだけ統一されてないのはヘタだと思う。命名法の是非は別としても。
char ccnt;
0690デフォルトの名無しさん
2006/07/07(金) 20:24:380691デフォルトの名無しさん
2006/07/07(金) 20:31:14良いコードだと思って書く下手なコードについてあれこれ言うものだから、
単に稚拙なだけのコードはスレ違いだと思う。
ちなみに
>このC言語のコメントがわかりません、わかる方コメントをお願いします
の意味は、「なんらかの理由でこのコードにコメントをつける必要が
あるのだが、どうコメントを付けていいかわからに。そこでわかる人は
コメントを付けてください」じゃないか?これもスレ違いだが。
0692デフォルトの名無しさん
2006/07/07(金) 22:18:46printf("%1d",num[j]);
flag=1;
}
出所は言わないでおくw
0693デフォルトの名無しさん
2006/07/07(金) 23:35:08SymbianOS上での開発だけど
TInt16 とか普通に使う。
そういうコーディング規約だし、アーキテクチャ的にも
T〜 とか R〜 とか C〜 とかいうプレフィクスは大事。
伽藍とバザールの、まさに「伽藍」の美しさ。
0694デフォルトの名無しさん
2006/07/08(土) 01:37:09プリフィックスがなんの役に立つの?
0695デフォルトの名無しさん
2006/07/08(土) 03:42:39ハンガリー記法を侮辱すんな
0696デフォルトの名無しさん
2006/07/08(土) 04:12:57型やらコメントやら表示する素敵IDEがあるなら
ハンガリー記法は邪魔なだけだと感じる。
0697デフォルトの名無しさん
NGNGIDEにそんな機能なくても、いらないよ。
0698デフォルトの名無しさん
2006/07/08(土) 12:08:580699デフォルトの名無しさん
2006/07/08(土) 12:32:13グローバルかメンバかローカルかスタティックか引数か?
引数なら入力か?出力か?がわかったほうが便利だと思う。
なので
gUnko
mUnko
unko
sUnko
inUnko
outUnko
にしてる。
0700デフォルトの名無しさん
2006/07/08(土) 12:45:29俺なら
char chMojiretu[50];
cahar chMojiretu2[50];
int iSoeji;
int iCnt;
int iOut;
char chCnt;
/* 初期化 */
lstrcat(&chMojiretu[0], "AABC・・・・・");
memset(&chMojiretu2[0], 0x00, sizeof(chMojiretu2));
iSoeji = 0;
iCnt = 0;
iOut = 0;
chCnt = '\0';
こう書くな。
好みの問題だけど宣言と同時に初期化は俺にとって見にくい。
0701デフォルトの名無しさん
NGNGこの場所でぴったりじゃん。
0702デフォルトの名無しさん
NGNGCならしかたないけど、C++なら宣言と同時に初期化があたりまえ。
0704デフォルトの名無しさん
2006/07/08(土) 12:51:590705デフォルトの名無しさん
2006/07/08(土) 12:52:06それって、C++ほとんどやってませんってことだよね。
あるいは、C++の機能をほとんど使わないコードしか書いてないとか。
0706デフォルトの名無しさん
2006/07/08(土) 12:57:46>>704
C89だと変数の宣言はブロックの最初だけと決まっているからと思う。
だから自然と宣言と初期化を分離する悪しきスタイルが主流になってしまう。
0707デフォルトの名無しさん
2006/07/08(土) 13:00:30Cでも極力初期化し給え。
0708デフォルトの名無しさん
2006/07/08(土) 13:01:15変数宣言なんてどこにも書けるし、for (int i = 0 ; ... ; ...) みたいな
書き方も普通にできるのにね。
0709デフォルトの名無しさん
2006/07/08(土) 13:02:08頼むから2000行もある関数(それ自体阿呆だが)の先頭で100行もの変数リストを作らんで欲しい。
#だからと言って、FILE * fpを無理やりキャストしてフラグに使うのはもっと困り者なんだが。
0710デフォルトの名無しさん
2006/07/08(土) 13:04:20もっとアプリケーションロジック寄りの意味を持つプレフィクス
(x座標を表す変数だからx〜、等)だったが、その考案者が論文に
「これは変数の"type"を表す」と書いたのが誤解されて、
ほとんど意味のない型名プレフィクスをダラダラ付ける
現在の悪名高いハンガリアンが生まれてしまったという話。
0711デフォルトの名無しさん
NGNG当然初期化はするけど、宣言と同時にはしない。
使う直前で、初期化する。
0712デフォルトの名無しさん
2006/07/08(土) 13:12:14当面使いもしないのにブロックの先頭にだらだらと宣言が並ぶのは下手に見える。
0713デフォルトの名無しさん
NGNGいや、C89の話。
0714700
2006/07/08(土) 13:16:33その通りだねー。C++とJavaはかじったぐらいなんだけど
結局俺個人としてCが一番しっくりくるんだよ。
仕事でツール作るときも全部Cなんだけど
MFC使えないから普通に全部コード書くはめになって・・・orz
0715デフォルトの名無しさん
2006/07/08(土) 13:16:380716デフォルトの名無しさん
2006/07/08(土) 13:16:460717デフォルトの名無しさん
2006/07/08(土) 13:22:510718デフォルトの名無しさん
2006/07/08(土) 13:28:55という理由で>>689のコードを>>700みたいに書き換えるのは下手にみえる。
0719700
2006/07/08(土) 13:33:47そうなのか。
いや、まあ俺も自分のコード見てPCを窓から投げ捨てたい
衝動に駆られることよくあるから。
お世辞にもうまいとはいえないと思う。
具体的にどういう初期化の指定がスマートかな
0720デフォルトの名無しさん
NGNG(やってるやつにかぎって、それが安全だって固く信じてるけど)
0721700
2006/07/08(土) 13:40:22memset()での不思議なことがあったんだが
WCHAR test[MAX_PATH];
memset(&test[0], 0x00, MAX_PATH);
にして初期化すると。
添え字の129までが0に初期化されてて
それ以降は初期化されてないっていう現象があったんだが何で何だ
sizeof()での値取得だとちゃんと260まで初期化されてたんだが。
0722デフォルトの名無しさん
2006/07/08(土) 13:46:08一度sizeofの値を出力させてみたら?
0723デフォルトの名無しさん
2006/07/08(土) 13:48:570724デフォルトの名無しさん
2006/07/08(土) 13:49:57変数のスコープが必要以上に広がらないようにするのがいいのでは。
基本的に変数は使う直前で定義(宣言+初期化)する。
あとは使う部分をブロックで囲むとか。
0725デフォルトの名無しさん
2006/07/08(土) 13:52:08ができないような古いコンパイラは捨てるのも重要。
0726700
2006/07/08(土) 13:57:48int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
CHAR MsgBuffer[256];
memset(&MsgBuffer[0], 0x00, sizeof(MsgBuffer));
wsprintf(&MsgBuffer[0], "%d", sizeof(MAX_PATH));
MessageBox(NULL, &MsgBuffer[0], "SIZEOF", MB_OK);
memset(&MsgBuffer[0], 0x00, sizeof(MsgBuffer));
wsprintf(&MsgBuffer[0], "%d", MAX_PATH);
MessageBox(NULL, &MsgBuffer[0], "MAX_PATH", MB_OK);
return 0;
}
でやったら4と260だった
ますますわからねー('A`)
0727700
2006/07/08(土) 14:01:18確かWCHARはunsigned shortだったろ
2バイトだから2が帰ってくると思うんだが
あれ・・つーかsizeofってバイトがかえってくるんだっけか!?
やべええええだとしたらおれすげー勘違い野郎かもしれない
0728700
2006/07/08(土) 14:02:05#defineってLONGだったっけ?
0729デフォルトの名無しさん
2006/07/08(土) 14:15:18この場合sizeof(MAX_PATH)には意味はない
memsetすべきサイズはsizeof(WCHAR)*MAX_PATHだろ?
0730700
2006/07/08(土) 14:16:00#include <windows.h>
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
WCHAR wBuffer[MAX_PATH];
CHAR MsgBuffer[256];
memset(&wBuffer[0], 0x00, sizeof(wBuffer));
memset(&MsgBuffer[0], 0x00, sizeof(MsgBuffer));
wsprintf(&MsgBuffer[0], "%d", MAX_PATH);
MessageBox(NULL, &MsgBuffer[0], "SIZEOF", MB_OK | MB_TOPMOST);
memset(&MsgBuffer[0], 0x00, sizeof(MsgBuffer));
wsprintf(&MsgBuffer[0], "%d", sizeof(wBuffer));
MessageBox(NULL, &MsgBuffer[0], "MAX_PATH", MB_OK | MB_TOPMOST);
return 0;
}
のsizeof(MAX_PATH)は260でsizeof(wBuffer)は520だった
ヘッダ定義だとMAX_PATHは260なんだけどなんで520になってるのかがよくわからない。
WCHARのバイト数に依存してるんだろうか・・。だとするとLONGの場合は1040って事になるわけ?
0731デフォルトの名無しさん
2006/07/08(土) 14:17:310732700
2006/07/08(土) 14:18:20あれだ配列はバイト分進むんだった。
つーか俺コンピュータの基本的な部分が根本的にダメだorz
0734デフォルトの名無しさん
2006/07/08(土) 14:26:130735デフォルトの名無しさん
2006/07/08(土) 14:27:11memset(&MsgBuffer[0], 0x00, sizeof(MsgBuffer));
という文字列領域のクリアを繰り返すのは下手すぎると思う。
まあCをろくに使えない人間みたいだから多少安全がわに倒す
という意味ではましなのかもしれないが。
0736700
2006/07/08(土) 14:33:06言われてみれば下手かもしれない。
先輩のせいにするのはよくないんだろうけど仕事場で
バッファ再利用するならクリア処理絶対つけろって言われ続けてきて
そういう癖がついちまったんだ('A`)
まあ、下手なコードの見本としてみてくれれば俺はそれでいいw
むしろ今回のsizeof()関連は俺としては非常に勉強になって満足。
「こんな事もわからないのか?」なんて馬鹿にされるだろうけどね
0737デフォルトの名無しさん
2006/07/08(土) 14:56:500738デフォルトの名無しさん
NGNGいや、安全にもなってないだろ。
0739デフォルトの名無しさん
2006/07/08(土) 15:35:45理由は?
0740デフォルトの名無しさん
2006/07/08(土) 15:41:09そういう職場なら仕方ないが、きっとしばしばデスマーチなんだろうな。
memset()の害悪の事例は散々書いたから割愛。
0741デフォルトの名無しさん
2006/07/08(土) 15:45:480742デフォルトの名無しさん
2006/07/08(土) 16:29:29デスマーチのない職場のが少ないんだから、
しばしばデスマーチだと推測しても、大半が当たるんだろうなと。
確率統計に詳しい俺様は理解したw
0743デフォルトの名無しさん
2006/07/08(土) 16:31:070744デフォルトの名無しさん
2006/07/08(土) 16:57:180745デフォルトの名無しさん
2006/07/08(土) 17:00:22おまじないばかりやってると、本当にトラブルが起きたときに対処できないよ。
0746デフォルトの名無しさん
2006/07/08(土) 17:09:420747デフォルトの名無しさん
2006/07/08(土) 17:11:39能力が低い奴は大変だな。
0748デフォルトの名無しさん
NGNGむしろ安全になるって理由を聞きたい。
0749デフォルトの名無しさん
2006/07/08(土) 17:47:00むしろ安全にならないって理由を聞きたい。
0750デフォルトの名無しさん
2006/07/08(土) 17:54:02memsetの書き間違いで更なるバッファ破壊を引き起こすデメリットで差し引き0だな。
まあ後者は任意のコードを走らせられない分まだましと言えなくもないかもしれなくもな(ry
0751デフォルトの名無しさん
2006/07/08(土) 18:00:320752デフォルトの名無しさん
NGNG> \0ターミネートし忘れても大丈夫という利点(?)と
だな。
それも利点とは言えないよな。
全部0埋めして誰が得するんだ?
0753デフォルトの名無しさん
NGNG動くぜって思ってるやつは、ちょっと自分のセンスを疑ったほうがいい。
0754デフォルトの名無しさん
2006/07/08(土) 18:06:34そんなことを思っている奴を標準にされても困ります。
0755デフォルトの名無しさん
NGNGじゃ、標準の考え方を教えてください。
0756デフォルトの名無しさん
2006/07/08(土) 18:12:480埋めをしていても、バグって、文字列の終端の0が無くなれば、
動かないぜって思ってるやつ。
0757デフォルトの名無しさん
2006/07/08(土) 18:15:110758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
2006/07/08(土) 18:18:26memsetを書き忘れても動くようにするべき
0760デフォルトの名無しさん
2006/07/08(土) 18:19:57日本語が読めないようですね。
0761デフォルトの名無しさん
NGNG日本語で説明してください。0埋めする理由。
0762デフォルトの名無しさん
2006/07/08(土) 18:29:03日本語で説明してください。0埋めして安全にならない理由。
0763デフォルトの名無しさん
2006/07/08(土) 18:33:28ANSIにきちんと従ってるCコンパイラなら、
安全確実に全ての要素を零で初期化できる。
char hoge_path[MAX_PATH] = { 0 };
struct Hoge hoge = { 0 };
0764763
2006/07/08(土) 18:36:29K&R日本語第2版だと付録A8.7(p273)辺りに詳しく書かれてます。
0765デフォルトの名無しさん
NGNG0埋め派は。
そうならそうだと言えばいいし、ちがうなら、そっちのほうの理由を書けばいい。
なんでそれができないんだろう?
理由が言えないから、またオウム返しなんだろうな。
0766デフォルトの名無しさん
2006/07/08(土) 18:39:04そんなこと初めから話してませんが。
あなたが安全にならないと主張するので、その理由を聞いてるだけです。
0767デフォルトの名無しさん
NGNGmemset()で0で埋めるって、わざわざ余計な処理をしてるほうが
理由を説明したほうがいいよ。どうしてそれで安全になるのか。
0768デフォルトの名無しさん
2006/07/08(土) 18:42:41そんなことはどうでもいいので、あなたが安全にはならないと考える理由を聞かせてください。
0769デフォルトの名無しさん
2006/07/08(土) 18:47:26>753,756,758,765,767
「バグっても動く」から0埋めするといってる奴
どこ?
とりあえず初期化されてないのは気持ち悪いから0埋めする奴
漏れ+α
0770デフォルトの名無しさん
2006/07/08(土) 18:49:30この台詞を何度聞いたことだろう。
そういう香具師に限ってバグを出すのだが……
0771デフォルトの名無しさん
2006/07/08(土) 18:50:270772デフォルトの名無しさん
2006/07/08(土) 18:50:59コンパイラによってはデバッグのためにわざわざ特定の初期値を埋めてくれるのだけど、
それを無にしてしまうことについて何か意見をどうぞ。
0773デフォルトの名無しさん
NGNGmemset()派が、意外な視点で安全になる理由を教えてくれれば、考えを改めるかもしれない。
安全になる理由を説明してください。
0774770
2006/07/08(土) 18:51:53それだと、上のほうで書いている「再利用するなら初期化しろ」に対応できないのよね。
で、そういう香具師に限ってcalloc()を知らなかったりするし。
0775デフォルトの名無しさん
2006/07/08(土) 18:51:590776769
2006/07/08(土) 18:53:29その機能、初期化漏れを検知するためにあると思うのですが。
0777デフォルトの名無しさん
2006/07/08(土) 18:53:47>安全になる理由がなさそうだから「安全にならない」と思う
それならそうと最初から言ってください。
積極的な「安全にならない」理由があるのかと思いました。
0778デフォルトの名無しさん
NGNGコンパイラがデバッグ時に、変数を特定の値で埋めるとの、memset()で0埋め派とは、
理由が違うと思われ。
memset()派は、文字列だけでしょ?
0779デフォルトの名無しさん
2006/07/08(土) 18:54:17いいえ。
0780771
2006/07/08(土) 18:55:07>上のほうで書いている「再利用するなら初期化しろ」に対応できないのよね。
再利用に対処できないからいいんジャマイカ。
0781デフォルトの名無しさん
NGNGmemset()派の安全になる理由をだれか教えてくれませんかね。
0782デフォルトの名無しさん
2006/07/08(土) 18:55:31初期化なんてありえないはずなんだがね。 C++ まで考えるともっとありえない。
0783デフォルトの名無しさん
2006/07/08(土) 18:57:21バグってるコードを実行してもエラーが発生しない可能性が上がる
という点では危険になるとも言える。
0784デフォルトの名無しさん
2006/07/08(土) 18:58:43注意散漫なプログラマが、ヌルターミネートしていない文字列を扱うときに、
ヌルターミネートが必要な何かをするときに、エンバグするのを防げる。
memsetなんかに頼らず、正しいコードを書けというのには完全に同意する。
0785763
2006/07/08(土) 19:00:00漏れは初期化は推奨するが、memsetは勧めないぞ。
0786デフォルトの名無しさん
NGNG「バグっても動く」説は「だれも言ってない」と言ってるので、
それはあたらないんじゃないんですかね。
memset()する理由をだれか教えて欲しい。
0787785
2006/07/08(土) 19:00:550788デフォルトの名無しさん
2006/07/08(土) 19:01:16例えばどのようなコードですか?
0789デフォルトの名無しさん
2006/07/08(土) 19:01:440790デフォルトの名無しさん
2006/07/08(土) 19:02:46意味が良く分かりません
0791デフォルトの名無しさん
2006/07/08(土) 19:08:31気にしなくていい。
0792デフォルトの名無しさん
2006/07/08(土) 19:10:31文字列処理の関数が最後に\0入れてくれるかどうか
曖昧に覚えててどれがどうなってるかわからないから
単純にmemsetで初期化しちゃう派。
文字列でコピーしたり、文字列のサイズ取得して直接バイト単位でコピーしたりして
その方法ごとに最後に\0付けるかどうか迷ってんのが面倒になった。
なんで、初っ端にmemsetやっておけば、ケツに\0がつくかどうかは無視れて便利。
ってやってたら、memsetで初期化するコストが馬鹿にならないぐらいの処理にブチあたって
正直、気を使ったw
0793デフォルトの名無しさん
2006/07/08(土) 19:12:300794デフォルトの名無しさん
2006/07/08(土) 19:13:39お前らみんなヘタw
0795デフォルトの名無しさん
2006/07/08(土) 19:13:44そのやり方は
文字列に\0が含まれるかどうか
文字列に\0をつけるかどうか
をいちいち気にしないといけないんで面倒じゃないか?
0796デフォルトの名無しさん
2006/07/08(土) 19:14:26エンバグはバグを入れることを言うのですか。バグを見つけると勘違い。すみませぬ。
ただ、ヌルターミネートが必要な何かをするときに、入れ忘れても動く(エンバグしない)と言ってると思いますが
それは潜在的なバグという事ではないでしょうか?
0797デフォルトの名無しさん
2006/07/08(土) 19:14:59このへんは・・・
0798デフォルトの名無しさん
2006/07/08(土) 19:15:390799デフォルトの名無しさん
2006/07/08(土) 19:16:02memsetしているから、入れ忘れは発生しないという論法。
0800デフォルトの名無しさん
2006/07/08(土) 19:16:48いや、初っ端にmemsetをする場合は\0は一切気にしなくてよくなるでしょ?
領域が全部0だから、ケツに\0がつこうかつくまいが関係ない。
0801デフォルトの名無しさん
2006/07/08(土) 19:17:32必ずmemsetしてくれるとは限らないのがポイント。
0802デフォルトの名無しさん
2006/07/08(土) 19:18:37ガベージコレクションの問題と似てるな。
0803デフォルトの名無しさん
2006/07/08(土) 19:18:55それは最初の一回だけですよね。
再利用して、次に格納する文字列が前より短ければダメですから。
1.2回目以降は短いか確認
2.毎回ヌルを入れる
の違い?
0804デフォルトの名無しさん
2006/07/08(土) 19:19:14memsetすればという話なんだが。
0805デフォルトの名無しさん
2006/07/08(土) 19:21:03そんな前提に頼るのは危険じゃないか?
0806デフォルトの名無しさん
2006/07/08(土) 19:21:06memset派はmemsetし忘れることがあるから危険という主張ですか?
0807デフォルトの名無しさん
2006/07/08(土) 19:21:48何の話をしてるんだ?
0808デフォルトの名無しさん
2006/07/08(土) 19:22:39というより、安全側に倒してくれるプログラマばかりとは限らないんで、
安全側に倒したコーディングをするべき。
0809デフォルトの名無しさん
2006/07/08(土) 19:24:11memsetしたほうが、多少安全側に倒れるという話なんだが。
0810デフォルトの名無しさん
NGNGなぜ安全になるか理由の説明がない。
0811デフォルトの名無しさん
2006/07/08(土) 19:30:50その多少安全というのは、入れ忘れても動くという事でしょうか?
0812デフォルトの名無しさん
2006/07/08(土) 19:31:20そうですね。
0813デフォルトの名無しさん
2006/07/08(土) 19:31:360814デフォルトの名無しさん
2006/07/08(土) 19:31:52入れ忘れるも何も、入れる必要が無い。
0815デフォルトの名無しさん
2006/07/08(土) 19:35:02安全側に振りたいのなら、プログラマがミスを犯さないような仕掛けを
作るべきだろ。
0816デフォルトの名無しさん
2006/07/08(土) 19:37:12だから、どのようなコードが「ミス」の例なのか教えて欲しい。
0817デフォルトの名無しさん
NGNGmemset()入れてるやつは、なんとなく空気で入れてるだけなんだろ?
0818デフォルトの名無しさん
2006/07/08(土) 19:38:52そうですね。
0819デフォルトの名無しさん
2006/07/08(土) 19:40:32いくつも出てるジャン。
0820デフォルトの名無しさん
2006/07/08(土) 19:42:17場合(主観)によるから例示は無理。
どんな例を挙げても「memset() すれば動くじゃん」って言うことができる。
0821デフォルトの名無しさん
2006/07/08(土) 19:46:31はて?
memsetで正しく動くコードがあったときに、「それはプログラマのミスを
隠蔽しているので悪」という主張じゃないの?
0822デフォルトの名無しさん
2006/07/08(土) 19:46:49納得できるかどうかわかんないけど、こんなのはどう?
struct S { char* p; float f; };
S s;
memset(&s, 0, sizeof(s));
assert(s.p == 0);
assert(s.f == 0);
// 以降にこれらの条件に依存したコード
0823デフォルトの名無しさん
2006/07/08(土) 19:49:33?
0824デフォルトの名無しさん
2006/07/08(土) 19:50:310825デフォルトの名無しさん
NGNGたとえばどれ?
0826デフォルトの名無しさん
2006/07/08(土) 19:52:43出てないよ。
0827デフォルトの名無しさん
2006/07/08(土) 19:52:470828デフォルトの名無しさん
2006/07/08(土) 19:53:150829デフォルトの名無しさん
2006/07/08(土) 19:53:150830デフォルトの名無しさん
2006/07/08(土) 19:54:32何をいいたのかわからない。
0831デフォルトの名無しさん
NGNG前スレでもmemset()で文字列クリアの話題で盛り上がったよ。
0832デフォルトの名無しさん
2006/07/08(土) 19:55:19つまり、文字列の場合は初期化じゃない(どうでもいいけど)
0833デフォルトの名無しさん
2006/07/08(土) 19:59:02移植性を考慮する場合 >>822 はミスだが、
動作環境が限定されている場合はミスではないと言える。
うーん。主張を緩くしたほうがいいかな。
memset() で正しく動くコードのうち、ほとんどの場合は
memset() を使わないコードで移植性、効率などを改良することができる。
0834デフォルトの名無しさん
2006/07/08(土) 20:00:05ヘタだけど安全になる場合もあるから、トータルで見て0クリアしとけってのも理解できなくは無い。
0835デフォルトの名無しさん
2006/07/08(土) 20:01:58>memset() で正しく動くコードのうち、ほとんどの場合は
>memset() を使わないコードで移植性、効率などを改良することができる。
いやいや、そんなこと始めっからわかってますがな。
効率悪くてもmemsetで0クリアしとけという場合の話。
0836デフォルトの名無しさん
2006/07/08(土) 20:02:110837デフォルトの名無しさん
2006/07/08(土) 20:03:56> 効率悪くてもmemsetで0クリアしとけという場合の話。
それは間違いなく下手だな。
保守性も改良することができると付け加えよう。
0838デフォルトの名無しさん
2006/07/08(土) 20:04:350839デフォルトの名無しさん
2006/07/08(土) 20:05:58ヘタじゃないとは誰も主張してないのでは?
保守性に関しては多少異論があるがまぁその話はしないでおく、
0840デフォルトの名無しさん
2006/07/08(土) 20:12:45と暗黙に主張するという効果はあるのでは?
0841デフォルトの名無しさん
2006/07/08(土) 20:21:340842デフォルトの名無しさん
2006/07/08(土) 20:22:380844デフォルトの名無しさん
2006/07/08(土) 20:50:520845デフォルトの名無しさん
2006/07/08(土) 21:03:13考えなくちゃいけないから効率が悪い。
0846デフォルトの名無しさん
2006/07/08(土) 21:05:130847763
2006/07/08(土) 21:08:250848デフォルトの名無しさん
2006/07/08(土) 21:17:190849デフォルトの名無しさん
2006/07/08(土) 21:27:37それが原因でポカミス起こすとしたら、
それは下手なプログラマー。
身の丈に合わない書き方なんてするもんじゃありません。
それこそ「ヘタだなぁ」と思われる要因となります。
勿論いつまでも「とりあえずmemset」は困りモン。
0850デフォルトの名無しさん
2006/07/08(土) 21:34:41上手いプログラムは、効率第一なので、バグが出やすい。
下手なプログラムは、安全第一なので、バグが出にくい。
コレでどちらも納得!!
か?
0851デフォルトの名無しさん
NGNG> ヘタだけど安全になる場合もあるから、
いやいや、その安全になる場合の説明を求めてるんだけど、だれもできないんだよ。
0852デフォルトの名無しさん
2006/07/08(土) 21:40:53そう切り離した問題でもない。
文字列処理で10MBぐらいあるデカイののトークン分割処理やってて、
処理の始めに固定長の作業領域とって文字列処理があるたびに
memsetで初期化してたら遅くて使い物にならなかった。
0853デフォルトの名無しさん
NGNG>>792の理由でmemset()してるなら、お話にならないくらいダメだな。
0854デフォルトの名無しさん
2006/07/08(土) 21:42:40だから、>>792だっていってるじゃん。
馬鹿なの?
人の話を聞けよ!
お前使えない奴だな。
使った文字列処理が\0が付いてるか、付いてないか気にしなくていいでしょ?
0855デフォルトの名無しさん
NGNGそんな文字列を混在させて処理して、どっちか把握できなくなるから、
全部0クリアってこと?
そんなコード書くなよ。
ようするに「バクっても動くから」ってことか > memset()使う理由。
0856デフォルトの名無しさん
2006/07/08(土) 21:49:27いや、
「memsetでクリアされてるはずだから\0を気にする必要は無い」
は、処理仕様でいいと思ってるんだけど。
そもそも文字列処理って大変じゃん。
標準関数だけの考慮でそんな処理楽とか言って無い?
既存にあるものや同僚が組んだものまでいれると\0の付加は結構大きい問題になる。
ガベージコレクションしてるから、明示的に解放しなくていいと似てる問題だな。
0857デフォルトの名無しさん
2006/07/08(土) 21:51:11とその前に↓
0858デフォルトの名無しさん
2006/07/08(土) 21:57:46・・・・・・・。
0859デフォルトの名無しさん
2006/07/08(土) 21:58:23文字列は文字のリストなんだぜ。
0860 │ ↑
2006/07/08(土) 21:59:01おらっしゃあぁぁ!!!
∩∧ ∧
ヽ( ゚Д゚)
\⊂\
O-、 )〜
∪
0861デフォルトの名無しさん
2006/07/08(土) 22:00:390862デフォルトの名無しさん
2006/07/08(土) 22:00:470863デフォルトの名無しさん
2006/07/08(土) 22:10:17p がポインタのときいちいち if (p) free(p); とかやって
NULL チェックしてるのはヘタクソだとおもう。
0864デフォルトの名無しさん
2006/07/08(土) 22:12:580865デフォルトの名無しさん
2006/07/08(土) 22:15:19freeやdeleteは内部でNULLチェックすることを
知らない人が結構いるので突っ込んであげるのが吉。
0866デフォルトの名無しさん
2006/07/08(土) 22:15:23それなんてHaskell?
0867770
2006/07/08(土) 22:19:45で、>856のような主張をする香具師に限って、sprintf()の%*.*sの使い方を知らなかったり
sscanf()の%[a-z]を知らなかったりstrncpy()ではまったり、
挙句は一文字ずつ代入するループを書いたりするんだよね。
「memset()しているから大丈夫」なんて言う前にバグの出にくいコーディングをしましょうってことで。
0868デフォルトの名無しさん
2006/07/08(土) 22:24:44大抵の場合はどうせ自前でヌルポインタチェックしないといけないんだから、
どうでもいい。
0869デフォルトの名無しさん
2006/07/08(土) 22:26:20{
printf( "安全になるよ" );
}
else
{
printf( "安全にならないよ" );
}
こんな思考ルーチン持ってると下手だなぁと思う
0870デフォルトの名無しさん
2006/07/08(土) 22:26:390871デフォルトの名無しさん
2006/07/08(土) 22:26:56関係無い話だが、freeやdeleteはチェックしてんのに、
fclose はチェックしてないのは何でだと思った。
0872デフォルトの名無しさん
2006/07/08(土) 22:27:240873デフォルトの名無しさん
2006/07/08(土) 22:32:01じゃ、逆に聞くけど、処理速度が問題にならないときに
memsetで初期化して何か問題あるの?
0874デフォルトの名無しさん
2006/07/08(土) 22:32:27・末尾のNULL文字を付加するのかしないのか統一する
・引数の順番を統一する
・コピー先バッファの長さは必ず指定できるように
これら仕様をキッチリして別名の新ライブラリを作ってくれよと
0875デフォルトの名無しさん
2006/07/08(土) 22:38:42ループさせんな。 >>782, >>783
0876デフォルトの名無しさん
2006/07/08(土) 22:41:14そのレス意味がわからない。
具体的な説明なんもないじゃん。
>>782は普通に意味不明。日本語できるのかどうかからわけわからんし。
>>783は具体的な例を出してほしい。
0877デフォルトの名無しさん
2006/07/08(土) 22:41:400878デフォルトの名無しさん
2006/07/08(土) 22:44:230879デフォルトの名無しさん
2006/07/08(土) 22:45:100880デフォルトの名無しさん
2006/07/08(土) 22:48:11折角コテハン付けているんだから、>763も読んでくれ。
>763やcallocのような方法を知ってなお、
「必ず初期化」という行為まで含めて否定するなら、
コンストラクタ論争が起きるぞ。
memsetが問題なのは、あくまでmemsetだからだ。
0881デフォルトの名無しさん
2006/07/08(土) 22:48:360882デフォルトの名無しさん
2006/07/08(土) 22:49:50ぱっと見て「ヘタだなぁ」と思う議論
0883デフォルトの名無しさん
2006/07/08(土) 22:51:420884デフォルトの名無しさん
2006/07/08(土) 22:53:150885デフォルトの名無しさん
2006/07/08(土) 22:53:27ANSI以前のコンパイラとの互換性は気にしないので付けません。
混同してはダメさね。
0886880
2006/07/08(土) 22:57:06主張:memsetで初期化するな。
論拠:正しい初期化のやり方ではないから。
0887デフォルトの名無しさん
2006/07/08(土) 23:00:20はぁ?
じゃあ、1回使った領域をもう1回初期化して使うときどうしろって言ってんだよ。
0888デフォルトの名無しさん
2006/07/08(土) 23:00:280889デフォルトの名無しさん
2006/07/08(土) 23:01:17流れ嫁、馬鹿
0890770
2006/07/08(土) 23:01:44>memsetで初期化して何か問題あるの?
memset()で安心して、バギーなコードを書く香具師そのものが問題。
例えば、文字列変換関数か何かでこんなコードを書いたとする。
void funcStr(char * dest, const char * src)
{
int strLen = strlen(src);
for (int ic = 0; ic < strLen; ++ic) {
dest[ic] = funcChr(src[ic]);
}
}
書いた本人はmemset()してからこの関数を呼ぶからバグに気づかなかったりするわけだな。
これはあくまでも咄嗟に思いついた例だが、実際にはもっと複雑なコードにこういった断片が紛れ込むから
他人にはコードを見てもバグってるかどうかなかなか判らないわけだ。
#いや、本人は自身満々だから判るわけないし。
0891763=880=886
2006/07/08(土) 23:02:58主張:memsetで初期化するな。
論拠:正しい初期化のやり方ではないから。
主張:初期化の是非とmemsetの是非を混同するな
論拠:初期化はmemsetを使わずとも>763の方法等で可能。↓
0892デフォルトの名無しさん
2006/07/08(土) 23:04:15ええー、そんな話したいの?
そんなのfuncStrの単体テストレベルの話じゃん。
0893デフォルトの名無しさん
2006/07/08(土) 23:04:39memsetの是非と初期化の是非を混同している馬鹿や、
正しい初期化の方法を知らん馬鹿が居るから書いてるんジャイ。
0894デフォルトの名無しさん
2006/07/08(土) 23:06:08改行はどうしているのかと
0895デフォルトの名無しさん
2006/07/08(土) 23:06:36誰も初期化の是非なんかはなしてないよ。
0クリアの是非ならはなしてるが。
ひょっとして>>763を誰も知らないとでも思ってるのか?
0896デフォルトの名無しさん
2006/07/08(土) 23:06:56見事に的外れ、且つ、
自分が言い出したことに引っ込みが付かなくなって苦し紛れにしたレスにしか見えない。
いい加減黙っとけ。
0897デフォルトの名無しさん
2006/07/08(土) 23:08:51>ひょっとして>>763を誰も知らないとでも思ってるのか?
念を押すと言う言葉を知らんのか。
スレを読み返せば明らかに怪しい奴がちらほら居るぞ。
それとも全部お前だったというのか。
0898デフォルトの名無しさん
2006/07/08(土) 23:09:18>>782 について、不動小数点数型とポインタ型について全ビット0で埋めることは
値を0で初期化することにならない。
>>783 の例については >>820
やっぱり無理だった例が >>890 以降の流れ。
0899デフォルトの名無しさん
2006/07/08(土) 23:10:59おめでとうございます。あなた様にぴったりな言葉が見つかりました。
「ひとり相撲」
0900デフォルトの名無しさん
2006/07/08(土) 23:13:19専ブラ使ってて、ツリー化機能があるなら>>763からツリー化してみろ。
誰もお前の相手してないのがわかるから。
0901デフォルトの名無しさん
2006/07/08(土) 23:15:22お前が色々読み飛ばしてるのは良く分かった。
0902デフォルトの名無しさん
2006/07/08(土) 23:15:39MSですらZeroMemoryしてるのに変なこだわりあるんだねw
0903デフォルトの名無しさん
2006/07/08(土) 23:16:56誤読してる奴には言われたくないなあ
0904デフォルトの名無しさん
2006/07/08(土) 23:18:25な ん で こ ん な に 伸 び て ん の ?
0905デフォルトの名無しさん
2006/07/08(土) 23:19:53まぁ好きなだけ独り言いってよ。読み飛ばすからw
0906デフォルトの名無しさん
2006/07/08(土) 23:20:24君がいなかったからw
0907デフォルトの名無しさん
2006/07/08(土) 23:20:580908デフォルトの名無しさん
2006/07/08(土) 23:21:310909デフォルトの名無しさん
2006/07/08(土) 23:21:480910デフォルトの名無しさん
2006/07/08(土) 23:22:010911デフォルトの名無しさん
2006/07/08(土) 23:22:030912デフォルトの名無しさん
2006/07/08(土) 23:23:380913901
2006/07/08(土) 23:26:51memset以外の初期化方法を知らん疑惑のある奴は>862,873。
奴らを黙らせるには、正しい方法を教えるのが手っ取り早い。
なのに殆どの奴はパフォーマンスの問題など、的外れなレスばかり。
memsetの是非と初期化(0クリア)の是非を混同してるとしか思えん。
0914デフォルトの名無しさん
2006/07/08(土) 23:27:560915デフォルトの名無しさん
2006/07/08(土) 23:30:46最近宿題スレ見始めたんだけど、ありゃヘタの宝庫だね。
だが、ただヘタなだけで面白みが無い。
たまに誰かがコードにコメントしたら、逆切れしたりする奴もいて面白い。
0916デフォルトの名無しさん
2006/07/08(土) 23:31:12面倒だから敢えて触れてないだけ。
0917デフォルトの名無しさん
2006/07/08(土) 23:34:120918デフォルトの名無しさん
2006/07/08(土) 23:34:57面倒なら763もスルーすりゃいのに。
0919デフォルトの名無しさん
2006/07/08(土) 23:37:41別に黙らせる必要なんかないのでは?
どんだけ強迫観念があるんだよ。
0920デフォルトの名無しさん
2006/07/08(土) 23:38:01面倒とか言いつつ、的外れなレスを返す辺りステキ。
0921デフォルトの名無しさん
2006/07/08(土) 23:39:590922デフォルトの名無しさん
2006/07/08(土) 23:40:00数年前の夏を思い出せ。
無駄にスレ伸ばして鯖に負担をかけるな。
0923デフォルトの名無しさん
2006/07/08(土) 23:40:46黙らせようとして、見当違いことを長文で垂れ流すほうが迷惑なのでは?
0924デフォルトの名無しさん
2006/07/08(土) 23:42:000925デフォルトの名無しさん
2006/07/08(土) 23:46:04馬鹿は荒らし同様、スルーするのが一番。
これ分かってないやつおおいんだよねー。
0926デフォルトの名無しさん
2006/07/08(土) 23:47:01なんか急に伸びる方向が変わったな。
0927デフォルトの名無しさん
2006/07/08(土) 23:48:330928デフォルトの名無しさん
2006/07/08(土) 23:52:440929デフォルトの名無しさん
2006/07/08(土) 23:54:390930デフォルトの名無しさん
2006/07/08(土) 23:55:440931デフォルトの名無しさん
2006/07/08(土) 23:58:10職についてるなら集中して仕事しろと。
0932デフォルトの名無しさん
2006/07/08(土) 23:58:400933デフォルトの名無しさん
2006/07/08(土) 23:59:21新たな馬鹿発生?
0934デフォルトの名無しさん
2006/07/09(日) 00:00:230935デフォルトの名無しさん
2006/07/09(日) 00:02:590936デフォルトの名無しさん
2006/07/09(日) 00:27:29必要なくてもゼロで初期化する習慣は良い心がけだが、
memsetでゼロクリアするのは間違い。
という結論で良いんだよな?
チャネラー公言してる上司に、変な知識を植え付けないで下さいよ?
0937デフォルトの名無しさん
2006/07/09(日) 00:29:350938デフォルトの名無しさん
2006/07/09(日) 00:33:15>必要なくてもゼロで初期化する習慣は良い心がけだが、
>memsetでゼロクリアするのは間違い。
>という結論で良いんだよな?
良いのではないでしょうか、あなたがそう思うのなら。
0939デフォルトの名無しさん
2006/07/09(日) 00:40:19見ず知らずの他人を啓蒙するほどのあなたなのですから、あなたの上司も
啓蒙して差し上げてはいかがでしょうか。
0940デフォルトの名無しさん
2006/07/09(日) 00:52:05|`l`ヽ /ヽ/ <´`ヽ u ∨ u i レ' /
└l> ̄ !i´-) |\ `、 ヽ), />/ / 地 ほ こ
!´ヽ、 ヽ ( _ U !、 ヽ。ヽ/,レ,。7´/-┬―┬―┬./ 獄 ん れ
_|_/;:;:;7ヽ-ヽ、 '') ""'''`` ‐'"='-'" / ! ! / だ. と か
| |;:;:;:{ U u ̄|| u u ,..、_ -> /`i ! ! \ :. う ら
| |;:;:;:;i\ iヽ、 i {++-`7, /| i ! ! <_ の が
__i ヽ;:;:;ヽ `、 i ヽ、  ̄ ̄/ =、_i_ ! ! /
ヽ ヽ;:;:;:\ `ヽ、i /,ゝ_/| i  ̄ヽヽ ! ! ,, -'\
ヽ、\;:;:;:;:`ー、`ー'´ ̄/;:;ノ ノ ヽ| / ,、-''´ \/ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ Y´/;:;:;\
0941デフォルトの名無しさん
2006/07/09(日) 00:53:50見ず知らずの他人を啓蒙するというより、2chを通じて遠隔操作ってのが正しい。
某板の住人らしいので、こっちの方が効果あるかなと。
0942デフォルトの名無しさん
2006/07/09(日) 00:55:32直接啓蒙すればよろしい。
0943デフォルトの名無しさん
2006/07/09(日) 00:56:360944デフォルトの名無しさん
2006/07/09(日) 01:00:06この時間帯で、スレも沈静化してるのに、
30分も立たない内にレスがくるのを期待しろと。
0945デフォルトの名無しさん
2006/07/09(日) 01:01:28ほら、また、的外れなことして、
一連の流れで\0をちゃんと付けるみたいなことで議論してたのに
いきなりクラスをmemsetでクリアするみたいな話に挿げ替えてるよね?
こういう卑怯なことするから君は嫌われるんだよw
0946デフォルトの名無しさん
2006/07/09(日) 01:04:280947デフォルトの名無しさん
2006/07/09(日) 01:11:060948デフォルトの名無しさん
2006/07/09(日) 01:12:07お前、田中だろ?
0949デフォルトの名無しさん
2006/07/09(日) 01:12:23何か壮大な勘違いをしている予感
0950デフォルトの名無しさん
2006/07/09(日) 01:13:48俺は>>945が誰なのかの方が気になるのだがw
0951デフォルトの名無しさん
2006/07/09(日) 01:16:110952デフォルトの名無しさん
2006/07/09(日) 01:21:37for(i=0;i<12;i++){
if(i*k==44){
0953デフォルトの名無しさん
2006/07/09(日) 01:24:440954デフォルトの名無しさん
2006/07/09(日) 01:27:140955デフォルトの名無しさん
2006/07/09(日) 01:29:140956デフォルトの名無しさん
2006/07/09(日) 01:38:29正解!
0957デフォルトの名無しさん
2006/07/09(日) 01:46:09for(i=0;i<12;i++){
if(i*k==44){
loop1:
goto loop2;
}
}
for(i=i*k-12;i<30;i++){
loop2:
if(i*k>36){
goto loop1;
}
}
}
なんでこんなくそコードのメンテしなきゃいけないんだよ。
無限ループの原因が分からないって、お前死ねよ。
そうだよ、川田お前の事だよ。
0958947
2006/07/09(日) 01:56:00だとしたら不安的中。漏れは↓であって>770でも>930でも無い…
>763,769,785,787,847,849,871,880,885,886,891,893,897,901,913,922,926,936,941,944,947
0959デフォルトの名無しさん
2006/07/09(日) 01:58:100960947
2006/07/09(日) 02:00:050961デフォルトの名無しさん
2006/07/09(日) 02:00:29心が痛いよ・・・
0962デフォルトの名無しさん
2006/07/09(日) 02:01:500963デフォルトの名無しさん
2006/07/09(日) 02:05:240964デフォルトの名無しさん
2006/07/09(日) 02:10:51処理(文字列等)の潜在的なバグを覆い隠す事があるからダメだよ派
・とりあえずmemset(ゼロクリア)しとけば問題ないだろ派
・やっぱID欲しいよな派
0965デフォルトの名無しさん
2006/07/09(日) 02:11:570966デフォルトの名無しさん
2006/07/09(日) 02:12:04少なくとも>840や>873は「初期化」を意図した発言だと思うが。
>881-804(多分お前もその1人)が訳のわからんレスするから
無駄に伸びるんジャイ。
0967デフォルトの名無しさん
2006/07/09(日) 02:13:26また、なんでもかんでもとか付けちゃってw
君、自分が有利になるように軌道補正するくせ止めたほうがいいよw
0968デフォルトの名無しさん
2006/07/09(日) 02:15:04その「無駄に伸びたレス」は君の発言に対するものじゃないんだけどなあ。
完全一人相撲乙。
0969デフォルトの名無しさん
2006/07/09(日) 02:15:49アンカー間違えてて何言ってるのかわからないよw
0970デフォルトの名無しさん
2006/07/09(日) 02:18:58>>847
>いい加減0埋め初期化の是非と、memsetの是非は分けて論議してくれよ…
0971デフォルトの名無しさん
2006/07/09(日) 02:20:15memsetはダメ。ゼロ初期化なら良い。派も追加して下さい。
漏れ一人かもしれんけど…
0972デフォルトの名無しさん
2006/07/09(日) 02:21:45過去の戦跡を掘り返して必死で相手の粗を探してるところがほほえましいな。
生まれついての馬鹿で、どんなに努力しても並がやっとなんだから、
発言なんてしないでおとなしくしてればいいのにw
0973デフォルトの名無しさん
2006/07/09(日) 02:21:560974デフォルトの名無しさん
2006/07/09(日) 02:22:52お前が一番駄目人間なんだけどな
0975デフォルトの名無しさん
2006/07/09(日) 02:23:550976デフォルトの名無しさん
2006/07/09(日) 02:24:39>792-844そして>847
0977デフォルトの名無しさん
2006/07/09(日) 02:24:470978デフォルトの名無しさん
2006/07/09(日) 02:26:03君がどういう思考回路で>>847をしたかなんて興味ないんだけど。
0979デフォルトの名無しさん
2006/07/09(日) 02:26:560980デフォルトの名無しさん
2006/07/09(日) 02:27:22>>936
>必要なくてもゼロで初期化する習慣は良い心がけだが、
>memsetでゼロクリアするのは間違い。
>という結論で良いんだよな?
eeee?
0981デフォルトの名無しさん
2006/07/09(日) 02:28:23黙って>840,844,847辺りを読み返せ。
それでもまだ言い返す気力があるなら、眼科か精神科逝きやがれ。
0982デフォルトの名無しさん
2006/07/09(日) 02:29:14このスレで終わりますようにとお空にお願いしました
0983デフォルトの名無しさん
2006/07/09(日) 02:30:55はいはい、ご苦労さん。
0984デフォルトの名無しさん
2006/07/09(日) 02:32:26そもそも>>763が頓珍漢なんだから、議論にもならないし。
議論してたつもりになっていたのは君だけだよ。
他の人は他の話をしてたんだよ。
0985デフォルトの名無しさん
2006/07/09(日) 02:34:130986デフォルトの名無しさん
2006/07/09(日) 02:35:16>チャネラー公言してる上司に、変な知識を植え付けないで下さいよ?
というのが痛かったな。
0987デフォルトの名無しさん
2006/07/09(日) 02:37:080988デフォルトの名無しさん
2006/07/09(日) 02:38:07(リアルで)「チャネラー公言」そして「某板の住人」「遠隔操作の方が…」に注目。
0989デフォルトの名無しさん
2006/07/09(日) 02:39:50お前が変に読み飛ばしてるのは良く分かったから。w
0990デフォルトの名無しさん
2006/07/09(日) 02:43:37君がこのスレで正しく議論できたかどうかなんてどうでもいいことでしょ?
君の判断が正しいと信じるなら、2ch経由で上司を啓蒙するなんてまどろっこしい
ことせずに、直接言いたまえ。
0991デフォルトの名無しさん
2006/07/09(日) 02:46:58そもそも、必要ない0クリアなんてなんでするのって話なんですが。
それでも必要なくても変数定義時の初期化は良い心がけと言い張りますか。
0992デフォルトの名無しさん
2006/07/09(日) 02:51:47やっとノイズが無くなったか。
答えはyes。
何故なら初期化しないと「値が不安定」だから。
テスト・デバッグ時に偶然ゼロとなり、本番での実行時にしか分からない
バグを見逃す可能性がある。
それに比べりゃ潜在的に間違ったコード書くくらい可愛いこった。
0993デフォルトの名無しさん
2006/07/09(日) 02:56:24int ret = 0;
ret = foo();
このretの初期化は良い習慣?そうではない?
そうではないとしたら、その理由は?
0994デフォルトの名無しさん
2006/07/09(日) 02:58:32お前が1人で開発してるならretの初期化は不要。
だが1人じゃ無いなら、誰かが宣言の後に何かを追加する可能性を考慮しろ。
また初期化の有無に気を付ける位なら、その注意力を他に回せ。
0995デフォルトの名無しさん
2006/07/09(日) 02:59:310996デフォルトの名無しさん
2006/07/09(日) 03:00:59あのー、それmemsetで0クリアしときゃバグっても大丈夫派と同じ意見なんですが。
0997デフォルトの名無しさん
2006/07/09(日) 03:01:53>誰かが宣言の後に何かを追加する可能性
例えばどんなコードを追加されると問題になりますか?
0998デフォルトの名無しさん
2006/07/09(日) 03:02:23(1)>994を読んでた場合
よく読め。
(2)>994を読んでない場合
先走りすぎ。w
0999デフォルトの名無しさん
2006/07/09(日) 03:03:101000デフォルトの名無しさん
2006/07/09(日) 03:04:11後の仕様変更でretの初期値が非ゼロとなった場合に困る。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。