- 1 名前:仕様書無しさん mailto:sage [2007/04/02(月) 12:45:06 ]
- この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#15 pc11.2ch.net/test/read.cgi/prog/1167117526/
- 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の括弧は不要なんじゃ...
まあ括弧でくくるクセをつけてあるのは良いことだと思う。
- 189 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:26:24 ]
- おう。そういう例があるから だいたい とさりげなく断っておいた。
俺はそれに嵌ったクチだし。 (ウィンドウの生成に失敗しているのにGetMessageして-1が返って無限ループorz)
- 190 名前:仕様書無しさん mailto:sage [2007/05/13(日) 23:17:00 ]
- >>186
APIリファレンスにも普通に-1を返すと記述されてたりするw >>189 他にも罠wがいろいろあるのがMS仕様という印象
- 191 名前:仕様書無しさん [2007/05/14(月) 05:41:07 ]
- スレタイが「この会社辞めようと思ったソースコード」なのになんで素人が混じってんだ?
- 192 名前:仕様書無しさん [2007/05/14(月) 08:03:15 ]
- >>191
プロはこんな板見てないからじゃないか?
- 193 名前:仕様書無しさん mailto:sage [2007/05/14(月) 08:26:50 ]
- >>191
素人とプロの違いは技量の違いではない。 「それが生活基盤であるか否か」だけである。 だからいくら素人に見えても実態はプロである事は多い。
- 194 名前:仕様書無しさん [2007/05/14(月) 08:58:01 ]
- >>193
てことは>>191もプロになるんだろうな。
- 195 名前:仕様書無しさん mailto:sage [2007/05/14(月) 11:30:47 ]
- とりあえず最悪の事態を考えてaはValiant型を想定しておくか
- 196 名前:仕様書無しさん mailto:sage [2007/05/14(月) 11:44:27 ]
- >>195
ちょっwwwww SUGEEEEEEEEE そんな先のことまで想定してコーディングするとはwww 俺絶対入社するわ 全部Variantで書いとくんで保守たのんますwww
- 197 名前:仕様書無しさん [2007/05/14(月) 12:29:41 ]
- なんかスレが延びているとおもったら、またよくわからん話題で盛り上がってるのか
えーっと ぬるぽ
- 198 名前:仕様書無しさん mailto:sage [2007/05/14(月) 12:35:31 ]
- がっ
- 199 名前:仕様書無しさん mailto:sage [2007/05/14(月) 16:51:48 ]
- // ここからそこまで何をしているのか不明
そこって何処よ…('A`)
- 200 名前:仕様書無しさん mailto:sage [2007/05/14(月) 17:52:51 ]
- ' SOKOってラベルふってあんだろ
- 201 名前:仕様書無しさん mailto:sage [2007/05/14(月) 17:56:16 ]
- 底でしょ
- 202 名前:仕様書無しさん mailto:sage [2007/05/14(月) 17:58:54 ]
- プロシージャ内と予測してみる
- 203 名前:仕様書無しさん [2007/05/14(月) 19:31:37 ]
- ここってCの人が多いみたいね。
じゃあ、vb系を代表して: Dim a, b As Integer Cとは違います。多分正しくありませんよ〜
- 204 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:34:04 ]
- >>203
普通にそう書いてる奴多いな 俺はメンテの時に困るから書いてないけど
- 205 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:37:00 ]
- >>203 aはIntegerと見せかけて、バリバリのバリアントだな。
そういう紛らわしい書き方ができてしまうVBの言語仕様はどうみても糞だな。
- 206 名前:仕様書無しさん [2007/05/14(月) 19:37:30 ]
- 上の方でtrue=1, false=0とかあってけど、VBAではTrue=-1ね
多分VBも
- 207 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:44:45 ]
- >>203
そーいや専門学校で教師がそのソース書いてたな。
- 208 名前:仕様書無しさん [2007/05/14(月) 19:45:10 ]
- やめて〜(実話)
For i=1 To 10000 Cells(i,1) = "なんたらかんたら" Next ExcelVBA だが、行は何行あるか分からないらしい。動けばいいのかな? 上級SEさんのコードでした。
- 209 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:51:16 ]
- >>205
更に、.NET 以降はあれで「どっちも Integer」という軽い罠。 >>208 まあSヨなら普通。
- 210 名前:仕様書無しさん [2007/05/14(月) 19:52:34 ]
- >>209
そうなの?違うんじゃない?
- 211 名前:仕様書無しさん [2007/05/14(月) 20:01:01 ]
- ソースじゃないけど聞いていい?
PL/SQLとTransact-SQLって同義なの? 前者はOracleで後者はSQLServerに使うものだと思っていたんだけど。 今日、面談で言われたよ〜
- 212 名前:仕様書無しさん mailto:sage [2007/05/14(月) 20:01:03 ]
- >>209
セル1つ1つに値を入れる奴はヘタレ。
- 213 名前:仕様書無しさん mailto:sage [2007/05/14(月) 20:33:28 ]
- >>210
…あのさ、君が前段と後段のどっちに疑問を呈しているのか解るのって君だけなんだが。 (7:3 で前段と踏んだ) >>211 ここが質問スレじゃないことくらい理解してほしいところなんだが。 >PL/SQLとTransact-SQLって同義なの? 「ストアドプロシージャの記述に使用できる」という一点のみが共通項。
- 214 名前:仕様書無しさん [2007/05/14(月) 20:39:13 ]
- >>213
>>210 どす。 前段どす。 Dim a, b As Integer って.netでもaはVariantじゃないの?
- 215 名前:仕様書無しさん mailto:sage [2007/05/14(月) 20:41:35 ]
- 「VB.NET 変数宣言」でぐぐれかす
- 216 名前:仕様書無しさん [2007/05/14(月) 21:03:36 ]
- ホントだ。知らんかった。
- 217 名前:仕様書無しさん mailto:sage [2007/05/14(月) 21:21:01 ]
- Dimってさ、もともとDimensionの略で、配列の次元を宣言するための
ものだったのにどーしてVBは一般の変数宣言に使うようになっちゃった んだろう。
- 218 名前:仕様書無しさん mailto:sage [2007/05/14(月) 21:30:23 ]
- RubyとかLispとか動的型付けの言語でもコードが書かれてるんだから、
Variantでもいいじゃないか。
- 219 名前:仕様書無しさん mailto:sage [2007/05/14(月) 21:31:21 ]
- >>218
底辺乙
- 220 名前:仕様書無しさん [2007/05/14(月) 21:55:27 ]
- そもそもoption explicitにしない奴もいるわな。
いいんじゃない?最近のPCは性能がいいから。
- 221 名前:仕様書無しさん mailto:sage [2007/05/14(月) 22:00:50 ]
- >195
Variant
- 222 名前:仕様書無しさん mailto:sage [2007/05/14(月) 23:14:36 ]
- >220
ハードウェアの進化には楽天的であれ ソフトウェアの進化には悲観的であれ エンジニアの技術力の進化には絶望的であれ # 上の2つは201の鉄則より
- 223 名前:仕様書無しさん mailto:sage [2007/05/14(月) 23:59:36 ]
- pc11.2ch.net/test/read.cgi/prog/1129522233/711
- 224 名前:仕様書無しさん [2007/05/15(火) 10:31:23 ]
- 昨日を
today-1 と書くか dateadd("d",-1,today) と書くか
- 225 名前:仕様書無しさん mailto:sage [2007/05/15(火) 10:56:39 ]
- 普通下だと思ってた俺はどうなのよ?
- 226 名前:仕様書無しさん [2007/05/15(火) 10:59:04 ]
- 反省しろ
- 227 名前:仕様書無しさん mailto:sage [2007/05/15(火) 11:36:02 ]
- ボリューム(D:)
↑ このへんがやる気ナイ・・
- 228 名前:仕様書無しさん [2007/05/15(火) 11:43:17 ]
- >>225
すまん。Date-1だった。最近、VBやってないから忘れてた。
- 229 名前:仕様書無しさん [2007/05/15(火) 12:07:08 ]
- >>203
あれ? 確かVB4か5までは a = variant, b = integerになるが、 VB5か6からは両方ともintegerになるような解釈になってなかったっけ ま、毎回1つ1つきっちり書いている俺には関係ないが
- 230 名前:仕様書無しさん mailto:sage [2007/05/15(火) 12:17:15 ]
- ならん
- 231 名前:仕様書無しさん [2007/05/15(火) 12:23:57 ]
- 今確認したけど
dim a,b as integer ってVB6SP6でやると a=Empty b=0 になってたからaの型はVariantになってるね
- 232 名前:仕様書無しさん [2007/05/15(火) 12:27:45 ]
- バージョンで仕様が変わったら、やってられないだろ〜
.netはいいチャンスだと思ったんじゃない?
- 233 名前:仕様書無しさん mailto:sage [2007/05/15(火) 13:35:50 ]
- >206
その解釈は微妙。(VB(A)でもCでも) どちらも、0が偽でそれ以外が真。 ただし、比較式などが返す値が、Cでは1、VB系は-1てこと。 >206自身はわかってるならそれはいいんだけど、 わかってない人が>206みたいな記述を読むと勘違いしたりする('A`)
- 234 名前:229 [2007/05/15(火) 16:09:20 ]
- >>231
ああ、.NETからの間違いだったかも すまそ、ちょっとunicode変換されてくるは
- 235 名前:仕様書無しさん mailto:sage [2007/05/15(火) 22:23:41 ]
- >>228
そんなの書けたか?
- 236 名前:仕様書無しさん mailto:sage [2007/05/15(火) 22:37:00 ]
- >>235
今ちょっと試してみたけど、Excel VBA で Date 型だと書けてしまうな。気持ち悪い。 整数が日付、小数点以下が時刻ってことか… 俺はDateAddの方がどんな変数を操作してるかわかりやすいので安心できる。
- 237 名前:仕様書無しさん mailto:sage [2007/05/16(水) 00:22:54 ]
- 真値を数値として扱うと-1になることを利用した演算式が
昔のBASICにゃたんまりあってのう…… a = a + (h > 3) * 1 とか
- 238 名前:仕様書無しさん mailto:sage [2007/05/16(水) 00:44:08 ]
- Oracle とかもDate型は数値扱いだろ
よくあるよくある
- 239 名前:仕様書無しさん mailto:sage [2007/05/16(水) 07:10:34 ]
- >>237
むしろ条件式を使うことがコード量を節約する手法の一つだったのさ。
- 240 名前:仕様書無しさん mailto:sage [2007/05/16(水) 09:46:11 ]
- >>237
の動作ってどうなるんだ? こんな書き方しらねぇ・・・・ (h > 3) この部分の解釈
- 241 名前:仕様書無しさん mailto:sage [2007/05/16(水) 10:15:20 ]
- >>240
真なら -1 で偽なら 0 になる。 つまり C で書きなおせば if (h > 3) a += 1; ってこと。 この例だとコード量節約にもならないような。
- 242 名前:仕様書無しさん mailto:sage [2007/05/16(水) 10:35:26 ]
- BASICならIF文使うと遅いからじゃね?
- 243 名前:仕様書無しさん mailto:sage [2007/05/16(水) 10:41:02 ]
- サンクス
なるほど そういう解釈になるのか! しかし・・・可読性が落ちるな(;´Д`) 昔は遅かったからその辺のテクなんだろうなぁ・・・
- 244 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:02:18 ]
- 最近のCPUで当時のBASICコードが動かせるとすると
ループで時間稼いだりしてた部分が瞬時に終わったり 笑える動作になるんだろうな
- 245 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:03:41 ]
- >>238 は何を言ってるんだ…?
- 246 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:06:52 ]
- >>244
ウチは実際にそれで問題が出てたwwww
- 247 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:47:25 ]
- >>244
昔でもあったぞ。 ゲームでPC-9801VM(V30)でスピード最適化したシューティングゲームを PC-9801RA(i386)で動作させてみたらレーシングゲームになった、とか
- 248 名前:仕様書無しさん mailto:sage [2007/05/16(水) 13:30:20 ]
- MSXturboRの通常モード(8ビットモード)で普通に出来たゲームが
高速モード(16ビットモード)では早すぎてゲームにならなかったり。
- 249 名前:仕様書無しさん mailto:sage [2007/05/16(水) 19:37:21 ]
- >>237
俺は Pascal(Delphi) で似たようなコードをよく書く。 Salary := BaseSalary + 1500 * OverHours * Ord(chkOvertimePaid.Checked); Pascal では Ord(False) = 0、Ord(True) = 1 と言語で定義されている。 でも確かに 8 ビット時代の悪しき習慣のような感じもするな。
- 250 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:39:53 ]
- 俺は同じ書き方やって言語で動作が違うような書き方はしないように心がけてる
- 251 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:44:09 ]
- じゃあ、Cで短絡評価は使わないってこと?
- 252 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:50:09 ]
- >>251
C・C++は別格
- 253 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:51:54 ]
- >>251
短絡的な発想だな
- 254 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:57:30 ]
- >>253
だれがうまいこと言えとwww
- 255 名前:仕様書無しさん mailto:sage [2007/05/17(木) 11:43:10 ]
- >>250
言語が変わったら、同じ書き方は出来ないと思うんだが。
- 256 名前:仕様書無しさん mailto:sage [2007/05/17(木) 12:56:49 ]
- >>255
なにその柔軟すぎる発想 お前PGとかこの業界やめたほうがいいよ それとも釣りですか?
- 257 名前:仕様書無しさん mailto:sage [2007/05/17(木) 14:00:51 ]
- >>256
「同じ言語で、同じ書き方をして、違う動作をするような書き方」 であれば、しないのが当たり前。素人じゃあるまいし。
- 258 名前:仕様書無しさん [2007/05/17(木) 14:17:15 ]
- >>257
日本語嫁よwwwwww
- 259 名前:仕様書無しさん mailto:sage [2007/05/17(木) 14:53:11 ]
- おいおい
COBOLでかちゅーしゃ作れねーだろ
- 260 名前:仕様書無しさん mailto:sage [2007/05/17(木) 15:32:20 ]
- .netコボルならできるんじゃね?
- 261 名前:仕様書無しさん [2007/05/17(木) 15:42:57 ]
- COBOLでJavaのVM作ればOK。
- 262 名前:仕様書無しさん [2007/05/17(木) 16:12:45 ]
- Valiantをブリリアントと読んでいた。
そんな時期もありました。
- 263 名前:仕様書無しさん mailto:sage [2007/05/17(木) 17:02:51 ]
- ━━ a. 勇敢な.
ひょっとして: variant valiantly Valerian
- 264 名前:仕様書無しさん mailto:sage [2007/05/17(木) 17:58:31 ]
- 今年入社した会社のコード
if(《BOOL型変数》!= TRUE) { }else { 処理; } もっと簡潔に書いてくれ・・・
- 265 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:14:47 ]
- BOOLというのが実は独自定義の真偽値型で、
TRUE==0でそれ以外がFALSEだとか?
- 266 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:15:54 ]
- >>264
既出のものかと思いきや応用編か……。
- 267 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:48:13 ]
- >>265
それにしたってブロックからっぽにするんだったら 条件ひっくりかえしてelse削除でしょう。
- 268 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:52:06 ]
- >>267
ご指摘の通りだけど。else部分は省略禁止という規約も実在するしw
|

|