1 名前:仕様書無しさん mailto:sage [2007/07/06(金) 14:42:11 ] この会社辞めようと思ったソースコード。 プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#16 pc11.2ch.net/test/read.cgi/prog/1175485506/
304 名前:仕様書無しさん mailto:sage [2007/07/15(日) 01:44:06 ] プログラミング言語かどうかはともかく、テストはしなくちゃな。 JavaやSQLの記述はもちろん、iniファイルの内容を書き換えた場合ですら。 そういえば設定内容を書き換えるのは開発じゃないと思ってる輩がいたっけ。
305 名前:仕様書無しさん mailto:sage [2007/07/15(日) 01:56:50 ] >>304 設定ファイルを書き換えることさえ開発だって言ってたら 運用の人まで開発者になっちゃうじゃまいか
306 名前:仕様書無しさん mailto:sage [2007/07/15(日) 02:00:56 ] その理屈だと秀丸の背景色を変えることすらも開発さ
307 名前:仕様書無しさん [2007/07/15(日) 02:07:38 ] ソフトを完成しさせて人手に渡るところまでは開発だろ Iniファイルだって完成前までの初期設定変更とかは開発だと思うけど そっからさきは違うだろうね
308 名前:仕様書無しさん [2007/07/15(日) 02:13:49 ] JAVAなんてアホでも出来るように作られてる言語なんだし そんなに熱く語るほどの事かね?
309 名前:仕様書無しさん mailto:sage [2007/07/15(日) 02:18:57 ] >>308 そのJAVAをこれから始めてみようと思う俺が来ましたYO!
310 名前:仕様書無しさん mailto:sage [2007/07/15(日) 04:16:26 ] // このURLへは今後接続しないことを示す public boolean discnct(String cnurl) { try{ URL url = new URL(cnurl); HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); urlconn.disconnect(); return true ; } catch(Exception e){ return false ; } }
311 名前:仕様書無しさん mailto:sage [2007/07/15(日) 08:52:46 ] >>310 何をしたいのかがサッパリだ
312 名前:仕様書無しさん mailto:sage [2007/07/15(日) 09:22:16 ] discnct という名前からして、いい感じに腐っている。 いまだに母音を省略する命名ルールが生きのこっているなんてガラパゴスか?
313 名前:仕様書無しさん [2007/07/15(日) 10:34:14 ] コメントが全部、日本語をローマ字表記。 koreha, komento desu. kokode***suru [debagu yy/mm/dd]
314 名前:仕様書無しさん [2007/07/15(日) 10:38:12 ] IME壊れたんだろう
315 名前:仕様書無しさん mailto:sage [2007/07/15(日) 11:46:40 ] > [debagu yy/mm/dd] にしても、これはちょっと。debug でいいやん。
316 名前:仕様書無しさん mailto:sage [2007/07/15(日) 11:59:26 ] せめてdebaggu
317 名前:仕様書無しさん [2007/07/15(日) 12:00:17 ] テーブル名とかカラム名がローマ字ならよく見る TORIHIKITBLとかHURIKOMIKINGAKU CHAR(10)みたいな
318 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:03:25 ] それならいいけど 未だに母音抜いてTRHKとかHRKMKNGKとかの方がよく見る気がする ヘブライ語かよ
319 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:36:35 ] discnctについては、母音省略もアレだが、dis-を「〜しない」だと思ってる のがイタイな。
320 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:37:52 ] >>318 KWSKかよ
321 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:38:40 ] >>313 文字コード関係じゃね いちおう・・・
322 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:43:36 ] >>JAVAなんてアホでも出来るように作られてる言語なんだし アホにはむり、コボラならOKの言語
323 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:16:14 ] >>319 disconnectは普通に「切断」という意味だが・・・?
324 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:18:24 ] >>323 そうだよ。 すでにつながっているものを「切断」するんであって、 最初からつながないという意味じゃない。
325 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:36:30 ] 最初から繋がらないなんてどこに書いてあるんだ 最初から繋げない じゃないのか
326 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:49:23 ] メソッド名としては、testConnectibityとかの方が助かると思う。
327 名前:仕様書無しさん [2007/07/15(日) 13:54:18 ] >>324 disableは最初から出来ないと思うよ
328 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:56:19 ] disableは、可能であることを出来ないようにしておくことだね。
329 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:56:32 ] >>327 できる/できないで話すのもなんだが、 It disable you to ~~ とかで使うから、出来なくするってのが一般的じゃないの? unableが最初から出来ない方なわけで。 dictionary.goo.ne.jp/search.php?mode=0&MT=disable&kind=ej&IE=sjis&type=sleipnir&ej
330 名前:329 mailto:sage [2007/07/15(日) 13:57:03 ] あ、it disable -> it disablesです。ごめんね。
331 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:57:15 ] >>326 それだ!
332 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:57:17 ] >>327 最初から出来ないのは unable じゃ?
333 名前:仕様書無しさん [2007/07/15(日) 14:27:26 ] >>332 ああ、そうだね。 だけど、身体障害者には生まれつきもあるわけで、 本来出来るというのは、健康な人間なら本来出来るが、その人は障害のために最初からできないわけで、 つまり、構造的に接続できるようになってる物を、切断した状態にしておくのが切断であり、 さっきまで接続していたかどうかとか、時間的経過に関係なく切断状態にあるのが切断だと思うよ。>>324
334 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:28:29 ] 正直どうでもいい
335 名前:仕様書無しさん [2007/07/15(日) 14:30:47 ] >>334 名前と実際が食い違うのをいちいち関数仕様を読んで覚えたりソースコード追っかけたりするのは面倒だろ?
336 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:37:10 ] >>333 日本語と英語じゃ言語構造も単語の細かい意味も変わってくるので、 生半可に論じられないし、そもそもスレ違いだからEnglish板にでもいってらっしゃい。 そして、ここでdisconnectといっているのは、切断のことではなく、 「〜を切断する」ということです。他動詞ですね。
337 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:38:59 ] >>333 disconnect(切断する)じゃなく disconected (切断状態にある)ならいいんだろうな。 元のはdiscnctだからそこまで考えてないだろうけど。
338 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:40:10 ] distnctにするとぜんぜん違う意味になりますな。
339 名前:仕様書無しさん mailto:337 [2007/07/15(日) 14:40:59 ] ×disconected ○disconnected 細かい綴りの話してるときにtypoしちまったぜ orz
340 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:45:06 ] kiretemasu?
341 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:47:23 ] kiretenaissuyo
342 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:54:01 ] >>310 確認するけど、コメントと関数名とやってることの三つがバラバラというのが問題なんだよね? やってることは、与えられたURLに接続してみて、 接続できたら(例外が発生しなければ)trueを返し、例外が発生したらfalseを返す。
343 名前:仕様書無しさん mailto:sage [2007/07/15(日) 17:56:01 ] そもそもこんないらん議論を呼ぶ 変数名つけるのが問題
344 名前:仕様書無しさん mailto:sage [2007/07/15(日) 18:15:24 ] もう全部 func001(); func002(); でいいよ
345 名前:仕様書無しさん mailto:sage [2007/07/15(日) 18:23:57 ] >>344 いちばんスレにふさわしいやつだな。
346 名前:仕様書無しさん [2007/07/15(日) 18:31:26 ] ・・・ if (ret == false) { // 上記の処理が以上の場合、ファルスを返す。 return ret; }
347 名前:仕様書無しさん [2007/07/15(日) 18:33:59 ] if (ret==false) { return true; }
348 名前:仕様書無しさん [2007/07/15(日) 18:57:03 ] >>346 ,347 変数名の付け方に問題があるかもしれんが一概に悪いとは思わんよ。 以下のような場合もあるから bool ret = 何かの初期化メソッド(); if(ret == false) { // 初期化失敗 return false; } // ほかの処理 .. return true;
349 名前:仕様書無しさん [2007/07/15(日) 19:02:26 ] // (略) falseを返す。 のつもりを // (略) バルスを返す。 と書いていた奴。。。(読みはファルスじゃねぇし)
350 名前:仕様書無しさん mailto:sage [2007/07/15(日) 19:19:36 ] >>349 いや、あれだよと突っ込んでほしいのか?
351 名前:仕様書無しさん mailto:sage [2007/07/15(日) 20:54:06 ] >>349 自爆装置を仕込んでいるのか
352 名前:仕様書無しさん mailto:sage [2007/07/15(日) 20:55:06 ] >>349 コードを追記したら func(); // 目がぁ〜目がぁ〜 はお約束だな
353 名前:310 mailto:sage [2007/07/15(日) 21:44:15 ] 変な議論呼んだようですまん 貼った俺自身もこのメソッドが何をしたいのかよく分からなかったんだが、 呼び出し先メソッドが↓のレスなんで、 どうやら接続した後の切断処理をやってるつもりなのかなぁ、と考えてる
354 名前:310 mailto:sage [2007/07/15(日) 21:46:05 ] // 接続先のファイルサイズを取得 public long getFileSize(String cnurl) { boolean isCnct = cnct(cnurl) ; // ※接続テストをしているらしい if (!isCnct) { return -1; } // 接続可能ならtrue URL url; try { url = new URL(cnurl); HttpURLConnection urlconn; urlconn = (HttpURLConnection)url.openConnection(); long fullsize = 0; Map headers = urlconn.getHeaderFields(); String key = "Content-Length" ; String e = (headers.get(key)).toString(); e = e.substring(1,e.length()-1) ; fullsize = Long.parseLong(e) ; boolean isDisCnct = discnct(cnurl) ; // ※ここで310呼び出し if (!isDisCnct) { return -1 ; } if(fullsize < 0) return -1 ; else return fullsize ; } catch (IOException e1) { } return 0; }
355 名前:仕様書無しさん mailto:sage [2007/07/15(日) 22:08:18 ] なんというコード・・・
356 名前:仕様書無しさん mailto:sage [2007/07/15(日) 22:18:14 ] 何したいわけ?
357 名前:仕様書無しさん mailto:sage [2007/07/15(日) 22:27:07 ] cnct(対象URLに接続) ↓ getFileSize(ファイルサイズ取得) ↓ discnct(切断処理) ・・・がやりたかったのかな?
358 名前:仕様書無しさん mailto:sage [2007/07/15(日) 23:41:45 ] たった二十行程度のコードに 山のように突っ込みどころが・・・
359 名前:仕様書無しさん mailto:sage [2007/07/15(日) 23:55:07 ] >>310 のコメント // このURLへは今後接続しないことを示す が、 /** @return true 切断成功 false 失敗。このURLへは今後接続しない */ ならまぁよかった、ということなのかな。
360 名前:仕様書無しさん mailto:sage [2007/07/16(月) 00:49:09 ] つか成功したかどうかHashかなんかで管理して 余計なオブジェクト毎回接続するたびに作らないようにしね? 結果の保持が必要な場合は別途なにかクラス作って 突っ込んだ方がよくね?
361 名前:仕様書無しさん mailto:sage [2007/07/16(月) 01:01:17 ] あまりにひどいコードに絶望した…! でもそういうコードを以前見かけたことが あるのに気づいて更に絶望した!!
362 名前:仕様書無しさん mailto:sage [2007/07/16(月) 02:02:50 ] コメントにアスキーアートがはってあったぞ 「カイジ」のやつ
363 名前:仕様書無しさん mailto:sage [2007/07/16(月) 02:11:13 ] __,,,.... -――‐- .._ そりゃあ…かまわない /vV///∠∠彡:ニニヽ おまえらの疑問に答えること それ自体は容易い 簡単だ {/`ー-‐'''"´ 二二ニニl 例外時の処理はこれこれこう こういうメソッド行き /ー--‐''''"´ 二二ニニ| 返り値は…?パラメータは? ,/ー---‐'''"´__ ニニ二二| そんなコメントは いくらでもできる 〈べヽ l. ヾニ-‐'''ヾ> =r-、ニニ| },-o-> ヽPニニ ミ ス.|ニ二| しかし 今 オレが そんなコメントを 仮に付けたとしても . |二/,' ー― ' `に!|二ニト、 その真偽はどうする…? |/,' __ ヽ\ r<二ニ| \ | 「r---一ァ'! | \ニ| |`'ー-、__ 真偽など どうでもいいから | !` 三 ̄ l | \! | 読みたいと言うのか…? \ _.. -''" /| | _,.. ‐'''"`ー <´ / | | ククク……
364 名前:仕様書無しさん mailto:sage [2007/07/16(月) 02:23:55 ] >>363 一見まともなコメントにこんなの付いてたら嫌になるな。
365 名前:仕様書無しさん mailto:sage [2007/07/16(月) 05:00:11 ] 何を信じればいいのかw
366 名前:仕様書無しさん mailto:sage [2007/07/16(月) 05:06:11 ] >>363 プログラマやめろよ、つかやめてくれw
367 名前:仕様書無しさん [2007/07/16(月) 12:26:01 ] >>354 酷いな・・・8行で済むのにそんなにダラダラと・・・
368 名前:仕様書無しさん [2007/07/16(月) 13:11:02 ] >>363 お前とは仕事したくねぇよ・・
369 名前:仕様書無しさん mailto:sage [2007/07/16(月) 19:13:26 ] 納期は命より重いっ・・・!
370 名前:仕様書無しさん mailto:sage [2007/07/16(月) 20:32:25 ] ざわ・・・ ざわ・・・ ざわ・・・ 俺のバグですたorz
371 名前:仕様書無しさん mailto:sage [2007/07/17(火) 11:34:53 ] >>344 ローカル関数に関してはそのルールで書く人を知っている。 本人曰く、『どーせ俺しか読まねぇし』。
372 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:00:04 ] 3年後の「俺」には読めない罠。
373 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:44:05 ] あるあるwww
374 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:51:10 ] >>372 一年後に読める自信がないです。 覚えているうちに仕様変更とかあればいいんだが…
375 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:54:19 ] 違う仕事一個でも挟むと無理そうだ
376 名前:仕様書無しさん [2007/07/17(火) 13:05:25 ] >>372 三週間でも微妙
377 名前:仕様書無しさん mailto:sage [2007/07/17(火) 13:50:59 ] >>376 って言うか、たったの3連休で頭真っ白なんですが・・・ 先週までの俺が何をどうしたかったか、やっと何となく解ってきたw 今週の俺によると、先週までの俺は未熟者だったらしいww
378 名前:仕様書無しさん mailto:sage [2007/07/17(火) 16:11:58 ] 前日の日記をつけろ。毎日3行程でいいぞ。
379 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:13:28 ] 似たようなのもう出てそうだが、 Hoge1() { __asm { : : } } Hoge2() { __asm { : : } } 7000行ほどでコメント一切無し
380 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:32:47 ] Cool!w
381 名前:仕様書無しさん [2007/07/17(火) 19:45:12 ] >>379 昔は、マシンコードを定数の配列にして、関数ポインタで指してたり...
382 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:55:24 ] 定数ならまだいいが、技術的な制限から、コードを実行中に書き換えながら走らせることもあったな。 当分使われないコードセグメントはメモリから削除して、空いた空間に別のコードセグメントをロードしたりとかもしたし。 今となってはOSが担当する処理だが、その当時はそんなトリッキーなことを強いられたもんだ。
383 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:59:06 ] >>381 今でもやっていたりする....
384 名前:仕様書無しさん mailto:sage [2007/07/17(火) 20:04:59 ] 辞めさせられないようにする為の保険か?
385 名前:仕様書無しさん mailto:sage [2007/07/17(火) 21:29:30 ] メモリに入りきらない。
386 名前:仕様書無しさん mailto:sage [2007/07/17(火) 22:01:34 ] >>379 何か問題でも?
387 名前:仕様書無しさん mailto:sage [2007/07/18(水) 02:59:01 ] せめてコメントぐらいはつけて欲しいな
388 名前:仕様書無しさん mailto:sage [2007/07/18(水) 03:38:17 ] ソースコードが残ってなくてROMがあるんだけど、バグ対処してねとかいうのもあったな。 電算室(古っ!)に配属になって初めて書いたプログラムが自己変更コードだった。指導者乙。 そういうのがお行儀悪いことだと知るのはその10年後。
389 名前:仕様書無しさん mailto:sage [2007/07/18(水) 11:48:54 ] 10年は長いですね。
390 名前:仕様書無しさん mailto:sage [2007/07/18(水) 11:58:05 ] その部署の文化になってればそれが当たり前になっちゃうからなあ。
391 名前:仕様書無しさん mailto:sage [2007/07/18(水) 12:07:48 ] >>388 Intel 8x86 の時は、自己書き換えしても問題なかったから、メモリの制約とあいまって、 むしろあたりまえのプログラミング技法だったと思う。 80x86nになってキャッシュの概念が出てきて、メモリ上で自己書き換えしてもそのコードが 保持されないので問題が顕在化して、行儀が悪いということになった。
392 名前:仕様書無しさん mailto:sage [2007/07/18(水) 12:17:59 ] 行儀の問題はキャッシュとは関係ないっしょ
393 名前:391 mailto:sage [2007/07/18(水) 12:42:13 ] いや、この場合は関係あると思ってるんだが。 「キャッシュのために今までのノウハウが使えなくなった」が「行儀が悪い」にすりかえられた。 まあ今じゃ通用しないノウハウだし、「行儀が悪い」という言葉にはよっぽどのひねくれ者じゃなければ 逆らおうと思わないから、いいけどね。
394 名前:仕様書無しさん mailto:sage [2007/07/18(水) 12:48:29 ] すげーどうでもいいことだが。 x86の自己書き換えはパイプラインで問題になった。 キャッシュは最初から対策してる。
395 名前:仕様書無しさん mailto:sage [2007/07/18(水) 13:10:44 ] 自己書き替えはそれこそZ80の時代から「行儀が悪い」とされてましたが何か
396 名前:仕様書無しさん mailto:sage [2007/07/18(水) 15:13:54 ] 86 系で自己書き換えのときのキャッシュのフラッシュ(の欠落)が問題になったのは ハーバードアーキテクチャを初採用した Pentium から。 Mac では 68040 を積んだ Quadra から。 メモリ上の自己書き換えやコード生成は今でも結構使われていて別に問題のある技法でもない。 他により妥当な方法があるのに使いたがるのは問題ある行為かもしれないけど。
397 名前:仕様書無しさん mailto:sage [2007/07/18(水) 18:36:28 ] 今はメモリ使い回すメリットがほとんどないだろ メモリが小さかった時代には一つのひゅほうだったかもしれないが
398 名前:仕様書無しさん mailto:sage [2007/07/18(水) 19:09:25 ] ひゅほうでんせつ
399 名前:仕様書無しさん mailto:sage [2007/07/18(水) 21:19:00 ] 最近は データ領域:書き換え○ 実行× コード領域:書き換え× 実行○ みたいなことやるしな。
400 名前:仕様書無しさん mailto:sage [2007/07/19(木) 00:50:51 ] LISPだと自己書き換えってどういう感じに捉えられているんだろう?
401 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:00:31 ] すべてがS式なんだから、コード書き換えもアリとは思う。 けど、アルゴリズムとしてトリッキーに過ぎる感はあるな。 で、そういう感覚もっていることは、PGとしては大事。
402 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:11:23 ] longjumpで書き換えまくるのは普通だし 今でもそうゆうコード書いてる。 書くなって言われるけどなんでって思う
403 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:18:32 ] テクニックとしては面白いんだけどな。バッファオーバーラン攻撃の基本だし。 だからといって、製品の中に自己書き換えを組み込むのは勘弁。動的に書き換わるコードは追跡が難しすぎる。 動的コード生成にしても、機械語直接生成よりもスクリプトを吐く方が簡単に済みそう。
404 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:26:53 ] >>402 longjmpは自己書き換えしなくても作れるだろう。 ものすげー変なCPUまで把握してないが。
405 名前:仕様書無しさん [2007/07/19(木) 02:18:03 ] コード書き換えはマルチタスクで動かせないだろ
406 名前:仕様書無しさん mailto:sage [2007/07/19(木) 06:58:17 ] iTRON準拠のマルチタスク環境では動いていたというか動かしていたよ。
407 名前:仕様書無しさん mailto:sage [2007/07/19(木) 10:06:50 ] >>405 >コード書き換え と >マルチタスク に、まるで相関がない。
408 名前:仕様書無しさん mailto:sage [2007/07/19(木) 15:50:24 ] 自己書き換えはすたれてるけど、コード生成自体は ATL のサンクとか JIT コンパイラ的技法とかで必要に応じて使われているよね。
409 名前:仕様書無しさん mailto:sage [2007/07/19(木) 18:43:12 ] HaskellのコンパイラがDEP(データ実行防止)に引っかかった。 HaskellはHaskell自身で書かれているらしいから、どうもコード生成or自己書き換えしてるっぽい。 まだまだ現役だな。
410 名前:仕様書無しさん mailto:sage [2007/07/19(木) 19:24:16 ] >>409 >>408 >JIT コンパイラ的技法
411 名前:仕様書無しさん mailto:sage [2007/07/19(木) 22:37:16 ] ふとリコンフィギュラブルを思い出した。 ttp://www.atmarkit.co.jp/fsys/zunouhoudan/037zunou/intel_reconfig.html
412 名前:仕様書無しさん [2007/07/19(木) 23:57:15 ] ふとりプリキュアに見えた
413 名前:仕様書無しさん mailto:sage [2007/07/20(金) 00:28:50 ] >>412 病みすぎ
414 名前:仕様書無しさん mailto:sage [2007/07/20(金) 14:03:15 ] うーん。「自己変更コード」とか「自己書き換えコード」とか呼ばれているけど。 誰も「自己改竄コード」とは呼ばないな。
415 名前:仕様書無しさん mailto:sage [2007/07/20(金) 14:08:29 ] 普通は悪用目的の書き換えを指すんじゃまいか?改竄て。
416 名前:仕様書無しさん mailto:sage [2007/07/20(金) 23:08:58 ] 進化するコード
417 名前:仕様書無しさん mailto:sage [2007/07/20(金) 23:32:27 ] >>414-416 だんだんウィルスになってないか?
418 名前:仕様書無しさん mailto:sage [2007/07/21(土) 00:35:34 ] 暴走してウィルス化するなんていかにも漫画的なシチュエーションだ
419 名前:仕様書無しさん mailto:sage [2007/07/21(土) 01:11:30 ] ソースが貼られず自称上級者の醜い言い争いばっかりじゃねーか もっとトンデモソースで俺を癒してくれよ
420 名前:仕様書無しさん mailto:sage [2007/07/21(土) 03:18:33 ] switch( cValue ) { case 0: hogehoge( ); break; case 1: ・・・ case 255: hugahuga( ); break; default: ASSERT( False ); break; }
421 名前:仕様書無しさん mailto:sage [2007/07/21(土) 05:19:36 ] これでcValueがucharなら笑えるな
422 名前:仕様書無しさん mailto:sage [2007/07/21(土) 08:40:07 ] 関数名が func0()〜func255() じゃないってことは、コボラーじゃないのか....
423 名前:仕様書無しさん [2007/07/21(土) 09:22:02 ] while( flg == TRUE){ switch( hoge){ case 1: hage1(); hoge = 2; break; case 2: hage2(); hoge = 5; break; ・・・・・ case 25: hage25(); hoge = 10; break; } } こんな感じのswitch文が3つあってループの関数は1000行くらいある。 当然コメントも仕様書もマニュアルも何もない。あるのはソースだけ。 VC++1.52でコンパイルするのだが、改変して行数が増えるとコンパイラがコンパイルしてくれない。 case12 とかで hoge = 0 とかしてるのと、あっちこっちジャンプしながら 最終的にcase12にたどり着くので無限ループにはなっておらず、しょっちゅうトラブるが、大抵はなんとなく動いている。 だけど何で動いているのか分からない上に、改造しようにも手がつけられない。
424 名前:423 mailto:sage [2007/07/21(土) 09:24:38 ] あ、case 12ではhoge=0じゃなくてflg=FALSEだった。 ま、5年ほど前に面倒見させられたソースです。 その部分はごっそり書き直したけどね。
425 名前:仕様書無しさん [2007/07/21(土) 09:25:14 ] >>423 コードの意味がわからないってのはわかるが、 改変して行数が増えるとコンパイラが通らないって何? VC++1.52だと最大行数の制限があるの?
426 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:27:51 ] >>423 パーサーとかそんな感じで作るけど #ifdef DEB_PRINTしこんで コールグラフ作ればいいだろ。 んで文法作ればいい。おそらく処理しきれない 例外を見過ごして別の規則に遷移してるだけ じゃねーの?
427 名前:仕様書無しさん [2007/07/21(土) 09:28:44 ] 16ビットの制限とかあるんじゃね?
428 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:33:31 ] >423 hogeX()や各case値に意味あるんだろうから、そっから状態遷移図でも描いて見れば。
429 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:46:32 ] >>428 hogeX()や各case値に意味あるケースは稀じゃね?w
430 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:49:31 ] そうなのかw
431 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:55:27 ] caseでのコードではこんなのあったな@Java メンテしろと言われたけど、拒否したら左遷された 後任は自殺未遂したらしいけど・・・ うろ覚え int i = 20; label WHILE_LABEL; while(true) { switch (i) { case -3: i = func3(); break WHILE_LABEL; case -2: i = func3(); break WHILE_LABEL; case -1: i = func3(); break WHILE_LABEL; // 中略 case 50: i = func50(); break; default: i = func0(); } } 423のに似ているけど戻り値がリザルトコードになっていてマジでカオス
432 名前:仕様書無しさん mailto:sage [2007/07/21(土) 10:25:39 ] オブジェクト指向はおろか構造化すら怪しいグラマが必死に考え出したコードっぽいな。 こんなコードが随所にあるなら431は拒否して正解だ。
433 名前:431 mailto:sage [2007/07/21(土) 10:31:32 ] 随所どころか、辛うじて理解できた一部だよ 結局、ほとんど理解できなかった
434 名前:仕様書無しさん mailto:sage [2007/07/21(土) 10:42:34 ] 例はちょっと書けないけど最強にカオスなコードならあるぞ make yaccでmake+コード自動生成 生成コードmake yaccでmake+コード自動生成 ・・・ これが15回も繰り返されるカオスなコードあったよ
435 名前:仕様書無しさん mailto:sage [2007/07/21(土) 11:58:45 ] >>434 それは何のプログラムなの?
436 名前:423 mailto:sage [2007/07/21(土) 12:10:28 ] >>425 1関数のサイズの上限が決まってたと思う >>426 ,428 何年も前に終わった仕事について批判されてもなぁ・・・ 大体1関数が1000行って時点で何かおかしいんだから直して当然だろ
437 名前:仕様書無しさん mailto:sage [2007/07/21(土) 13:08:52 ] 関数ってどんなに多く書いても数百行で済まないか? 絶対処理分割できるぞ
438 名前:仕様書無しさん [2007/07/21(土) 14:23:36 ] >>436 関数の制限じゃなくてswitchの制限だと思うよ。
439 名前:仕様書無しさん mailto:sage [2007/07/21(土) 14:51:16 ] >>437 普通に手続き言語をやってくれば、どんなに長くても数百行なんだが、 大昔のPLCしか触ったことない奴だとだらだら書く事しか知らなくて、1000行とかいく事がある。
440 名前:仕様書無しさん mailto:sage [2007/07/21(土) 16:49:09 ] 実行される行数が50を超えたらそれは長すぎ。
441 名前:仕様書無しさん [2007/07/21(土) 16:52:49 ] >>440 実行される行数ってコンパイルした後の話か?
442 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:38:24 ] 実行後の行数なんて意識する必要ないだろ、50行超えたら読みにくいだけ
443 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:43:39 ] 別にコードなんて動けばどーでもいいんだよ オマイラだってどうせ適当に書いて後は野となれ山となれだろう? この会社辞めようと思ったソースコードなんてお高くとまってないで 正直になれよ プログラムなんてちゃんと動けばそれでいいんだよ
444 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:44:18 ] 煽り乙
445 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:54:01 ] >>443 中国産は長い・意味不明・動かないの3拍子揃ってるぜw
446 名前:仕様書無しさん [2007/07/21(土) 18:05:21 ] >>445 コメントが中国語なら尚可。