- 1 名前:仕様書無しさん mailto:sage [2007/04/02(月) 12:45:06 ]
- この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#15 pc11.2ch.net/test/read.cgi/prog/1167117526/
- 88 名前:仕様書無しさん mailto:sage [2007/05/09(水) 09:23:11 ]
- Happy99とは懐かしいな。
- 89 名前:仕様書無しさん [2007/05/09(水) 10:07:23 ]
- しあわせ99?
- 90 名前:仕様書無しさん mailto:sage [2007/05/09(水) 10:14:18 ]
- ウイルスだったよな?確か
- 91 名前:仕様書無しさん mailto:sage [2007/05/09(水) 19:20:16 ]
- 昔流行ったよな。確か花火が上がるやつだと記憶している。
- 92 名前:仕様書無しさん [2007/05/09(水) 21:54:00 ]
- >>80
たとえばnewとかで取得した領域のアライメント調整で使う #define AREASIZE 80 #define ALIGNSIZE 4 char* p; void* q; p = new char[AREASIZE+ALIGNSIZE-1]; q = reinterpret_cast<void*>((reinterpret_cast<int>(p)+ALIGNSIZE-1)&~(ALIGNSIZE-1)) // ... delete p;
- 93 名前:仕様書無しさん mailto:sage [2007/05/09(水) 22:19:23 ]
- Dim flgUmu As String = "nasi"
For Each ws In objBook.Worksheets If ws.Name = strName Then flgUmu = "ari" End If Next もうどこからツッコめばいいのかorz
- 94 名前:仕様書無しさん mailto:sage [2007/05/09(水) 22:58:11 ]
- 時々居るなぁ、Boolean使わない奴。
- 95 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:15:01 ]
- ポインタをintにキャストする香具師は、
LP64,LLP64環境で死亡で御座います
- 96 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:26:18 ]
- uintptr_tかchar*でないとマズいね。
ところで~(ALIGNSIZE-1)ってそのままで大丈夫?
- 97 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:36:30 ]
- ごめん、大丈夫そう。
- 98 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:57:03 ]
- >>96
ALIGNSIZEが2の冪乗値という条件付きだけどな 文末のセミコロンが抜けてるのは痛い>92
- 99 名前:仕様書無しさん [2007/05/10(木) 01:43:21 ]
- #define private public
#define protected public 本当にこれが書かれたコードがあった。 しかも俺のすぐ上の上司が書いたっぽい。 陰謀めいたものを感じて冷や汗が出たよ
- 100 名前:仕様書無しさん [2007/05/10(木) 09:36:17 ]
- private宣言してもリアルタイムデバッグではアクセス可能だろ?
意味なくね?
- 101 名前:仕様書無しさん mailto:sage [2007/05/10(木) 11:00:05 ]
- >>100
はあ?
- 102 名前:仕様書無しさん [2007/05/10(木) 11:49:46 ]
- 全然privateじゃないってこと
- 103 名前:仕様書無しさん mailto:sage [2007/05/10(木) 12:24:19 ]
- カプセル化の意味も判らないんなら口挟まない方がいいんじゃね?
- 104 名前:仕様書無しさん mailto:sage [2007/05/10(木) 12:31:25 ]
- そこで防御策として
#ifdef private #undef private #endif #ifdef protected #undef protected #endif と自分のヘッダの先頭に書く必要が出てくる。 もはや冷戦だな。
- 105 名前:仕様書無しさん [2007/05/10(木) 17:55:41 ]
- >>104
勘弁してください……
- 106 名前:仕様書無しさん [2007/05/10(木) 18:57:15 ]
- >>104
その後にインクルードされるヘッダファイルの中で #ifndef private #define private public #endif #ifndef protected #define protected public #endif と書かれてないか調べたか? w
- 107 名前:仕様書無しさん mailto:sage [2007/05/10(木) 19:19:40 ]
- 嫌な職場だなぁ
- 108 名前:仕様書無しさん mailto:sage [2007/05/10(木) 22:26:52 ]
- まさに冷戦。 誰が核のボタンを押すのか、押せるのか。 いやまて核は何なのか。
- 109 名前:仕様書無しさん mailto:sage [2007/05/10(木) 23:18:03 ]
- #define FIRE FILE なんての見て鬱になってたところだが、
ここ見てたらなんだか元気が出てきた。ウチはまだ大丈夫だ!
- 110 名前:仕様書無しさん mailto:sage [2007/05/10(木) 23:48:01 ]
- >>106
オワットルwww
- 111 名前:仕様書無しさん mailto:sage [2007/05/11(金) 00:48:52 ]
- >>109
知らぬ間に #define FILE FIRE になっているかもしれんぞ。
- 112 名前:仕様書無しさん mailto:sage [2007/05/11(金) 01:38:14 ]
- 大丈夫。
展開コードを参照すればw
- 113 名前:仕様書無しさん [2007/05/11(金) 10:34:47 ]
- 1つのプロジェクト内にファイルが1800個あったから、一体何かと思ったら
履歴を全部別ファイルにして残していて、わざわざコンパイルしない設定対象に1780個ぐらい加えているという・・・ バージョン管理ソフト使っていてこれかよ。出向先なので辞めるわけにはいかない、 明日から通勤時間に3年程かけようかとか本気で思った
- 114 名前:仕様書無しさん mailto:sage [2007/05/12(土) 01:22:44 ]
- >>111
sonyのバッテリーが発火した原因はそれか。
- 115 名前:仕様書無しさん mailto:sage [2007/05/13(日) 07:16:31 ]
- やめよう思うほどじゃないが
よく見るキモチワルイコード if (a == 1) { } else { なんかのしょり なんかのしょり }
- 116 名前:仕様書無しさん mailto:sage [2007/05/13(日) 08:38:20 ]
- >>115
俺、よくこういうコード書きかけてしまう… 具体的にはこんなんですが。 if (a == 1) { /* 〜ということやりたいけど後で考える */ } else { なんかのしょり なんかのしょり } (a == 1) の時の処理考えなくてよければ、こんなんかな。 if (a != 1) { なんかのしょり なんかのしょり }
- 117 名前:仕様書無しさん mailto:sage [2007/05/13(日) 14:21:06 ]
- >>116
コーディング中には俺もよくやる。 問題は納品後のソースにそれが残ってることだと思います。 //TODO:この機能いらなくね?? とか //TODO:うんこしたい とか //TODO:仕様はやくきめろやぼけ!!殺すぞ!! とか 他人にはとても見せられないようなコメント 入れといて実装漏れ、修正漏れは絶対起こさないようにすべき このコメントを納品した後のソースで、見たらその人は この会社やめようって思うんだろうなー でも、顧客の悪口は洒落にならないから書かないぜ!
- 118 名前:仕様書無しさん mailto:sage [2007/05/13(日) 14:26:10 ]
- んなコメント入れんなよ
- 119 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:13:43 ]
- 普通、if(a)って書かね?
- 120 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:20:56 ]
- >119
出た〜〜〜っ!
- 121 名前:仕様書無しさん [2007/05/13(日) 17:41:28 ]
- >>119
それキモい。 aはあくまでデータであり、真偽をあらわす値ではない。
- 122 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:44:10 ]
- ところでいつ a が boolean になったんだ?
- 123 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:44:34 ]
- C#とかだとコンパイルも出来ない。
- 124 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:47:02 ]
- ifは0かそうじゃないかだけしか見ないんだから>>119で何の問題もないだろ
C#はシラネ
- 125 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:51:42 ]
- ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから ifは0かそうじゃないかだけしか見ないんだから ifは0かそうじゃないかだけしか見ないんだから ifは0かそうじゃないかだけしか見ないんだから〜 お前とは組みたくない。
- 126 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:56:10 ]
- 組込みマイコンのコンパイラでは常識的手法。
if(a)なら JNZ命令一行ですむ。
- 127 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:59:30 ]
- >>121
まじすか。 ただ、適切な変数名をつけて問題領域で考えれば分かりやすいと思うんだけどなぁ int型でも俺はそうやってる
- 128 名前:仕様書無しさん [2007/05/13(日) 18:07:33 ]
- if (a) って書いたら a == 1 以外のケースでも真と判定されることに気づかないかね。
>>126 if (a != 0) を if (a) に最適化するのはコンパイラの仕事ですよ。 より効率の良く等価な記述に変換する最適化はコンパイラにさせて 人間は正しい意味論に則った保守しやすいコードの記述に努めるべき。
- 129 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:17:16 ]
- で、aの型は・・・?
- 130 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:19:03 ]
- お前ら、if (isdigit(c) == 1)って書くの?
- 131 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:23:03 ]
- >>121
何か変なことになった場合に if(a)の時点でa=0になっていると保証されてるなら それでいいと思うが。
- 132 名前:仕様書無しさん [2007/05/13(日) 18:25:26 ]
- >>130
isdigit関数の戻り値の意味は真偽値だとわかっているから if (isdigit(c)) で無問題。 ちなみに 真==1 とは限らないので、敢えて書くなら if (isdigit(c) != 0) が正解。
- 133 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:27:44 ]
- >>128
int型でもブール変数として使う場合は むしろ、a == 1 以外のケースでも真と判定されなきゃまずいと思うけど
- 134 名前:仕様書無しさん [2007/05/13(日) 18:32:31 ]
- if(a)って書くとバグの温床になるからやめろ
等号式書いても、今のコンパイラなら80年代と違って等価のコード出す。 今、最適化意識して各のはアルゴリズムの性能と無駄なシーケンス省くことだけ。 きもいくて古い書き方は捨てろ。恥だ
- 135 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:38:06 ]
- >>134
>if(a)って書くとバグの温床になるからやめろ まぁif((hFile = CreateFile()))とかやってハマってた奴とかいたし、気持ちはわかるw
- 136 名前:仕様書無しさん [2007/05/13(日) 18:38:38 ]
- isdigit
www
- 137 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:38:42 ]
- だーかーらー前提としてaの型を明らかにして話を進めろ
- 138 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:47:19 ]
- >135
じつはhFileの実体がスマートハンドルで、 operator boolみたいなのが定義されているとか
- 139 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:51:44 ]
- >137
新人はだまってROMしてなさい!
- 140 名前:仕様書無しさん [2007/05/13(日) 18:55:15 ]
- >>137
・aがブールを意味する値なら if (a) でおk ・そうでなければ比較の意図を明示的に表明すべし でFA
- 141 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:04:34 ]
- >140
上の連中それをごっちゃにして噛み合わない議論してねぇ?
- 142 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:08:37 ]
- >>134
むしろ、バグの温床になるのは if (a==0) とかの方なんだがな・・・ typo で if (a=0) になってしまうから。
- 143 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:12:33 ]
- はいはいif(0==a)
- 144 名前:仕様書無しさん [2007/05/13(日) 19:28:00 ]
- つか
if( a == b )を間違えないように定数比較したいなら if( NULL == a)って書けばいいだろ。定数は必ず初項として記述すればいいだろ 仮にif( NULL = a)ってやればコンパイルエラー出る。 つうか2000年ぐらいまでのコーディング規約でいいものだけ取り入れて かけよ。一般人ができる最低限度のコーディングの礼節だと思うがな。
- 145 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:34:08 ]
- >>144 読んで
ふと思ったんだが、 fj って今でもあるの?
- 146 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:35:09 ]
- 確かにその書き方なら間違いが防げるけど、何故か普及してないな。
- 147 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:36:49 ]
- if( NULL == a)
と書くのはお断りだ
- 148 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:38:54 ]
- >>146
昔から議論はあるけど、警告が出るからそんなヘンな書き方をすることは無いってことで落ち着いてる。
- 149 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:40:09 ]
- >>144
きもいくて古い書き方は捨てろ。恥だ
- 150 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:18:41 ]
- if(a)
が一番美しい。
- 151 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:25:30 ]
- >>150
>>121
- 152 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:31:36 ]
- >151
>127
- 153 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:36:17 ]
- プログラムってのはデータと命令しかないわけよ。
そのデータが真偽値であるとか整数であるとかあるいは文字列であるとかの意味付けは 言語処理系上でのみ行われている文脈上のものでしかないの。 文法的に許されているなら>>150を支持する。実際、美しい。 キモイとか許せないと思うなら if(a) という記述を許さない言語を使えば良いでしょ。
- 154 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:37:43 ]
- 無限ループって怖くね?w
- 155 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:38:51 ]
- 最初の書き込みで、aに入ってるのがbool値(0かそれ以外)か、ただの数値(たとえば0〜100とか)とか何も
書いてないのに、いきなり 「if (a) と書く」とか言うのは変だって言ってるんだろ。
- 156 名前:仕様書無しさん [2007/05/13(日) 20:45:37 ]
- 個人的に
if(a) で書ける状況でもこういう書き方はしないなぁ。 たまたま文法的に成立するってだけだから。 古い書き方だと思う。 今はベタに、ちゃんと==使わないとダメだと思う。
- 157 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:45:46 ]
- ねえ、今は False =0, True = 1 であたりまえなの?
昔はそれぞれ 0, 0xff って実装もありだったと思うんで、 True のつもりで a == 1 なんて怖くて書けない。 せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?
- 158 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:46:32 ]
- >>155
>「if (a) と書く」とか言うのは変だって言ってるんだろ。 別に。 また、プログラムの読み手にとっても、 aに入ってるのがbool値か、ただの数値か なんて考える必要はない。 a の評価値が 0 かそれ以外かさえ分かればよい。 こんな単純な話はない。
- 159 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:49:42 ]
- >>158
でも, bool値以外のデータだったら、 if (a == 1) を if (a) にしたら、動作が違ってくるだろ?
- 160 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:50:14 ]
- a == 1 の比較だろ
a = 0 or 1 ならともかく a = 2 のときは? a = 100 のときは?
- 161 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:50:16 ]
- >>158
その場合、if(a) は発端>>115 の if (a==1) と同一ではない。 発端の if (a==1) はあなたの「単純な話」にあてはまらない。 元の話わかってる?
- 162 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:52:26 ]
- aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、 if (a == 1) を if(a) と書き直したらダメだろ。
- 163 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:53:39 ]
- 凡庸なプログラマってこうした思い込みしてコーディングしてんのかな…
- 164 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:54:14 ]
- なんかトンデモねぇ馬鹿が一匹迷い込んでないか
俺コイツと一緒に仕事すんのはマジで嫌 想定外の修正されてぶち壊されそう
- 165 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:54:56 ]
- 初心者の俺にはよく分からんのだが
aの型について触れずに論議が進められるのは何故なの?
- 166 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:55:46 ]
- >165
何度か指摘してるんだが何故かまともに取り合ってくれないんだ(´・ω・`)
- 167 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:56:02 ]
- aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、 if(a)をif (a == 1) と書き直したらダメだろ。
- 168 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:57:42 ]
- >>167
>if(a)をif (a == 1) と書き直したらダメだろ。 それは誰もしてない。
- 169 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:59:43 ]
- >>165
少なくともCにおいては、if()の中身は式であって、その型は無関係だから。
- 170 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:01:13 ]
- >165
>166 >139
- 171 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:02:10 ]
- >>157
>せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ? bool値のある言語でそれをやったら、ちょっとヘタクソっぽい。 Cだと、 #define TRUE 0 #define FALSE -1 とか、ありえるので、わからなくもない。
- 172 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:04:05 ]
- キモイとか言える次元かよw
感覚上身についているかどうかのレベルの問題じゃね? (センスというにはあまりに次元が低すぎる) #include <stdio.h> char* a; int main(){ if (!a){ printf("a"); } } とかどうすんだよ。aが初期化されて無い判定は。 まさかbool型とか、コンパイラがうまくやってくれるからとか言っちゃって0で、==するのか?www ショッペーーー
- 173 名前:仕様書無しさん [2007/05/13(日) 21:05:31 ]
- 今日はとくに変だな
このスレw
- 174 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:05:35 ]
- この人なんで火病ってんの?
- 175 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:06:28 ]
- でさー 115 がいつ C って決まったの?
- 176 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:08:32 ]
- >>175
暗黙の前提。ああいう構文の言語は全部がCから派生しているからね。
- 177 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:09:17 ]
- まあ細かいことはプログラム書く人の自由ということで、115の場合はひとつの例として、
if aが1のとき{何もしない} else {何かの処理}がキモチワルイコードと言っているだけだ。
- 178 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:14:59 ]
- じゃあここは間とって三項演算子で書こうぜ
- 179 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:15:01 ]
- >>115 の主張は
if (a == 1) { /* 〜ということやりたいけど後で考える */ } else { で、「/* 〜ということやりたいけど後で考える */ を書くのが嫌だ」って話であって、 今の話題は >>119 が言う所の、 「if 文の括弧の中では、明示的に論理式を書く必要がない」か否か って話だろ?
- 180 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:16:07 ]
- >暗黙の前提。
こういう自分勝手な解釈をするヤツが一番手におえない
- 181 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:19:37 ]
- >>180
>>115 ≠ >>176 というのも、暗黙の前提だな。
- 182 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:23:04 ]
- それも勝手な解釈だな
その場合は前提を提示していないという意味で自分勝手な以下同文
- 183 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:23:42 ]
- >>179
俺が > /* 〜ということやりたいけど後で考える */ を追加した >>116 だけど、>>115 はそんなこと主張してないぞ。 >>115 の if (a == 1) {} else { ... } の解釈はいろいろありえるが、俺は 「if (a == 1) の時何もやらない」だと解釈した。 俺は別なつもりで同じようなコードを書いてしまうとコメントしたつもりだったんだが、 俺が余計なこと書いて議論を混乱させたのか? すまんかった。
- 184 名前:119 mailto:sage [2007/05/13(日) 21:28:36 ]
- 正直すまんかった。
俺が勝手に>>115のaをブール値を表現する変数だと勘違いして>>119を書いた。 でも、よく考えたら>>115は明示的にa == 1って書いてるんでブール値ではないわな。 ブール値なら少なくともa == TRUEとか書かなきゃいかんはずだし。 まぁ、俺が言うのもなんだが>>140->>141でFAで
- 185 名前:けーつえーき mailto:sage [2007/05/13(日) 21:58:00 ]
- >>184
その辺って熟練のPGでも考え方に違いが出てくるので PLの考えに合わせるのが無難と思う。 そういえば、MSの環境でBOOLって型があって #define TRUE (1) #define FALSE (0) と定義されてるんだけど APIで返す値に1以外の0じゃない値が返るものがあったりするねw
- 186 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:10:58 ]
- >>185
Windows APIのBOOL型の戻り値は、だいたい「成功すると0以外の値を返す」と ドキュメントに記されているわけで、特定の定数TRUEを返すとは書かれていないんで if (HogeHoge() == TRUE) は間違い。普通はこういう書き方しないだろうけど。 ところでその#defineの括弧は不要なんじゃ...
- 187 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:18:46 ]
- どころか、GetMessageみたいな3値を返すBOOLもある
- 188 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:21:39 ]
- > ところでその#defineの括弧は不要なんじゃ...
まあ括弧でくくるクセをつけてあるのは良いことだと思う。
|

|