1 :
960 ◆tPlLfpspY. :
03/11/03 02:36 この会社辞めようと思ったソースコード。 プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 Modula-2 ライクなソースコード。(゚д゚)ウマー をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないよ。 技術的な質問がしたいならム板に逝って。
2 :
960 ◆tPlLfpspY. :03/11/03 02:37
まな板娘[まないた・むすめ]
マ板における幾多の妄想の産物キャラのうちの一人。
前スレ >>932- を参照。
転機となる一言は前スレ
>>945 参照。
キャラ的には萌える要素満載だが、未だに絵はない。
というわけで画像キボンヌ
/⌒/ ̄ ̄ ヽ /⌒ ⌒\ 挙 死 様 投 唯 た 腹 海 / ( ( ノ ノノ ヽ 公 ぬ だ げ 一 だ を 江 〈 / \ ) 報 べ ゚ 込 神 死 切 田 | | | / 等 き 理 む 又 ん っ 万 \| | / で だ 由 者 吉 で て 里 | /━━━┛┗━━━ヽ| 熟 か は 達 イ 終 死 ・ (( \●≫|≪●/ )) 知 ら 他 だ エ わ ぬ 与 ヽ /|\ / す だ 人 ゚ ス る べ 謝 ヽ / | \ / べ ゚ を 彼 が も き 野 ヽ / | \ / し 詳 殺 ら 地 の だ 馨 ヽ/ 〈 〉 \/ ゚ し す の 獄 で ゚ ・ (ー――――一) い な 支 の は ま 佐 \  ̄ ̄ / 理 ら 持 火 な た 藤 ヽ___/ 由 自 者 の い 、 文 ___/|\ /|\___ は 分 も 中 ゚ 彼 則 :::::::::::::::|:::::| \/ |:::::|::::::::::::::::: ゜ 選 が 同 に ら ら :::::::::::::::::|::::::|/▼\|::::::|:::::::::::::::::: は は
5 :
仕様書無しさん :03/11/03 23:35
……これがまな板娘か……
萌へ〜 ゴロゴロゴロゴロ....
7 :
仕様書無しさん :03/11/04 11:06
momusu = x; x = y; y = momusu;
googleだと結構ヒットするな。まな板娘。 しかも素人小説ばっかり。
int n; n = n++; printf("%d\n", n);
>>9 nが不定値だからいやなの?
それともn=n++の表記?
VCにて INT main(INT iArgc, LPTSTR tsArgv[]){
12 :
仕様書無しさん :03/11/08 00:32
Cなんですが int と char を使ったことがないんだけど 業務ではこれが常識? 数字はTYPEDEFされた文字型に関数を使って代入。 printfではもちろん表示できず。。。 特殊なprintfをつかって表示。 なぜかカンマ付きで出てくる。 計算も+とか−じゃなく特殊な関数に食わす。 グローバル変数だらけだし。 みんな疑問を持たずにやっているのが怖い。 まわりから一番出来る人とよばれる人が int, char を知らない。 市販本はなく会社作成のテキストのみ。
>>12 >数字はTYPEDEFされた文字型に関数を使って代入。
意味不明だが、数字と数値を間違えている事は判った。
>12 んなこたーない、と言っておこう。 見た感じ、COBOL臭さが鼻をつくほどに臭ってくるな……
while(1){ i++; if (i>256) break; }
16 :
仕様書無しさん :03/11/08 00:52
>>12 「常識?」って聞くこと自体が救い様がない感じがする。
とりあえず、cの言語仕様を、推薦書籍スレに書いてある本を買って理解しろ。
includeファイルを全部読め。「特殊な関数」を全部読め。
もしかして加減算も「TYPEDEFされた文字型」同士で行うのか?
だとしたらそれはCOBOLのエミュレート環境だ。
恐ろしいことをやる奴(エミュレート環境作成者)がいるもんだ。
今のままでは転職しても絶対にcは使えないぞ。
COBOLって文字列で加減算するんだ。つ∩ヘェーヘェー
>17 マジレスするが、COBOLは数値の一桁に1バイト取る型があったりする。 そうなるとほとんど文字列と変わらん罠。若干コードの下駄があるだけで。 まぁ、それだけ贅沢な数値表現を持っているからこそ、未だに勘定系で 愛用(うげ)されていたりするわけだが。
みんな優しいな。 最初からCOBOL使えばいいじゃん。
てーか、オープン系COBOLがそれなりに使えるようになってきたから、 もはやCでエミュレートする意味・意義はゼロに近いな。
>16 CでEBCDEC? それは嫌過ぎ。
蛭子でっす
24 :
仕様書無しさん :03/11/08 22:53
>>12 君の開発環境は犯罪的だ。
君の同僚はみんな、「俺はcで開発している」と思っているんだろう。
会社が「cにラッピングを施した環境で開発してもらいます」と言っているなら問題ないが、
「cで開発してもらいます」といっているなら犯罪だ。
確信犯なので、出来たら社名をさらして欲しい。
確信犯の誤使用
だから、確信犯ってのは、こんな問題には使わない言葉なんだよ、本来は。 少しは辞書ひけ。
>>27 > かくしん-はん 3 【確信犯】
> 道徳的・宗教的・政治的な信念に基づき、自らの行為を正しいと信じてなされる犯罪。思想犯・政治犯・国事犯など。
> 三省堂提供「大辞林 第二版」より
合ってるじゃないか
この COBOLer は完璧に思想犯だろ
>>28 >しそうはん【思想犯】
>(1)確信犯の一。思想上の主義主張の相違による犯罪。
>(2)もと治安維持法に触れる犯罪の通称。また,その犯罪者。
>(新辞林 三省堂)
いつからCOBOLerは犯罪にされましたか?
または(今は無いけど)治安維持法に触れるほどの犯罪者になりましたか?
>>29 COBOL最強っていう思想から犯罪的な糞ソフトを大量生産してるってことじゃね?
31 :
仕様書無しさん :03/11/09 11:01
うちも、COBOLからCへ スムースな移行を支援するためのCライブラリを使わされている。 初めてCをやる新人もこのライブラリのせいでかなり戸惑っている。 Cの参考書を見ても載っていないとぼやき。
32 :
仕様書無しさん :03/11/09 11:06
・ ・ ・ '************************** '* 小細工 '************************** Exit Function VBにて
33 :
仕様書無しさん :03/11/09 11:20
会社独自のC使ってまーす。 for と switch がオリジナルとかなり違う。
>29 COBOLerなだけなら犯罪じゃないけど この環境を作ったのは犯罪っぽい気がする、 少なくともある程度の人数騙してるような。
そうだね。 COBOLって単語に異様に敏感になっていて、レスに否定的な表現があると 「叩かれた」って思いこんでしまう人がいるようだけど。
一番の問題は、COBOLerを叩く奴が多いからなんだよな。 なんどもいたずら電話がくれば、すべての電話がいたずらだと思ってしまう。 ノイローゼの原因(=COBOLer叩き)が消えればいいのに。
それは無理だろう なんたって、COBOLer達から被った被害が尋常ではないから
>>29 > いつからCOBOLerは犯罪にされましたか?
> または(今は無いけど)治安維持法に触れるほどの犯罪者になりましたか?
一応突っ込んでおくか
>>28 では特定の COBOLer を思想犯だと言っただけで
全ての COBOLer を犯罪だと言った訳ではない
いままでCOBOLer叩きが理解できなかったけど、
>>12 みたいなこと
連発されたら怨みたくなるな。
COBOLerさんは「郷に入れば郷に従え」という言葉を知らない。あるいはCOBOLerにとって 郷とはCOBOLしか存在しない。
42 :
仕様書無しさん :03/11/10 23:03
うちはコボラーが幅をきかせています。 コボルラッピングクラスの使用を強要させられるのは酷です。 んなもん作るな!
きっとCOBOLにはCOBOLのよさがあるんだよ。思いつかんけど。
1. いい加減在籍年数が長く首を切りにくいCOBOLerを置いておける 2. COBOLでできたシステムがたんまりあって、別言語で作り直す余裕がない 3. (一番もっともらしい建前)他の言語でこれだけの勘定系計算ができるか? 1.は時流から見てありえないと思う香具師は何かを見誤っている。 3.はいくらでも突っ込めると思うがこのレスに突っ込まないでね(*´Д`)イヤソ
45 :
仕様書無しさん :03/11/10 23:46
プログラマー生命なんてたかだか10数年 プログラマーを引退してから定年退職するまで どう生きていくか? お前らも今から考えておいた方がいいぞ
46 :
仕様書無しさん :03/11/11 00:26
たったの45レスでCOBOLと26個書かれているこのスレは、COBOL啓蒙スレですか?
COBOL数万本のPGを半自動的にJavaにおきかえるPJに入れられそうなんだけど、 そんなの成功するの?
>>47 いっそ、COBOLのソースをJavaのバイトコードに変換する
コンパイラ作るってのはどうだろうか?
俺は使いたくないけど。
>48 作ったら売れるかなぁ・・・
50 :
仕様書無しさん :03/11/11 09:56
>>49 売れるとは思うが、大変だぞ。
そもそものデータに対するアプローチの思想がちがうんだから。
51 :
仕様書無しさん :03/11/11 10:05
それは前人未踏なプロジェクトですね。 (未踏に応募したら即時採用ケテーイ
>12- Binary Ccded Decimal とちゃう? だとしたら、それなりに意義あり。
>48 COBOLのソースをJavaに限らず他言語のソースに変換する ソフトならいくつかあるらしいが。 そもそも、そういうのを使うことを考えない時点でオhルな、と。 自分もCOBOLはやったことあるんで、言語そのものが悪とは 思わないが、いわゆるCOBOLerとされる人種がフレームワークを 何も考えずに他の言語に当てはめてしまう柔軟性のなさは 指弾されるべき点か。そういう香具師がしばしば年功序列で 管理に回っていたりするからなぁ。
54 :
仕様書無しさん :03/11/11 10:23
>>48 で、きみのようなネイティブJava使いは、そのコンパイラが吐いたコードの
保守・バグ獲りに追われるわけだ、バンジャーイ。
55 :
仕様書無しさん :03/11/11 10:46
>>45 正直言って、文明の停滞、戦争、自然災害などがあった場合、
またそうでない場合にしろこの業界に限らず、世の中全部10年以上先は分からんだろう。
そんな中修行に10年かかる職業より、
10年後にはほぼ確実に無くなってるであろう事が分かってる職業ってのは悪くないわな。
COBOL.NETを使わせてC#とか。
57 :
仕様書無しさん :03/11/12 10:51
>>47 成功しない。
あんたもそう思ったからレスしたんだろ。
ここでの賛否は、成功の可否に影響するわけじゃないぞ。迷ったような判断はするな。
この種のことは、成功する/成功しない/判断不能の三つに一つだ。
正気ならそんなプロダクトを企画しようなんて考えられん。
>>57 内容の無いレスだね。
ところでなぜ君は、判断不能ではなく、成功しないと言いきれるんだい?
59 :
仕様書無しさん :03/11/12 12:30
ありがちだが、 C系のソースで、main()に、全て全部書いてあった。
>>59 >全て全部書いてあった。
日本語としておかしいぞ。
>>58 成功するか否かを問われたので回答しただけだ。いちゃもんつけるな
>ところでなぜ君は、判断不能ではなく成功しないと言いきれるんだい?
質問が「可能か否か」であったら、回答は「判断不能」だ。
質問が「保守可能なJavaソースにおきかえることが可能か否か」ならば回答は「不可能」だ。
この違いが理解出来るだろうか
たとえ可能であったとしても得られるjavaソースコードは保守不能だろうとの判断は出来る。
保守不能なソースが得られたとしてもそれが何になる。保守無しで稼動するシステムは寿命が極端に短いぞ。
結局、元のCOBOLを動かす環境を作成するか(買うか)、Javaで再開発するかのどちらかになるに決まっている。
だから「成功しない」んだ。
>>61 もう一声。
なぜ、「保守可能なJavaソースにおきかえること」は「不可能」なのか?
>>62 残念ながら、俺には、そんなことを論理的に説明する能力はない。出来る奴がいるとも思えないが。
COBOLの言語仕様はあまりに特殊なんだ。Javaの代わりにc、c++なんかでも同様だ。
COBOLをcに自動変換してそのcのコードが今でも現役っていうシステムなんか無いはずだ。
もしあるなら、俺の無知を藁ってくれ。
COBOLとJavaの双方の言語仕様を知っているやつなら納得してくれると思うが。
問題はなんで自動変換「された」側のコードを保守しようと するのか、ってことだと思うがなぁ。 その都度自動変換していけば良さそうなものだが。 なんか不都合があるのか?
>>64 それではJavaと協調した事にならないので、
その場合だと、実行環境がJavaになる事しか利点が生み出せない。
もしJavaプログラマが保守出来るという利点を作るなら変換後のソースも読める必要があるし、
COBOLとJavaの架け橋になるというなら、Java側に救済が必要だ。
というか、どーせJavaのコードをいじらされる羽目になると思うよ。こういう場合は。
残念ながら、俺には、顧客の気まぐれを論理的に説明する能力は無い。w
>>64 最初は「虚を突かれたか」と思った。
だが不都合は確実に存在する。
保守に当たって試験工数が2倍かかる。
「COBOLでちゃんと試験しましたからまとめて変換してJavaで動かします」
って言われて肯く客はいるのかなあ?プラットフォームも違うのに?
>>66 「COBOL単体でも動かなければいけない」という制約が無いなら、
Javaだけで試験すればいいんでないの?
69 :
仕様書無しさん :03/11/12 15:53
発想を転換してJavaVM上で動く、コヴォVMを作ればいいんだよ!
なんかやり取りが意味不明だな。 半自動って言っても、結局手間としては全手動と変わらないレベルの ものしか出来ないから、そういう意味じゃ成功はしないってことでしょ。
なるほどね。 俺のとこのクライアントさんも、かつて Fortran → C の トランスレートをやって、メンテでひどい目にあってた。 で、俺はなんで元のソースに手を入れないで、可読性の低い C 側をいじっちまったのか、理解に苦しんだもんだった。 >65 実行環境がJavaであることはエンドのプラットフォームを 制限できない場合には意味があるかも、とは思うが。 >57 テスト結果とソースコードが一対一に対応していれば文句は ないだろうと思うぞ。客はテスト結果と納品されたブツしか見ない だろうからな。>68のいうがごとくだ。 ただ、自動変換の実績が十分であることが条件になるだろう。 ネックはそこだな。
>>64 >>問題はなんで自動変換「された」側のコードを保守しようと
>>するのか、ってことだと思うがなぁ。
変換するということは、(しばらくは平行稼働するかもしれないが、将来的には)
現行のCOBOLで構築されたシステムを捨てて、Javaで再構築したシステムに乗換える
ということ。
変換後のJavaコードを保守するのはあたりまえ。
73 :
仕様書無しさん :03/11/12 16:46
まあ、こういう場合に自動変換が有効なのって、共通関数的な部分のみじゃないの? 単純な計算ロジックとか。w 業務ロジックが関わる場合、解析して、再設計して作成したほうが、遥かに安く付くと。
厳密に言えば
>>70 の言う通り、議題の定義を見直すべきなんだけど、
実務上の結論は
>>73 の言う通りだろうね。
ソースを解析すると出来る報告書は、仕様書に近い物になると思うんだけど、
そう考えると仕様書ってのは重要なもんだねえ。
ちょっとくらい嘘が書いてある仕様書の方がソースより価値が高くなる瞬間だ。
>>74 概要、基本設計は重要。これは逆にソース見ても出てこない可能性は大。
インターフェース設計書も欲しいけど、この辺りは仕様変更が多い可能性大なので、
方法とか初期方針だけ見て、ソースを追うのが正解かと。w
詳細設計書になると、ソースみたほうが早い。
>>75 「再設計」をするのに、どこまでの仕様を把握するかが問題だよね。
詳細部分まですべて把握してから再設計出来れば良いのだけど、現実的にどうなのかな。
概要部分だけでも再設計できれば、部分的にJavaに置き換えていく事は可能かもね。
その過程をイテレーションにすれば、読み違いの被害を最小限に出来るかも。
>>76 実務でやる場合、工数があるならば、全解析後に無駄を排除して再設計。
工数が無い場合は概要を把握できたら、ソースレベルで転記するように再設計。
だから、近視的になって全体に歪感が出て、結局破綻するのが落ち。
結局、COBOL→Javaなんぞ、よほど余裕がなけりゃやらないほうがいいって結論?
79 :
仕様書無しさん :03/11/12 17:43
>>78 そんな余裕があるなら、再開発しろ
が結論
でも、リプレースの案件が多いなら、何らかの手抜きは出来ないかと思うのが人情よね。 不治痛とかが仕様書工房のCOBOL版を出したりしてないのかなー。
81 :
仕様書無しさん :03/11/12 18:39
コーディングルールを守らない開発者に手を焼いています。 より良いルールでも採用しているのかと思えばそうでもなかった。 理解しがたいメソッド名ばかり目についたので一つ取り上げて命名規則を尋ねると フランス語で雪と言う意味です。と。 なぜ雪かとさらに問うと データを蓄積し古いデータから順に圧縮する処理だからと。 ルールの存在の意味を説明しても モチベーションが下がるとの返答。 サンのjavaのコーディングルールに沿ってと決めたのだが。
>>81 実際のソースコードをキボンするであります!
>>81 ものっっっっっっっっそく!そのコード見たい
その人はプログラマではなく、俗に言うポエマーですな。
85 :
仕様書無しさん :03/11/12 21:13
だからさ、コボルのコンパイラがJavaのバイトコード吐けばいいんでしょ?
CBL2J hoge.CBL して、 JAVA hoge …きしょい。
//C2J EXEC PGM=CBL2J //SYSUT1 DD DSN=HOGE.HOGELIB(HOGE),DISP=SHR //SYSUT2 DD DSN=HOGE.CLASSLIB,DISP=OLD /* //RUN EXEC PGM=JAVA //CLASSPATH DD DSN=RT.JAR,DISP=SHR //CLASS DD DSN=HOGE.CLASSLIB(HOGE),DISP=SHR /* ・・・・・・素敵
88 :
仕様書無しさん :03/11/12 23:05
>>87 お願いだからJCLなんか書かないで。ここはマスターベーションするところじゃあないんだよ
rt.jarは区分データセットとして扱われるんだろうか?
>85 というわけで富士通のCOBOL.NETをどうぞ。 俺は逃げるけど。
92 :
仕様書無しさん :03/11/13 00:28
>>88 COBOLとJCLって切っても切れない関係?
知人のCOBOLERにJCLも知らないのか?と言われたけど
なんかこのスレ見ていて分かったような気がしないでもないような。
JCLは常識。という前提のもと話を始められたんだけど
内容が良く分からないので「JCLって何?」と聞いたとたん
「お前、JCL書いたことないの?」と仰天された。
COBOLERって固定概念や既成概念に縛られまくりで
反論したら肉体的にも心理的にも消耗した。
JCLって昔、情報処理の勉強で見たような・・・
俺、自動ソースコード生成ツール仕事で書いたけどさ、
「自動生成されたコードはバイナリだと思って、絶対に手を入れないでください」
って運用方針にしたけど。
管理対象は生成されたコードじゃなくて、生成ツールだろ?
変換ツールのバージョンが上がったら再ビルド、テストで終了じゃん。
あと、調べてみたらJavaVM上で動くCOBOLの実装は既にあるよ。
COBOLのコードをバイトコードにしてくれるみたいだけど。
英文だったし興味なかったんで細かいところまでは読んでないけどね。
ttp://www.legacyj.com/lgcyj_perc1.html
>>93 thanks.
指摘されなかったら一生、固定「概念」でいくつもりだったよ。
俺にとってはとても重要なレスだったよ。
>>92 メインフレームでCOBOLソースをコンパイルするのに必要だ<JCL
つか、JCLわかんないとメインフレームで何も出来ないw
逆に言うとメインフレーム以外には全縁のないベンダ依存バッチ処理記述言語(?)
きっとそのCOBOLerは
COBOL=メインフレーム=JCL知らないと何も出来ないって意見だったんだろうな。
>>94 >「お前、JCL書いたことないの?」と仰天
これ、COBOLer が微妙に損している部分。言い方は違ったのかもしれないけど。
どうかすると上から下に見下ろしたような言い方に見える。
まー漏れはCOBOLerと会話するたび、一度はこんな気持ちにさせられる。
「COBOLerは外の世界を知らないで一生を過ごすつもりだからなんでもいえるな」と。
今Javaのプロジェクトに参加してるんだけど 2000行越えるソースが数十本 モノによっては4000行・・・ エーン
ちょっと待て、1クラス2000行はありだぞ。 java.lang.Stringだって2300行だ。 1メソッド2000行だったらさっさと辞めるが。
j2seのAPIと一緒にするのはどうだろう。
普通にコーディングして、Javadocもちゃんと書けば1クラス2000行ぐらいあるわな
一本のヘッダファイルが2000行
103 :
仕様書無しさん :03/11/15 18:46
/* ファイルを読み込む */ int PER_RTN_CD = READ_ZIK_FIRU_PROK( ); if( PER_RTN_CD == -1 ) { /* エラーメッセージの出力 */ D_ERR_CD_EQ_27_PROK(); return PER_RTN_CD; } ・・・ 変数・関数名は全て大文字で無くてはならない PROCって書きたいのにPROKにしないと怒られる FILEって書きたいのに(ry
104 :
仕様書無しさん :03/11/15 19:06
>>103 OK。周囲にバレないように内緒の秘密でフィルタを作れ。
int perRtnCd = readZikFiruProk();
を
int PER_RTN_CD = READ_ZIK_FIRU_PROK();
に変換するフィルタを早く!早く!早く!早く!早く!早く!早く!早く!大脳新皮質が退化して腐り落ちきる前に!!!
105 :
仕様書無しさん :03/11/15 19:09
/⌒/ ̄ ̄ ヽ /⌒ ⌒\ 挙 死 様 投 唯 た 腹 海 / ( ( ノ ノノ ヽ 公 ぬ だ げ 一 だ を 江 〈 / \ ) 報 べ ゚ 込 神 死 切 田 | | | / 等 き 理 む 又 ん っ 万 \| | / で だ 由 者 吉 で て 里
106 :
仕様書無しさん :03/11/15 21:15
この間見たよその部署のC++のソース。 関数宣言ではなく定義がかかれたヘッダファイル。 .cファイルを指定したinclude。 変数の初期値を0と見なしてかかれた初期化処理。 ダブルフリーを全然気にしない終了処理。 そして、goto分の嵐。 なにより最悪なのは、それをメンテしているのがCを知らないVBプログラマだってことだ。
>>107 > 関数宣言ではなく定義がかかれたヘッダファイル。
テンプレートではないのか?
違うんだろうけど
109 :
仕様書無しさん :03/11/16 10:17
>>103 procがprocedureの略だって知らないんだろうな。
じゃなきゃプロックってローマ字読みしてPROKって書けなんて恥ずかしくて言えないもんね。
>>104 そのツールを作るのはそんなに簡単ではないぞ。
111 :
仕様書無しさん :03/11/16 14:35
1関数20000行
>112 内製関数とそれ以外を区別するのが難しいな。 余計な接頭語を付けるはめになる。
114 :
仕様書無しさん :03/11/16 21:15
ライブラリのソース渡したら、製品のコードに .c がインクルードされてた。 理由を聞いたら「(ソース内の)enumシンボルが使いたかった」だそうな。 ライブラリ使ってリンクしてるから多重定義のエラーが出ない・・・。 さて、どこから説明していいものやら。
嘘だと思ってスルーしてるだろ・・・?
>115 そのくらい飽きるほど見てるからスルーされてるんだって。
なるほど! やっぱ足洗お。
118 :
仕様書無しさん :03/11/17 00:36
>>115-117 にまん行か。いちまん行までは見たことはあるんだが。にまん行ね。
#当然、正しいインデントなんて出来ないよね。
さすがに1関数2万はないけど、 コメントアウト、#if 0 〜 #elsif が混在し、 挙句の果てには"#if COMMENT"なんていうコメントアウトがあった日にゃー メンテするのもたまらんよ。 # しかもバージョン管理ツール使ってないし・・・
120 :
仕様書無しさん :03/11/17 23:46
121 :
仕様書無しさん :03/11/17 23:50
コボラーが作ったVBプログラム 全部グローバル変数だし、関数は全て引数なしで グローバル変数直さわり。 こんなん解析できましぇん
>122 COBOLってそういう言語だからな…… (大雑把に言うとグローバル変数しかない) がんがれ
>>122 漏れも、そんな感じのソースをメンテして納めたよ...
関数宣言が、Private Sub TEST_Kekka_RTN()って感じなんだよね。
んで、漏れの書いた、Private Function SetOperation(ByVal blnOperate As Boolean)
なんてのがまざってて、キモチの悪いコードになったよ。(--;
しかし、そのコボラーが「Functionなんて使った事が無い」って言うのには驚いたよ。
まぁさぁ、御互いプロだから書き方論をするつもりは無いけど、
それで「VBが使える」と言えるのかと、小一時間...
>>124 問い詰める必要なぞない。
そのコボラは、
コボル以降のモジュラープログラミングをサポートする言語を使用するためには
「コボルでは使用できない方法論」を習得しなければならない
ということを理解していないんだ。それだけだ。
>>125 仰る通り。
問い詰めるべきは、そのCobolerを連れてきた派遣営業だな。(w
結局、納期を過ぎてもマトモに動かなかったので、VBやった事の無い漏れが火消しで投入されますた。
さて、本題に戻します。
そのCobolerのコードでは、取得した値は全て文字列型で処理されてました。
まぁ、そこまでは許そう。(へへへ
頼むから、符号付き固定小数点値を、文字列型+符号を表わすBoolean型
(両方ともグローバル変数)にするのは止めてくれ。(苦笑)
文字列として「-1.234」とかじゃ、イカンのだろうか? (--;
>126 >頼むから、符号付き固定小数点値を、文字列型+符号を表わすBoolean型 >(両方ともグローバル変数)にするのは止めてくれ。(苦笑) いくらなんでも符号付き小数を一つの型で扱えないほど、COBOLはアホ言語では なかったと思うが…… よってそのCOBOLER氏は真性DQNに決定。イ`
つか、今の時代に「動けばいい」的な風潮がまだ残っているのが こぼらー延命の負の思想なんだよな〜 まぁ、客にすれば「動けばいい」なんだろうけど、 メンテする側からすれば迷惑きわまりないっす!
VBでActiveXを作ってCOM+で動かすような物を作らせれば グローバル変数がいけないということを 分かってくれるに違いないなどと思ってみる。
グローバル変数が使えないなんて、ActiveXやCOM+はいけませんね、と言いかねない罠。
132 :
仕様書無しさん :03/11/20 11:36
>122 今やってる仕事が、それと同じ状態ですよ。 integerにBoolean型を代入するわ、関数の型を定義して ないから全部Variantになってるわで見るのが苦痛です。 けどトランザクションやSQLってなんですか?って 聞かれた時や、MDBのサイズが800MBになっているのを 聞いた時、この会社を早く契約終了したくなったよ…
>>132 MDBの800Mって件数満タン状態で存在してるの?
それとも、最適化をしてなくてがばがば?
135 :
仕様書無しさん :03/11/20 13:21
>133 説明がたりませんでしたね、えっと最適化してない状態です。 正規化してないバカテーブルを毎日更新してれば、そうなる んでしょうねぇ… ちなみに自動バックアップ&自動最適化ロジックは 存在していません。・゚・(ノД`)・゚・。 一番問題なのは、ダメならSQL鯖とかオラクルにすりゃいいだろ? なんて考えている社長かもしれん。
>>135 とりあえず、Accessで最適化かけとけば。w
さすがにそのサイズはやったことないけど。
MDBアプリ作るときって、アプリ起動時にDB開く前に最適化が鉄則。
MDBって使用領域の開放って概念ないのが・・・。
あと、昔のバージョンだと、検索は工夫もなしにOnMemoryだよな。
件数が多いと・・・。
137 :
仕様書無しさん :03/11/20 14:32
>136 検索ですか?こんなのをループ内で毎回やってますね・・・ ちなみにこのテーブルは下手すると30万件以上件数があります。 Set rdsRecordSet = DBSDataBase.OpenRecordset("でかいテーブル") rdsRecordSet.Index = "PrimaryKey" rdsRecordSet.Seek "=", 検索条件 If Not rdsRecordSet.NoMatch Then 〜 End If 他にも初期化でこんなのがあった。 dim keisan(10,3,999,999) as String 配列をFor文で延々とゼロ入れて初期化してる 文字型にする意味が不明などと、理解しがたいロジック満載ですよ・・・ このレベルで品質や高速化って言われてもねぇ…
>>137 COBOLをよく知らんのだが聞いた話によると、
どうやらその検索と文字型はCOBOLerの常套手段らしいぞ。
BOOL main(){ モチロン正常終了はTRUEを返す
>140 そのコード書いた香具師3年くらいUN*X関連に修行の旅に出せ。
>137 たぶんそいつはCODASYL型DBしか使ったことがないのだろう。 メインフレームでもRDBはあるんだがな。古いシステムの保守 ばっかやってたとかじゃないか? 後半のは確かに理解不能。
>142 このスレの連中はCODAYSL型DBとか言われても判らない罠 COBOLerに笑われないようにRDB以外も勉強しておくのがよかろう。
手始めにNDBでも・・・
そういやNDB使うプロジェクトだっつってんのに
面接で「ボクはSQLができます」とぶっこいてた阿呆がいたな。
スキルシートは経験7〜8年とあったがありゃ捏造だろうな。
ところで
>>137 の下のは何?VBワカンネ
>>144 文字列の3次元配列と思われ。
つーか、何がしたいんだ、これは...
146 :
仕様書無しさん :03/11/21 09:24
>138 なるほど、COLOLerの常套手段なのか・・・ ならせめてコメントを入れて欲しいんだけどねぇ・・・ コメント率3%以下だしインデントがガタガタで読めないって(T T) >142 元汎用機のシステムだったみたいです。 RDBが無い時代なら、こんな滅茶苦茶なつくりになってるのも わかる気が・・・ >144,145 文字列の配列を定義しれるんですが、理解できないのは 計算が主なのだったら、数値型配列にしてEraseかければいいし 文字だとしたら、わざわざゼロで初期化する意味が不明ですよね… 配列で思い出しましたが、あるソースでは7次元配列なんて化け物配列 があったそうです(苦笑 COBOLerの書いたVBソースには魔物がいるのかもしれない・・・・
>>146 COBOLって定義が全てなところがあるから、コメントってあまりいらないような感じだよね。
設計をがちがちして、定義部をごりごりして、コードはそこから導き出される。
if (ret == 0) { ret = 0; }
149 :
仕様書無しさん :03/11/21 12:26
Dim n1 As Long Dim n2 As Long : Dim n46 As Long これをグローバル、モジュール、関数スコープでやられまチター
>>149 それを書いたヤシは、本当にプログラマでつか?
うーん、並んだときに美しくないし、コード保管で並び順がかわるから・・・。 dim n01 as long dim n02 as long ・・・・ dim n10 as long ・・・・ ってすべきだな。
いや、プログラマなら後で途中の数字の変数が欲しくなっても困らないように dim n0010 as long dim n0020 as long ・・・・ dim n0100 as long ・・・・ ってすべきだな。
短時間で俄然素晴らしいコードになりましたね。
いんや、多分
>>149 は10進数であることを怒ったんだよ。
プログラマなら16進数でってね。
dim n0x01 as long
・・・・
dim n0xFF as long
>>151-154 そんなもん、延々並べる莫迦いないだろ!
Dim n0x00 As Long, n0x01 As Long, n0x02 As Long, ..., n0x0F As Long
Dim n0x10 As Long, n0x11 As Long, n0x12 As Long, ..., n0x1F as Long
ほら、こうすれば 1/16 の行数で済むぜ!
>155 馬鹿! ステップ数を減らすなんて、単価を下げるつもりか?
つうか、As Longってうざいじゃん。っていうより変数宣言うざい。 せっかくVBなんだからさ、変数宣言なしでいいじゃん。
すまん、勘違いしていた。 変数宣言しないと、グローバルスコープにできないよな。 やっぱ変数宣言は大事だ、でも型なんてどうでもいいよ。 グローバルと分ける意味でも、ローカル変数は無定義でいくべきだね。
>>155 As Long が多すぎ。
Dim n0x00 , n0x01 , n0x02 , ..., n0x0F As Long
Dim n0x10 , n0x11 , n0x12 , ..., n0x1F as Long
でいいよ。
>>160 ここらでマジレスすると、VBで一番やられやすい仕様の部分だよな。w
Cとかから来ると、全部Longと思うのが人というもの。
でも・・・。
Dim n0x01 As Long As Possible
>164 気前よく1GBくらい増設して下さい。
vb白根。
品質の高い(バグ密度の低い)コードを書く先輩がいる。 その人のコードを見て、びびった。 char* p = strchr( str, '\0' ); if( p == NULL ) { return -1; // ここには絶対来ないはず! } if( ( (int)p - (int)str ) > MAX_LENGTH ) { return -1; // MAX_LENGTH以上のときはエラーとする。 } 「ここには絶対来ないはず」っつーのは、ホントにそんなコメントが入っていたのです。 おかしい、普段はこんなコードはあんまり書かない人なのに。
つーかこれに突っ込め (int)p - (int)str
>>167 そのコメントの何が不満なの?
assert(false && "ここには絶対来ないはず! ");
って書けってこと?
>>169 コメントが不満じゃなくって「コードが不満」。strchrがNULLを返すってのは経験したことがない。
NULLを返すことは無いorセグメントバイオレーション(だったっけ)割り込み発生
のどちらかだと思う。
>「ここには絶対来ないはず」っつーのは、ホントにそんなコメントが入っていたのです。 ↑これいらんだろ。baka
>>167 if ( strlen( str ) > MAX_LENGTH ) return -1;
173 :
仕様書無しさん :03/11/21 23:46
>>170 文字列中に指定文字が見つからなければNULLじゃなかったか?
>>173 俺が悪かったよ。「指定文字がnulの場合のstrchrが」って書けば良かったんだね。
assert(!"ここには絶対来ないはず! ");
>>170 コーディング規約か何かで強制されたのでは?
>177 藻前の意識がか?(w
↓これ以上は絶対レスがつかないはず!
↓多分、これ以上は絶対レスがつかないはず!
ばれた。
>175 うちのファイルサーバが稼働試験中に落ちたじゃないか。どーしてくれる。 (ま、Sambaでもいじってみっか、って自宅で立てた鯖だからいいけどなw)
>>167 文字列の最大長が決まってるならmemchr使えってこと?
char* p = memchr( str, '\0', MAX_LENGTH );
if( p == NULL ) {
return -1;
}
>>167 「おかしい、普段はこんなコードはあんまり書かない人なのに。」
(1)その人は普段エレガントなコードを書くと思ってたのに...
→コードを見たことがないならこの発言はおかしい
(2)どっかのこびとさんが勝手に付け足した
→納得
どっちだ?
186 :
仕様書無しさん :03/11/24 17:04
void A0(void) { switch STATUS { case S001: break; ... default: break; } return; } A1() A2() ... MN() 何もしない名前が2文字の関数が大量にあるんだけど・・・ さらに main() に遡って関数名に識別名を追記していく コーディング規約だということは分かった。 FSRDA1(); RDA1(); A1(); しかもC1(), D1() とか中身が同一のものが大量にある。 呼び出しが深く苦労して最下層までたどりついたかと思うと何も処理していなかったり。
なんかCOBOLとは違うにおいだなあ。 奴らなら関数の名前は全て同じ長さにする。
>187 そこはかとなくアセンブラのにおいもするような気がするが。 でも、x86系のアセンブラ上がりなら識別子は6文字にするんじゃ ないかという気もするし、よくわからんね。
189 :
仕様書無しさん :03/11/26 21:09
>189 うーん、どうだろ? 強いていうと「元はアセンブラで書かれていたものを、あまり考えずに Cで書き直した」って感じに近いような気がする。 実行モジュールからCのソースを逆生成してくれるようなツールも あるけど、そういうのでやるとラベルや関数名はもっと機械的 (A_000001から連番みたいな感じ)になるから、それとも違うしね。 >186 の A1(), A2() 〜 MN() が羅列されているあたりは 実は元はCall文だったという感じを受けるんだが。
int hoge = とある定数; a = (char*)malloc(hoge + 9); if(a == NULL) { printf("error"); } memset(a, NULL, sizeof(hoge + 9)); ここまで1カ所に突っ込みどころが固まってると逆に笑ってしまいますた。 直せる所は直したけど、9って数字だけはどうしても出所が分からなかったので放置してマス。
Javaのクラス名が全部アルファベット2文字と数字6桁でした。 この規約決めた奴は死ねばいいとおもう。
>193 むしろヤレ
>>193 Javaでアルファベット3文字と数字5桁連番ってのを見たことあるけど、
クラス図見ても何がどうなってるのかわかんなかったよ。
ActionFormのサブクラスとActionのサブクラスと
Filterのサブクラスが連番で並べて書いてあったり
EJBに対しても同じ命名規則を適用してたり…
196 :
仕様書無しさん :03/12/02 09:06
>>193 変数名トランスレータ使って、最後にその規約に合うように変換したソースを渡せば?
むしろ、相互に変換可能なツールを作って、 シェアウェアで公開して、 会社に買わせろ。
>193-195 その命名規則だと設計者は元COBOLerだな。 昔メインフレームの仕事(もちろんCOBOL)をやったことがあるけど、 その時はプロシージャ名と処理概要を列挙した一覧表を仕様書に つけるのが規則だったよ。 システム全部のプログラムのIDと処理内容を列挙したプログラム一覧 というのもあったけど。
その命名規則なら、名前見ただけでどのモジュールのクラスで どういう階層なのかは一目瞭然にできるはずだが?そうでき ないっていうのは命名者の能力に問題あり。 うちでも、画面番号とかモジュール番号とかそういう規則で 作成しているよ。当然、クラスメイトかは自然言語っぽく つけて、対応表が別にありますけど。
>199 コボラ―キタ━━━━(゚∀゚)━━━━!!!!!!
>>199 対応表が必要とかいう時点ですでに一目瞭然じゃないってことに気付け。
>>199 >当然、クラスメイトかは自然言語っぽくつけて、
クラスメイトの名付け親キタ━━━━(゚∀゚)━━━━!!
>>199 foo00001.java(SessionBean)
foo00002.java(Homeインターフェース)
foo00003.java(Remoteインターフェース)
…
こんな感じのが大量にできるわけなのだが、
対応表があっても間違えろって言ってるようなものだよ。
>>203 まあ、ああいう場合でも親番、小番形式だろ?
foo + 大分類No(2) + 機能No(4) で命名って。
199は foo瀬名.java(SessionBean) foo本田.java(Homeインターフェース) foo理香子.java(Remoteインターフェース) とかって付けてるんじゃないのか。
昔は効果があった方法だろうと思うけど時代遅れだよな。 いい加減IDEもタダで手に入るし、さっさと導入しろよ(w
なんでオブファスケータにやらせるような仕事人間がやってるんだよ、 糞コボラーめ。 クラスを暗号化して何が楽しいんだ。
ただのクラスメイトだから〜♪
同じプロジェクトの人に聞いたら、もっと 酷い話が。 クラス定義の書き方が決まってて、 public class クラス名 { と書かなくちゃいけないそうだ。 一見当たり前に見えるが、すごい罠が。 extendsやimplementsは書いちゃいけなかったらしい。 さすがにそれだとコード書けないんで何とか変えてもらったそうだけど、 Java書けないのに規約決めたコボラーは死ねばいいと思います。
クラス名だけなら、まだましだ 本物の糞コボラーは、すべてのメソッドを public static にするぞ!
おしい。変数もすべてpublic staticにしてグローバル変数にするぞ
糞コボラーはインスタンスの概念はおろかローカル変数も理解できない
まぁ、COBOLにはnamespaceの概念も変数スコープの概念も まったくないからな。最近のObject-COBOLとかCOBOL.NET なんかだとどうか知らんが。 なんにしても、異なる言語には異なるパラダイムがあるということを 理解できない奴は逝ってほしいな。
214 :
仕様書無しさん :03/12/03 09:38
COBOL野郎は異次元のパラダイスに住んでいるから無理だろう
コボラーに設計における技術的な判断を行わせることは、 品質面、工程面の双方に大きなリスクを発生させる
おしい。変数もすべてmainメソッドのローカル変数です。
おまえら全然わかってない 本物ってやつはJavaからCOBOLのモジュールをを呼び出させるんだよ
>>217 それ、Java側の担当が激しく死ぬのでやめてください。
COBOLに合わせてデータを加工して送るのはもう嫌です。
>>218 こっちがお願いしたいくらいだ
ところでお前、俺の左隣に座ってる奴じゃないよな?
先週からCOBOLの案件に突っ込まれたんですが、 所謂オープン系とはパラダイム自体違うって痛感してます。 で、そのCOBOLerの先輩たちが作ったVBとかのシステムもまたCOBOLっぽい… DBの非正規化とかグローバル変数とか…タスケt
はやく来い来い2007年
222 :
仕様書無しさん :03/12/06 19:13
224 :
仕様書無しさん :03/12/06 21:50
Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)<
>>223 呼んだ?
_φ___⊂)__ \________
/旦/三/ /|
| ̄ ̄ ̄ ̄ ̄| |
|愛媛みかん|/
ワロタ
226 :
仕様書無しさん :03/12/07 15:04
>>218 そんな時、両方分かる漏れは呼び出すためのラッパクラスを作った。
それが良かったのか悪かったのかは分からんが。
グローバル変数最強。
227の宣言した変数、向かいの席の奴がこっそりワーク変数に使ってるよ。
>>229 ああ、MZ-700で作業してる奴か。
あいつはいいよ。別にソース共有してないし。
232 :
仕様書無しさん :03/12/08 12:46
>>227 どこでも同じ変数名であるだけグローバル変数の方がまし。
Fortran の共通ブロック最強
>>226 コボラは死んでもラッパを放しませんでした。
>>229 だからワーク変数はローカルで取れとあれほど言っただろう?
徹底したグローバル変数&グローバル関数指向プログラミング。 俺は、その時、神が見えた!!
>>235 まあ、そういうコード組むときは、神が降臨しないとだめだね。
ただし、翌朝には神はもうこないから、自分でもわからない諸刃の剣
グローバル変数だけど、関数っつーかブロックごとに違う変数名規約にする。 N88BASIC時代によくやったな。
emacs lisp あたりは今でもそうだろ。
>>235 もはや神はいないんだよ。(生き神様はいたかもしれないが、絶滅危惧種だ)
>>240 Friedrich Nietzscheによって19世紀に宣言されたことを今ここで繰り返してどーなる
>241 それもまたヘーゲルのパクリなわけだが。
( ・∀・)つ〃∩ ヘェーヘェー
マ板でヘーゲルとかニーチェの名を聞くとは… ちょっと嬉しい文系マの俺(現組込系デジタル土方)
超亀だが>167 ここには絶対こないはず、というコメントをつけて エラー中断処理の条件分岐を書く事は俺はよくあるなぁ。 まぁelseのところとかだけど。 想定外の入力および分岐があったときにはせめてきっちり止まるようにでもしておかないと 安心できん。
「○○プロジェクト、一週間だけ手伝ってくれ」 そう言われたので現場へ行って、ソースを見る。 サーバにログインするための情報を持っているというので見てみると public static String SAVER_ADDRESS public static String SAVER_USER public static String SAVER_PASSWORD 救世主情報? こんなうんこ定数名つけちゃって、しかも誰一人ツッコミ入れないような 人間しかいないようだから火が噴くんじゃないか?
>>247 火噴いてる時にスペルミス指摘する奴がいたら殴られると思うが。
直してデグレたらどうすんの?
>>248 いや、指摘する以前の問題だろう。
そもそもserverが綴れない香具師が居るプロジェクトは、漏れは嫌だな。(w
まぁ確かにSAVERだのSESIONだのCONECTだのと、スペルミスする奴は阿呆だが、 他所のプロジェクトで火消しやる時は、そんな所にゃツッコまないな。 優先順位としては低い事項だから。 さっさとまとめて、さっさと撤退するが吉。
>>247 むしろ、まずpublicの方に突っ込まないのか?
まあ、1週間だけの投入が1年になったんだろうね。w
>>251 Java APIにだってそういうクラスがあるし、別にいいじゃん。
……と言おうと思ったら、よく見たらfinalじゃなかった。
>>251 >>253 なんでも起動時パラメータによって接続先を動的に変えるためらしい。
なら、なぜフィールドをprivateにしてgetterを用意、としなかったのか。
それはぶっちゃけ素人ばっかりのプロジェクトだから。
なんでも、立ち上げ時にJavaの経験のある奴は一人しかいなかったらしい。
信じられないかもしれないけど、こんなのが集まって実際に大赤字を出している。
今日はなんと机上デバッグをさせられ…
>>246 は予言者か、もしくはキバヤシ。
こんなプロジェクトとは早く手を切りたい。
なんか一週間限定のはずが今年いっぱいまで伸びるような話があったので、断っておいた。
>>253 Java APIにもpublic staticでfinalじゃないのあるよ。
System.outとか。
理由は全く別だけどね。
>>255 おぉ。気づいてなかった。確かにあれはpublic staticでnon-final
char* mojFILENAME; int seiID; double syoSCALE; それぞれ「文字」「整数」「小数」を意味するプレフィクスらしい。 しかし漏れも文字列をsz〜とかポインタをlp〜とかしてしまうので 人のことは言えない(´Д`)
すまん、文字列szってのは何でだっけ。
String terminated by Zero じゃない?
文字列の最後が0x00で終わってるから string zeroの略だったと思う。
>258 String terminated by Zero (ゼロ終端文字列)じゃなかったっけか。
直訳すると、”字ぬるぽ”か。
「Zero=ぬるぽ」かよ! 超訳だな。(w
ぢぬる
/******* include ***********/ #include "include/include.h"
>>266 しばらく眺めてると、じわじわ笑いがこみ上げてくるな。
270 :
仕様書無しさん :04/01/04 19:01
>>245 俺もIF文やCASE文には必ずELSEくっ付けて、仕様外の値とかが来た場合にはエラー起こすようにしてる。
あとSQLで一件もヒットしなかったり、一件もUPDATEされなかったような場合もチェック。
実際の運用じゃないんだろうが、テストの段階じゃ間違ったデータを
ほいほい生成して送ってきやがるからこれで随分助かってるよ。
>>270 >あとSQLで一件もヒットしなかったり
常識をさも優れた処理のように書かないでください。
そこチェックしてなかったらヌッ殺す
>>270 仕様外の値チェックを通常文の else でやるんでつか・・・
漏れは前チェック派なので、異常な条件の処理は最初に書いてまつ。
273 :
仕様書無しさん :04/01/04 19:50
274 :
仕様書無しさん :04/01/04 19:59
>>272 270ではないけど、select文のときは、defaultでいいと思うぞ。
業界入りたての新人なんだろう
もまいら、もちつけ。
>>270 の内容は、ある程度経験を積めば常識の範疇だが、
その程度の事すら考慮していないクソソースに悩まされたことは無いか?
俺はあるぞ…(w
想定外の入力や分岐があった場合でも対応する処理を作っておくということは一緒なのに
なぜ
>>245 はスルーで
>>270 は叩かれるのか。
しばらくスレがヒマだったからいろいろ溜まってるの?
278 :
仕様書無しさん :04/01/04 20:30
新人とはいえエラーチェックをすることを得意げに話すなんて 相当のDQN会社に間違いない
つうかunit testやれや
>278 学生が暇つぶしに来るところじゃねぇぜ。 お前が考えてるぐらい世の会社にはマトモな人間がいる、と思ったら大間違いだ。 #まぁマトモじゃないから派遣が回されるんだろうけどな…
case文、俺はありえない値の判定入れてないんだけど・・・。 全部に入れるもの?それだけで、結構ソース増えると思うんだけど。 エラー処理に関しては、俺はかなりずさんだからな・・・。 その辺勉強するには何を読んだらいいんだろう?
286 :
仕様書無しさん :04/01/05 13:34
>>284 「あり得ない値」が「本当にあり得ない」のなら、不要。
ハードが安定してないとか、信用できないライブラリとか、
無茶苦茶な状況下でのデバッグとかなら、必要かも知れないけど。
>>284 どういう状況なのかよくわからん。
case節を40億個記述するかどうか、って話か?
プログラム中の全てのcase分に、ありえない値がきた場合の分岐を 書いておくかどうかって話だろ。
>>287 同意。
「論理的にありえない」レベルなら書け。
物理的にありえないレベルなら書かなくていい。
太陽風で値が変わったりするし。
でも毎度毎度それやるのめんどいのよねー。
>>284 IF 引数X = 0 THEN
処理A
ELSEIF 引数X = 1 THEN
処理B
ELSEIF 引数X = 2 THEN
処理C
ELSE -- 仕様上ありえない値の場合
エラー発生
END IF;
俺はこんな感じだけど、大してソース増えないよ。
条件分岐とかに使わないものはチェックしないし、起こすエラーは共通のを使いまわすし。
>>272 みたいに全部(だよね)の引数や変数に対して先頭で
チェックするんならかなり増えそうだけど。
こういった当たり前のことを当たり前にやろうってのは達人プログラマーとか読むと参考になるよ。
C++でまじめにset_new_handlerしてる人ー!! Cでmallocは必ずラッパー書いて使う人ー!! 漏れはやってねぇよ……_| ̄|○
>284 有り得ない値のcaseを書くんじゃなくて、 必要なcaseを並べた後defaultでエラー処理を書くだけだよ。 各switchブロックに2行ずつで足りる。
・set_new_handler C++で、::new失敗時に発生する例外が一切catchされなかったとき、 最後の受け口として機能する関数を登録するための関数。 VC++6.0はその辺の仕様が定まらないうちに発売されたため 現在のANSI/ISO C++のそれとは似て非なる_set_new_handlerが入っていて悩みの種。 (更に::newは失敗してもbad_alloc投げないしな……) ・malloc ANSI C標準で、動的にメモリを確保する関数。 失敗すると0を返す。いわゆるぬr(ry つまり、どっちも「動的にメモリを確保するとき、それが失敗した場合の対策してる?」ってこと。 Javaとかのメモリ管理をプログラマがあまり意識しなくていい言語から入った人には 何のことやらさっぱりだろうなぁ…… あ、間違ってたらツッコミよろしこ。
>293 malloc は漏れも痛い目にあったことがあった。 動的にサイズ計算して確保するんだが、その計算結果が「0」なことがあってさ。 この場合、malloc が「0バイトの領域を確保して、その先頭アドレスを返す」システムだった。 (サイズを0指定時の動作は ISO/C では実装依存と規定されている) 取れなかった時は当然 NULL チェックして回避してるんだけど、一応 NULL じゃないアドレス 返してくるから、そのチェックはすり抜けてアクセスしちまったの。 途端に不正ポインタでトンでくれやがりました。 結局ラッパ作ったよ、その対策に(サイズが 0 なら malloc せず NULL を返すようにした)
>>298 こんな感じの処理でトンだってこと?
a=malloc(0);
memcpy(a,"hogehoge",0);
>>298 サイズ計算の結果がゼロならば
普通はその領域にアクセスしないだろ
なーんつって
>299 こんなん。 size = count * sizeof(STRUCT); ptr = malloc( size ); if (ptr != NULL) { ptr[0] = hogehoge; } NULL じゃないから、if によるガードをすり抜けちまったんよ。
>>301 何でcountをかけるの?
size = (count+1) * sizeof(STRUCT);
なら、このあとの処理がなんとなく想像できるけど。
strcpy(str, NULL);
>>287 >
>>284 > 「あり得ない値」が「本当にあり得ない」のなら、不要。
そういうときにはアサーションを使いなさいって、お母さんいつも言ってるでしょ!
オカアサン (^o ^*;)
>>301 そりゃ、こっちのバグ
| ptr[0] = hogehoge;
>>297 set_new_handlerとはnew〜deleteのnewのコト?
>mallocは必ずラッパー書いて使う
というのはどういうこと?
# mallocは知ってますた(汗
>>307 俺の予想ではこんな感じの関数を作ること
void* my_malloc( int size ){
void *a;
a=malloc(size);
if( a==NULL){
printf("お前はぬるぽだ");
exit(-1);
}
return a;
}
>307 mallocラッパーの方は大体>308の通り。 まぁサービス、デーモンとかの簡単にこけてはいけないプログラムは いきなりexit()しないでいろいろ策を弄するんだろうけど。 で、newはそのnewなんだけど、オーバーロードしたnewまでset_new_handlerで 登録した関数に飛んでいくかどうかはちと忘れた(汗 なんで、::newって書いたのだわ。
>308, 297 thx! なるほろ、そうやってラッパー使うんですね>malloc あまり意識したコト無かった(汗 # 最近は専らnewだし:-) ::newはそういう意味だったんすね、安心しますた 最近知らないコト続出でビビり捲りだったモノで(汗
>>308 free()もラッパーをつくるとすると、こんなかんじか?
void my_free(void * p)
{
if(p == NULL){
printf("ガッ");
}
free(p);
}
freeってNULLを渡しても問題ないんだったっけ?
ANSI CならNULL渡しても大丈夫。 それ以外は知らん。
>>312 プログラム上は問題無いと思うけど、問題無い理由を説明するのは
難しい場合があるし、理解してもらえずに差し戻しになるケースもある
から渡さないほうが無難。
>>313 Sun OS 4.1.3はout。reallocも。氏ね。
>>314 明確に許されているインターフェースを制限するなんて○○ですか?
>314 マジレス路線一直線ですか。新年早々テンパってンな。
>>312 こんなことしてみちゃったりして。
void*の参照ってこうでいいんだっけ?
void my_free(void*& p)
{
if(p == NULL){
printf("ガッ");
}
free(p);
p = NULL;
}
>>316 二文字か。おおむね当たり。正確にはその系列。
目立
321 :
仕様書無しさん :04/01/11 11:29
この場合
>>313 の言っていることは正しくて、Sun OS 4.1.3 とやらがマズーだと思うんだが、
なんで「氏ね。」なんだ?
>321 マジレスも馬鹿らしいが、この場合「氏ね」は「Sun OS 4.13」に掛かってるんだろ
そうは読めないけどな
UNIX詳しくないので見当違いの質問だと悪いのだが SunOS4.1.3って、OSだよな? SunOS4.1.3で動くCコンパイラは全部free(NULL)で落ちるの? それともSunOS4.1.3付属のCコンパイラがそうって事?
コンパイラじゃなくてlibcだな。 そこで動くコードはコンパイラに関係なくぶちあたる問題だ。
>>326 サンクス。
「SunOS4.1.3のlibcがマズー」だとそうなる、ということね
glibcつかえば?
glibcってlibc使ったりはしてないの?
>>329 \ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんなエサで俺様がクマ――!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
(´⌒; (´⌒;;;
vb系言語で作った古いシステムの更新に際して、データの簡単な変換処理が必要になった。 年功序列リーダー「このプログラムはjavaで(自慢げ)先に作っちゃった。エヘエヘ。」 が、俺が見たのは数百行ある、たった1つの関数だけで構成されたものだった。 コーディングも初心者以下だった。 ちなみにそいつの関わったプロジェクト/プログラムで、成功した/まともな物を見た事はない。
まぁJavaなら関数とは呼ばないから、お前も(ry
>>331 まぁ単純な変換くらいなら、
それはそれで有りだと思うけどな。
踊ってくれるヴァカなら、責任から全部押しつけて踊らせて見てるのも、
失敗して勝手に消えてくれそうで面白そうだぞ。(w
ちゃんと動けばそれでいいじゃないか!
335 :
仕様書無しさん :04/01/13 09:17
>>334 お前のような奴がいるから・・・。
お前なんて、ダニだ!しろありだ!
>334 何がお約束だ 悪趣味極まりないな
337 :
仕様書無しさん :04/01/14 03:50
なにキレちゃってるんでしょうか、このひと
338 :
仕様書無しさん :04/01/14 07:20
334 名前:仕様書無しさん 投稿日:04/01/13 01:26 ちゃんと動けばそれでいいじゃないか! ---------------------------------------------- 336 名前:仕様書無しさん 投稿日:04/01/14 00:26 >334 何がお約束だ 悪趣味極まりないな ---------------------------------------------- _, ._ ( ゚ Д゚)
339 :
仕様書無しさん :04/01/14 07:45
>>338 334 名前:仕様書無しさん [sage お約束で] 投稿日:04/01/13 01:26
ちゃんと動けばそれでいいじゃないか!
340 :
仕様書無しさん :04/01/14 08:14
鈴木みそ(漫画家)がむかしちょっとだけプログラマ業界のことを書いたけど、 いま連載してる「銭」って漫画でもまた題材として取り上げてくれないかなぁ〜
334って悪趣味とか罵倒されるほどのことなのか?
>>341 食べ物屋が、喰えればいいんだよ!とかいって品を出すか?
自動車屋が、走ればいいんだよ!っていって自動車製造するか?
テレビ屋が、映ればいいんだよ!っていってTV販売するか?
品質の概念がないから、デスマが繰り返されるんだよ。
動けばいいだけのソースじゃ仕事したこととして認められない。
ネタにマジレスカコワルイ
342みたいなオッチョコチョイがいるからいつまでも品質が(ry でFA?
>>343 ネタだと思っていると、いつかそういう奴に出会うぞ。w
ネタだと信じて仕事をしたら、あらびっくり。
動けばいいってだけで作る奴のプログラムは大抵まともに動かない
>345-346 >343
>>347 だから、ネタだという保障がどこにあるんだ?
この業界、真顔で動けばいいっていう奴は掃いて捨てるほどいるぞ。
「お約束で」ってのは、ネタだよってことだろ。 なんでこんな事いちいち説明しないといけないんだ、アホ。
もう、その書き込みがネタかどうかはどうでもよく、 すでに「実在する動けばそれでいいと言っちゃう人」、という話題に シフトしてるのではないだろうか
そもそも、その”お約束で”っていうのが、 釣りを表しているのか、 それとも、書き込みをした彼のいつもの最後の捨て台詞としてのお約束なのか・・・。 萌えてるプロジェクトで、微妙なコードを書いた挙句に、お約束どおりに 「動けばいいじゃないですか。w」 間違いなく殺す。
>>350 ネタだという保証がどこにあると尋ねられたので答えただけだが、何か問題は?
>>352 >>351 は?
お約束ってのが、このスレに対してのお約束なのか、彼の日常でのお約束なのかで、
話は正反対だと思うが。
>348 なあ、「お約束で」と書いている人と「真顔で動けばいいっていう奴」は 結びつかないぞ。2行目は反論として全く意味を為さないんじゃね? てか345といい、話の流れを無視して直前の書き込みにだけ反応してるみたいな。
>萌えてるプロジェクト 萌え〜なプロジェクトとは羨ましい
ちゃんと動けばそれでいいじゃないか! (`・ω・´)
>>353 「お約束」って言葉、ネタとして使うもんだと思うんだが…
>336はリアルでそういう奴らと顔を合わせてるから ネタにしても悪趣味で受け付けられん、という事じゃないか。 その気持ちは俺も良く分かる。
>>334 の書き込み自体はネタだろ。
現実にそういうヤツがいるからネタとして意味があるわけで。
いいじゃないか! (`・ω・´)
「とりあえず納品できればいいじゃない」と言うウチのリーダーよりはマシ!
ちゃんと喰えればそれでいいじゃないか!(´┐`)
いいじゃないか、いいじゃないか、夢があればー
あたまのわるいのがいっぱいいるね
あたまがわるければそれでいいじゃないか!
//あたまがわるければそれでいいじゃないか! //↑さすがにそれはどうかと思う。
気にしなければそれでいいじゃないか!
,へ、 /^i | \〉`ヽ-―ー--< 〈\ | 7 , -- 、, --- 、 ヽ / / \、i, ,ノ ヽ ヽ | (-=・=- -=・=- ) | 心 の 底 か ら そ れ で い い / 彡 / ▼ ヽ ミミ 、 く彡彡 _/\_ ミミミ ヽ `< ミミ彳ヘ > ___/ \ / 7 \ | /
>364 いいじゃないか、いいじゃないか、明日があーればー♪ あー♪
魔王サイコなんて俺は知らないぞ
372 :
仕様書無しさん :04/01/17 18:26
マスター納品に行ったPMに電話一本で主キー増やされ、 明日の朝一番までに直せって言われた時の恨みは一生忘れません。 前日まで忙しくしてて、テストしたし、現地からもトラブル報告ないから今日は帰るってSEが帰った後の電話でした。 マスターとは言え多少煩雑な処理を含んで居る物で落ちないようにするのが精一杯でした。
373 :
仕様書無しさん :04/01/17 19:20
>>372 主キーぐらい容易に追加できるようにしておけよ。ホント無能だな。
374 :
仕様書無しさん :04/01/17 20:24
>>372 言いなりになってること自体がお前の無能さを語ってるね。
>373-374 許してやれ。 スレ違いだしな
>>372 主キーが増えただけなのに修正に凄く苦労するようなプログラムを組んでしまい、
さらに満足に直すことができず、力不足を認識して、この会社(業界)を辞めようと思った。
ということですね?
>373-374,376はマスター納品に行ったその場で仕変うけちゃうSヨ
378 :
仕様書無しさん :04/01/18 02:38
>373-374,376 は著しく想像力の貧困な372の上司だな
379 :
仕様書無しさん :04/01/18 14:36
>>377 , 378
372が大変になる理由を書いていないのも原因では。
言葉どおりに主キーを一つ増やすだけならほとんど影響はないはず。
せいぜいレコードINSERTするときにその項目がNULLにならないようにするだけでは?
主キー追加してNULLにならないようにするだけって・・・想像力無さ杉。 なにか入れたいから主キーに追加するんだろ。
こんな香具師にまかせてるから漏れたちは現場で混乱するんだろ。
>>380 君は言われてもいないことを勝手に妄想して問題を起こすタイプだね。
372の条件では主キーを一つ追加する、としかかかれていない。
勝手な妄想は慎みたまえ。
ちょっと弱音のレスを見ると得意になって叩きだす奴なんでだろ〜
385 :
仕様書無しさん :04/01/18 16:16
かといって、PMやれと言われてもできない自信が俺にはあるがな ていうか、言われんがな・・・
ファイルサーバに置いてあった別なチームがやってるCOBOL保守作業のソース、 ひとつのモジュールの変数宣言だけで3000行ぐらいになってる… 似たような名前で違う日付がついている変数がいくつもある事に気付いて即ファイルを閉じた。 これは見てはいけない…。
>>384 君こそわかってんの?
主キーが無いテーブルに主キーを追加するってんなら別だが、
主キーがあるテーブルに新しく主キーを追加するってだけなら影響はない。
もともと新しく追加した主キー以外でユニークになっているんだから。
>379は仕様変更を要求されて、それがどの程度の影響を及ぼすのか考えもせずに受けちゃうSヨ
COBOLなら、確か変数宣言だけ外出しにできたはずだが…
>>387 はキーの意味をわかってないのでこれ以上話しても無駄
>>390 わかってないやつほどそういうんだよね。
本当にわかっているなら問題点ぐらい挙げてみろ。
ただし妄想はなしでな。
>>386 そのソースを開いたときの驚きようは想像するに難くない。
>>387 >もともと新しく追加した主キー以外でユニークになっているんだから。
ユニークにしたくないから”主キー”を追加するんだろw
ユニークを維持するつもりなら主キーである必要はないね
現場にいたよ、
>>391 みたいなうんこSE。
さらにたちが悪いのは、not null制約やキーの付け外しだけではなく
周知もなしに勝手にテーブル名やカラム名まで変えちゃうところ。
一ヶ月前にテスト済のプログラムが落ちるってんでログ見てみたら・・・
それに比べれば教えてくれるだけまだマシじゃないか。
問題なのは、こういうことする糞Sヨが予算を全く気にしていないということだ。 自分のせいでいくら足が出るのか考えたことすらない奴。
キーの追加が影響あるかどうかはしらねーが、テストはその時点でやり直しだろ?
妄想とは笑止 リスク管理を知らない391は去れ
399 :
仕様書無しさん :04/01/18 23:59
>>397 が一番正論だ。
仕様変更を受け付けたSEはそのことも認識していないカスだろう。
>>387 も同類。
>>372 にはご同情申し上げるとしか言いようがない。
なあ、俺、CとかC++は詳しくないんだけどさあ。 C++で固定長のデータ扱うのって、よくあることなのか? 既存のシステムをちらっと見て、そんな風になってたんだ。 そんで、そうやって得た固定長データを、 そのまま<PRE></PRE>ではさんでブラウザに流してるんだ。 ブラウザは大半がプロポーショナルフォントなもんだから、画面くずれまくりでさ。 こういうシステムってどうよ? 俺としては、時代遅れのコボラーがやってるとしか思えないんだ。 で、データベースはOracleだって。どういうこと?
>C++で固定長データ よくあるわけでもないがないわけでもない。 しかし、<pre>で挟んでまんま、とかの辺りは激しくイヤソ。
404 :
仕様書無しさん :04/01/19 01:27
主キーの追加は痛いぜ。いや、まじで。
親テーブルの場合はそれを参照している子テーブルがあるわけで、
親に主キーが増えると子との関係がN:M関係になってしまう。
子テーブルの場合はまだいいんだけど、それでもそれまでのデータがユニークではなくなってしまう。
どっちにしろエンティティの意味が変わってしまうため、論理レベルでの見直しが必要になるぜ。
>>387 おまえモデリングしたことないだろ。
405 :
仕様書無しさん :04/01/19 06:18
リリース日にPキー追加要求されるシステムってどんな設計なんだろ? Sヨさん責めるのは可愛そうな気もする。
>>404 お前、主キーは一つのテーブルに一つしかつけられないの知らないだろw
407 :
仕様書無しさん :04/01/19 10:45
主キーって何?
fprintf("%-03d",num); 書いたやつは気が触れていたとしか思えない。 しかも、コンパイラによって解釈が違ったんだが、コンパイラの仕様変更一覧には載ってなかった。 こんなトンチキなコードを書くやつがいるとはSUNの仕様変更担当者も想定していなかったに違いない。
410 :
仕様書無しさん :04/01/19 11:38
>>409 そんなのプロトタイプで引っかかるだろ?
>>407 えっ? まじで知らないの? 主キーとキーがごっちゃになってるねw
>>411 それ以上しゃべるなら、実例出してから言ってくれ。
どっかから引用するとかさ。水掛け論の馬鹿馬鹿しさくらい知ってるだろ?
仮にも技術屋のはしくれのマなら、それぐらいしろよ。
何も知らないクライアント相手にしてるんじゃないから、論理でしゃべれ。
>>411 第1正規化をほどこした場合における主キーの扱いについて述べよ。
>>406 「主キーを構成するカラムの追加」を
「主キーの追加」って言ってんじゃないの?
だからそれがこまるんだってばよ
まだ続いてたの? この頭の悪い会話。
主キーだいしゅきー。
>>417 むしろそのレスのほうが上のやりとりより賢い。
>417-418 ワラタ
主主を分解すると、主キー 更に分解すると、キーキー キーキー言うな!
>>413 第一正規化だと主キーは設定されてないんじゃないの?
DB一度もいじったことない厨房ですが。
ぽまいらオラクルでも受けてこい
実は神託を受けろという意味 上岡龍太郎にはだまされないぞ
> そんで、そうやって得た固定長データを、 > そのまま<PRE></PRE>ではさんでブラウザに流してるんだ。 > ブラウザは大半がプロポーショナルフォントなもんだから、画面くずれまくりでさ。 大半のブラウザはPRE要素は固定長フォントで表示してくれそうなものだが。
大半のブラウザなんか実はどうでも良くて、IEだけが問題だったりする罠
>>424 ,
>>425 言われてみれば、その通りだ。IEだけが問題だ。
でもユーザーの大半がIEを使っていると言う罠。
>402 コボラーじゃないにしても コンソールベースを長らくやってたプログラマかも。 どっちみちそのやり方は改めた方がいいだろうな。
430 :
仕様書無しさん :04/01/21 00:19
char *checklock(FILE *fp) { system("dir >dirlist"); while (fgets(line, 256, fp) != NULL) { if (strstr(line, "lockfile") != NULL) { system("del lockfile"); return "LOCK"; } } return "UNLOCK"; }
>430 なんかいろいろと省きすぎていて今一イミフメなんだが。 もーちょっと漏れのような頭の悪い香具師にも分かるようにキボンヌ。
>>429 これが、昨年度頭に入れたシステムの話だってんだから笑えるぜ。
しかもパッケージだと。
>431 ・悲しみのdirlist〜君は何のために生まれたのか〜 ・知られざるline!〜生い立ちを探る旅〜 ・恐怖!君の環境に深く潜んだalias del='rm -fr /'
>433 激しくワラタw ま、 del を /bin/rm に直しておけば問題ないってことでFA?(´ー`)
return "LOCK" …(;´Д`)
interface Stringable { } ...Stringable???? 何ができるんだろう。
SM
ウマイ
>>436 多分 toString() とか Serialize で解決する問題なんだろうな。
>>435 この関数の使い方は、
if(checklock(fp) == "LOCK"){
}
ってやるのかな?これで使用通り動いたりもするから、怖いよな。
>>440 えぇー、
それってシステムに依存とかしたりしない?
printf("Check Lockfile.... %s", checklock(fp));
くらいだったら許せそう。
つか、dirとかdelってDOSコマンドのか??
>>441 動いたり「も」する。
最適化オプションとかで、「同じ文字列は一つにまとめちゃえ」みたいな
オプション付けてると動くよ。
オプションやリンク順を変えると動かない、繊細な*不思議*プログラムはこうして作られていく。
むしろ==で文字列比較して動いちゃったというのはJavaでよくあるな。
>433多謝。 そーすると、 ・敵か味方か?謎の存在fp、待て次号!! ってのもありかな。いやもう亀だからいいけど。
446 :
仕様書無しさん :04/01/22 01:35
漏れは、RDBMSってのは正規化しなきゃ動かないと思っていた。 正規化しないとDB投入できないと思っていたんだ。それは間違いだったのか? 第1正規化すら出来ていないデータを無理矢理データに投入するとは・・・ アンケート結果を保存しているんだが、構造はこんな感じ。 user_id int, answer1 bool, answer2 bool・・・・answer30 bool しかも、アンケートの項目は時々増える! そして、そのたびにテーブルのカラムを追加する! このシステムを別の言語とDBMSに移植してくれと頼まれたんだが・・・
>446 >正規化しないとDB投入できないと思っていたんだ。それは間違いだったのか? 「できない」ってのは確かに間違いだが 移植時にお前さんが大なた振るうのは無問題。がんがれ。
>>447 ざっつらいと。
ちなみに元の言語はJSP(Java)なんだが、
OOPって何なのかって考えちまった。
>>449 Opekepe Opeke Pepo pepopo
JSPが言語に昇格しますた
OOPs!
>446 その持ち方はクソだ。自信を持っていい。 リファクタリングがんがれ。
まあユーザ情報だけ外出しにしてるっぽいから、まだ良しとしようや
455 :
仕様書無しさん :04/01/23 17:45
・ ・ ret = func() ; if( 1 == ret ){ exit( 1 ); }else{ exit( 0 ); } ifの行がコーディング規約なんだと こうしないとコンパイラがちぇっくできないんだと なんかよくわかんないな
おまいの言いたいことも良くわからん。 ret=1を見つけるために、比較するときは定数を左に置けってこと? →変数同士を比較したいときはどうしたら良いんでしょう?先生。
457 :
仕様書無しさん :04/01/23 21:22
return func(); でよいのかも
458 :
仕様書無しさん :04/01/23 21:25
それはないな
exit(func(0));
exit(func()==1?1:0);
exit(func()==1);
サメにオヤジが食い殺さんんでつ
自分的には
>>460 だが、
>>455 とこのコーディング規約には
「3項演算子の使用は禁止」とかありそうだ。
464 :
仕様書無しさん :04/01/23 23:34
455だす >463 ある と思う if( ret == 1){ って書くのは規約違反と念を押された。
#define let = #define equal == /* = と == は使用禁止 */
あれかBEGINとENDか。
ifの左に定数置くのは、コーディングミスで代入しない様にするためじゃないのか? 見当違いなこと言ってたらすまんが、俺んとこはそういう理由で if( ret == 1 ){ ・ ・ ・ は不可だよ。
>>467 変なところでコンパイラを頼ると変数同士の比較で間違えそうな予感
小学校のとき、工作の時間で紙の冠に「王子」と書いたら クラスのほとんどから「おうこさまぁ、おうこさまぁ」と はやし立てられました。 今、デジャブです。ここは心の救い
>ifの左に定数置くのは、コーディングミスで代入しない様にするためじゃないのか? 多分そうだろうね。 まぁでもなんつうか…そんなレベルでカリカリするような規約はプッだよなぁ
ifの左に定数がダメって規約はこの板では良く聞くよね。 ・・・・聞かない?
472 :
仕様書無しさん :04/01/24 06:51
そんな規約、聞いたこともねえ・・・ だいたい、そんなの間違ってもすぐ気づくし、普通はワーニングでるじゃねえか・・・
memset(buf, NULL, MAXSTR); みたいのが山ほどあるので警告はすべて無視してるんだろう。
定数左置きは、比較対照の変数がもの凄く長いものになった時に多少見やすい(?) というメリットならあるぞ。
>474 定数を、 const int METTYA_NAGAI_MADA_TUDUKU_NAMAE_DESUGA_NANIKA = 100; とかしてたらどーすんの。 定数が数値直書きならそれはそれで痛いし。
>473
そういうのあるね。
先に改善すべきなワーニングが出る書き方が他にあるのに
それをどう書けばいいかをコーディング規約を作った奴が知らなかったために
ワーニング表示は常に出るもの、という事になってしまい
>>472 の言葉どおり突っ込みたくなるようなどうでもいい規約が乱発される事態。
うちの会社には
「IFの条件文内にNOTを含める事を禁止」っていうのがある…
そういう場合はNOTを使わない書き方をして
「成立時には何も処理を書かず、elseにNOT成立時に行いたい処理を書け」と。
理由は「プログラムが分かりづらくなるため」だとさ。
なんというか、部屋の角でふんぞり返ってる部長さんってば
あなた相当低脳ですねぇ、って思ってしまうよ。
char szResult[200]; char szTmp[200]; strcpy(szResult, "ID :"); itoa(nID, szTmp, 10); /* nIDは整数値 */ strcat(szResult, szTmp); strcat(szResult, "のデータを取得しました"); 先生!sprintfが泣いてます!!
>477 ごめん。漏れ、Cプログラミング診断室読むまでsprintf知らなかった_| ̄|○
>>479 安心しる。漏れもBorlandC++(当時Win3.1)に添付の
Windowsサンプル見るまで知らなかった_| ̄|○
Cで演算子の優先順位って、完全に覚えているものなのかな?
漏れは極力括弧を使って、明示しているんだが。
>>477 昔、ライブラリのバグが怖くて
標準ライブラリも使用禁止された事がある。
memcpyから手作りでした。
>>463 exit(!!func());
はどう?
これってコンパイラ依存?
>>481 そういうのを覚えていて、複雑な条件判断を少ない括弧で書く香具師のほうがキショイ。
どう考えても君が正常な神経の持ち主。
484 :
仕様書無しさん :04/01/24 18:11
>>483 複雑な条件判断であれば、括弧使いまくりより分割した方が良くないですか?
>>483 はげどう。
後で保守する人のことを考えて
なるべく平易なコードを書くことを
こころがけてます
>>484 例え括弧がなくても正しい場合でも、括弧をつけてわかりやすい書き方をしたほうがいい
って話をしてんだろうが ぼけ!
話の流れを読まずに 一部分を取り上げて茶々入れる奴が一番むかつくんだよ!
487 :
仕様書無しさん :04/01/24 19:13
>>486 >>483 より前の話の流れはそうなっていますが、
複雑な条件判断であれば、括弧使いまくりより分割した方が良くないですか?
>487 分割の例をあげてくれや!
489 :
仕様書無しさん :04/01/24 19:22
+-*/だけで構成された短い式ならカッコはつけないかな。 この程度なら算数の領域だし。
>>487 起点が481の話題なんだから・・・
流れを読もうね。(´・ω・`)
論理演算子が絡んできたら基本的にカッコつけるなぁ。 後で自分が分からなくなるの目に見えてるからw
>>489 /の分母には括弧をつけて、式の範囲を明確にするな
0にするポカやりやすいんだよね、漏れって
分割の例まだぁ?
//論理名称:次のファイルがあるかどうか //物理名称:NotFound // : bool NotFound() { ・・・ } 何か論理名称とか物理名称とか訳のわからない単語が流行ってたみたいで最悪。 しかも関数名が意味わからんし。 //引数:(1) ファイル名 // (2) ・・・ どの引数だよ!そうですか、関数定義と照らし合わせて見ろと。 でも引数が10個とかあるのは勘弁。
497 :
仕様書無しさん :04/01/24 23:20
なんか、 自分だけの理解/意識の中のことを押し付けよう と必死な香具師が約1名いるな
>>497 それはお前自身のことか?
その言い方は過去に書き込みをした全員をいやな気分にさせるだけだな。
どの発言に対してそう考えたのかもっと具体的に言ったらどうだよ。
499 :
仕様書無しさん :04/01/24 23:54
500 :
仕様書無しさん :04/01/24 23:54
簡単に釣られんなよ・・・
>>499 複雑な条件判断の例をあげてくれれば、それを分割してやるよ?
502 :
仕様書無しさん :04/01/25 00:06
括弧使うより分割したほうがいいっていう例はマジで俺も知りたい。 分割する単位で括弧で囲めば同じことじゃないのか? それとも「分割」って何か違う意味なのか?
貧弱なエディタ等の理由により長い1行が扱えない、に5点
505 :
仕様書無しさん :04/01/25 00:26
506 :
仕様書無しさん :04/01/25 00:32
分割してしかるのちに統治せよってことだ
ちと違うな(w
508 :
仕様書無しさん :04/01/25 02:00
509 :
仕様書無しさん :04/01/25 10:21
単純に経路数だけを考えると、 if ((A) && (B)) { 処理1・・・ } else { 処理2・・・ } と if (A) { if (B) { 処理1・・・ } else { 処理2・・・ } } else { 処理2・・・ } では、分割しない前者の方がいいけど、サイクロマティック複雑度は一緒
分割っていうのは括弧ごとに一旦bool変数に代入して 改めてそれを組み合わせる、って事じゃないのか? それは俺は眠いときに結構こまめにやる。
>>496 俺は「カッコをどこまで明示的に書くか」というそもそもの話題に対して、
普段どの程度ならカッコを省いているかという実例を挙げただけであって、
>>487 のいう「分割の話」になんぞ参加していないのだが・・・。
もしかして
>>487 は凄く偉い人で、この御方が分割云々を言い出した以上、
あとの者は全員従わなきゃいかんかったのか?
512 :
仕様書無しさん :04/01/25 13:09
本人はそう思ってるらしい
>>511 別に従ってるんじゃなくて煽ってるだけだろ。
っつーか
>>486 が一人で粘着化したに一票。
第一スレの流れ中に一度に一つのトピックしか許さないなんて訳じゃない。
レス番振ってどれに対してかを明示すればいくつもの話題が交錯しててもいいじゃないか。
自分が語りたい流れからそれて行きそうになったからって発狂したり粘着化したりとか…
もうちょっと心に余裕を持てよな。良くも悪くも匿名掲示板なんだから>>そういう方々
なんにせよ、議論が起きたときに具体例が挙がらんというのが悪いんだと思うがな。 スレ全体通して。
それが狙い
>>515 どういう奴が…と考えると、
「こういうソースがあったんだよ勘弁してくれよ」って書き込みがあって
それに対して「何言ってんだお前が分かってないんだよ馬鹿」的なレスする奴いるじゃん。
細かい事情も知らんしょっぱなから突然口汚い文句でこき下ろす奴。
そういうのが一番悪いと思う。
レス付けられた本人はもちろんただ読んでる人にも不愉快なだけ。スレが荒れる原因でしかない。
具体例については、もともと業務プログラムのソースなんだから
具体例を丸々コピペするわけにもいかんだろうよ。
晒しあげるためだけに変数名変えたりロジック隠したりする程の暇は無いよ。
具体例ならびに解法について腰据えての議論っていうのは
マ板よりム板って気がする。あくまでここは愚痴スレなんじゃないの?
…って
>>1 にもそう書いてあるじゃんか。
別に内容的な議論がしたいわけじゃなくて
>>509 ぐらいの簡略な例でも出したらどうよってこと。
愚痴る側もこき下ろす側もな
さらに具体的な例に関しても、晒すのが難しいってんならこのスレ自体成り立たないと思うが…
#俺がここで持論撒き散らしても仕方がないが。
519 :
仕様書無しさん :04/01/25 20:21
>>514 粘着化してるのは
>>484 だと思うのだが、どうよ?
...というか、484 = 514、にも見えるしな(w
>>519 一応言っておくと、484と487は漏れだけど後は知らんです。
483と486が釣れそうだなとは思っていましたが、
正直こんなネタで大漁になるとは予想してませんでした。
そんな事より、
>>495 がスルーされて可哀想なので
誰かフォローしてあげて下さい。
>521 >495には悪いが、なんかもうこの程度だと見飽きてしまって、 「そんなんで辞めたいと思ったらこの業界いられないよ?」と思ってしまう。 スルーの理由にはそれもあると思われ。
> なんかもうこの程度だと見飽きてしまって マス板の基地外投稿スレみたいだな。
なんせ既知外じみたコードが世の中氾濫してますから。 嫌な耐性がついちまったもんだ。
>>523 この前、1関数8000行のコードのメンテさせられたけど、このスレ
ではネタにもならんって思ったよ
演算での括弧にしても、IF文を分けるかにしても、仕様を普通の言葉で書いたときに近づけるのが良いかと。 演算子は上でも散々書かれているが、きちんと意味が通るように括弧でフォロー。 IF文の場合、両条件がANDになるのならANDで記述、 分岐したうえで比較するというなら、そのように記述。
527 :
仕様書無しさん :04/01/26 13:02
typedef unsigned int BOOL; BOOL a,b; a=funca(); b=funcb(); if(a==b) hog(); else fug(); これですごくはまった事があります。
>>527 C に排他的論理和がないのが原因だな。
つまり立地ーの責任だ。
>>528 bool a, b; なら
a != b で排他的論理和じゃないの?
ハイター的漂白剤
>>532 この香ばしい匂い・・・
やつらは本気だ!間違いない!!
>>530-533 うざい煽り方だな。
っつーか多分 ^ の事を言いたいんだろうけど
これはビット演算子であって論理演算子ではないんだけどねえ。
動きゃいいって言うなら別にいいけどさ(w
>>534 (・∀・)ニヤニヤ
#define AND(A,B) ((A)&&(B))
#define OR(A,B) ((A)||(B))
#define NOT(A) (!(A))
#define XOR(A,B) (AND((OR(A,B)),(NOT(AND(A,B)))))
>532 a b a!=b --------- T T F T F T F T T F F F XORに見えるけど。
538 :
仕様書無しさん :04/01/27 00:01
>>527 funca(){
return 1;
}
funcb(){
return 2;
}
だったとか
おもいっきり話の流れをムシ
>>538 嵌ったって言ってるんだからそんなところだろ
コボラでスマソ。 01 W年月演算域. 03 年月 PIC S(6) BINARY. 03 年月分割 REDEFINES 年月. 05 年 PIC S(4) BINARY. 05 月 PIC S(2) BINARY. MOVE 200401 TO 年月. 8年目の先輩がこんなことしていた。 氏んでほしいと思った。
>>538 それはコンパイルエラー出るんじゃないの。
今検証出来ないけど。
>>540 S(6) BINARYかよ。
Xならまぁ分かるが…
あああ・・・ S9(6) BINARY. S9(4) BINARY. S9(2) BINARY. ですね・・・漏れが氏んだほうがいいや
それいらい、 if(a==TRUE) ... ってのがあると、無意識に if(a) ... に直してしまいます。
547 :
仕様書無しさん :04/01/27 21:33
>>535 #define XOR(A,B) (A==0)==(B==0)
なんてのは?
>547 a b x --------- T T T T F F F T F F F T 否定しる。
>547
それだったら、AとBがboolなら
(A == B)
でいいんじゃないの?
で、XORなら
>>529 の通りでよい、と
で、こんな罠にはまりました。 #define TRUE (1) #define FALSE (0) int a; if(...) a=FALSE; else if(...) a=TRUE; else a=2; if(a==TRUE) ...
意味ねーじゃん
#define XOR(A,B) (!(A) != !(B)) #define XOR(A,B) (!(A) ^ !(B)) お好みで
>>553 言語の問題ではなく、その言語を使う人間のレベルの問題。
だと思うけどなー。
>>556 それはわかるけど、言語レベルで防げてれば、その阿呆の所業も防げるわけで。
改造が重なったソースとかだと、結構ありがちだし。
Win32APIですらまともじゃないしな。 GetMessageとか。
>>558 あー、あの気違いAPIね。
>BOOL GetMessage(
> LPMSG lpMsg, // address of structure with message
> HWND hWnd, // handle of window
> UINT wMsgFilterMin, // first message
> UINT wMsgFilterMax // last message
>);
>
> WM_QUIT 以外のメッセージを取得すると、0 以外の値が返ります。
> WM_QUIT メッセージを取得すると、0 が返ります。
> エラーが発生すると、-1 が返ります。
作った奴、頭おかしいよな。
よりによって WINAPI を持ちだすかー? N88Basic → Cobol → VB2 → VC6++ と言語変更した位の 昔からのシガラミを引きずってるヤツだぞ? おまけに、作ったヤツが・・・変更したヤツが・・・・だあれ?
>>560 その過去のシガラミを断ち切るためのおまじないがExなんでないの?
INT GetMessageEx()とかw
Exとは断ち切るための剣:エクスカリバーの略かい?
加トちゃんクシャミ
GetMessage()の戻り値ぐらい、大目に見てやれよ(u
>>565 実際にこれがらみでバグりそうなコード書く奴がいるからドキドキするんだよ。
実際にトラブったことはあるんだか、無いんだかわかんないけど。
だが、それがいい。
ギリギリの快感
>>558 ,559
あー、漏れも最近似たような罠に嵌った。
ヘッダ見ると戻り値の型がBOOLだったもんで、単純にゼロか非ゼロで判定するコード書いたが、
実際動かすと、成功時の値がゼロだったり非ゼロだったり…
なんじゃこりゃ、と思いMSDNを見ると↓と書いてあり脱力。
成功時:0から始まるインデックス
失敗時:-1
570 :
仕様書無しさん :04/01/31 00:52
エクスカリバーかと思ったら、エクスカリパーでした。
×ガリバー
for (int i = 0; i < 1; i++) { // 処理 } こんなのがあった。
そこは高速化のため i++ ではなくて ++i にすべきですよねっ!!!
それより i < 0 の方が早いだろ
ループ内でiの値を書き換えている罠だろ。
むしろループの外で、って、それが駄目ならコンパイラの責任か。
中でbreakとcontinueを使い分けてたら神
俺は派遣だし、会社辞めようってか書いた奴辞めろよって感じだが。 C++の案件は初めてとはいえ、実務経験2年のプロパーが書いたコード。 #if 1 //2004.01.31 念のため注釈… //Cで010とか先頭に0付けたら8進表記だ。あとprintf系で%oは%dの8進数版だ。 //何故わざわざ8進数?ってのはプロジェクトの性質上仕方ないところなんで…。 #endif #define MODE_FOO 1 #define MODE_BAR 2 // paramに渡す値として000, 001, 010, 011の4つが仕様書に書いてあった。 int CheckParam(int param, int mode) { int pos; char buf[4], tmp[3], c; sprintf(buf,"%03o",param); switch(mode){ case MODE_FOO: pos=1; break; case MODE_BAR:: pos=2; break; } c = buf[pos]; sprintf(tmp,"%c",c); return atoi(tmp); } いったい何をしたいのか30分ぐらい本気で悩んでしまった。 さすがにこの調子でコード書かれたらやばいと思いチームリーダーに報告したが、 「彼はC++初めてだし、気づいたら指摘してあげればいいんじゃないか?」と…。 俺は言語以前の根本的問題を感じるわけだがどうか?
579 :
仕様書無しさん :04/01/31 10:42
>>578 あなたの日本語と同じぐらい意味不明のコードですね。
>>578 C++を教えるフリをしつつ、その辺も教えたれ・・・ってそこまでする義理が無いか(w
>>579 俺の日本語については正直すまんかった。
#コードがちょっち長めだから日本語部にサイズ重視で最適化をかけようとしたんだが…
もれは、関数呼出しごとに文字列のコピーをしてるコードを見たことがある。 void func3(char *string) { char *tmp; tmp = malloc(strlen(string) + 1); assert(tmp!=NULL); strcpy(tmp, string); //処理A free(tmp); } void func2(char *string) { char *tmp; tmp = malloc(strlen(string) + 1); assert(tmp!=NULL); strcpy(tmp, string); //処理B func3(tmp); free(tmp); } void func1(void) { char string[] = "Hello!!"; func2(string); }
(続き) 処理AとBではstringの参照先を破壊するような処理は無く参照するのみ。 なぜこんな面倒なことをしているのかたずねたところ、「func1〜3の担当がそれぞれ違うから」とのこと。 しかも、func2にあたる関数の tmp = malloc(strlen(string) + 1); は、 tmp = malloc(sizeof(string) + 1); みたいなことになってたし。
それで再帰呼びしてたら素敵だな♪
>>578 つまり
inline int CheckParam(int param, int mode)
{
// 「modeがFOOでもBARでもないときに
// 予期しない結果になる」という仕様は
// 実装していません
return (mode==MODE_FOO? param/8) % 8;
}
ということか。
確かに C++ 以前の問題だな。
いやんバカ。 ×return (mode==MODE_FOO? param/8) % 8; ○return (mode==MODE_FOO? param/8: mode) % 8;
>>584 >>583 のコードを見て思い出した。
const をつけない人たちの相手は大変なんだよなぁ。
こっちが当たり前のように const 使って実装していると、
const はずしのキャストを強いられるし。
>>583 assert()って、そんな使い方するものか?
590 :
仕様書無しさん :04/02/01 03:01
a = malloc( (UL)0x80000000 ); 「おい、マロックで死ぬじゃないか。どういうことだ」 取りすぎだろ・・・・・・
ワロタ
ちなみにその人は、0x8000と書いたつもりだったらしい。 勿論それでも取りすぎなんだが・・・自分の書いたコードは 常に正しいという考えだから、バグが出たらコードを見直さずにすぐに 人のせいにしていて・・・
ていうか、そのコードは、常に正しいとかバグが出るとか以前の記述だろ。(w
>>590 そういうセリフをきくとmallocでは死んでないだろ、とツッコミ入れたくなるね。
>>589 そこもif (tmp == NULL ) abort();にしたら?つったんだけど、
リリースビルドでもNODEBUG定義しないことになってたから
そのままにさせてくれって。
>>590 せめて
size = 0x80000000;
a = NULL;
a = malloc( size );
if (a == NULL) {
goto _EXIT;
}
memset(a, 0x00, size);
_EXIT:
if (a != NULL) {
free(a);
a = NULL;
}
return (hogehoge)hoge;
}
って習慣汁!!
_[A-Z]\w+ な識別子は予約されてるから、_EXIT は駄目だろ。
>>598 マジっすか。いちおう不具合は生じていないものの修正したほうが良さそうだな。
識別子の予約って、どこで為されているものですか?
いちおう事実関係は明確にしてから修正しようと思います。
いちおう、いちおう。
知るか
>>598 大雑把すぎ
アンダースコア1〜2文字から始まる識別子は
ANSIーCや各処理系で使われてることが多いから
プログラムするときはさけた方がいいってコト
597必死だな
>>597 if (a != NULL) {
free(a);
ifは不要。
あと、memsetするならcalloc使えば? memsetもcallocも整数型に使う以外は
移植性無いよ。
経験ないけど、そういやfree(NULL)で落ちる処理系があるんだっけ。 どの環境だっけ?
>>607 知っています。旧いCなら特別扱いだね。使うときになってから考えます。
ちなみに315書いたの俺だ。
>>614 何も断らずにCの話してたら標準Cの話をしてると思うだろ。
C99かどうかは微妙だけど。
おれの作ったリヌクスディストロはglibcじゃなくて俺libc搭載に付きfree(3)が死ぬことがあります。
10点
>>603 いや〜
>>597 です。どうもありがとうございます。
今まで実動作への影響が見られたことが無いのですが、機会を見て直そうと
思いますた。
>>604 ちょっと神経質なコードかもしれないけど、慣れるといいもんですよ。
基本的にハンドルのリソースやメモリの解放は関数を抜ける前のところで
全部行う習慣をつけてます。解放する処理が一ヶ所に固まっていれば、
何かバグがあった場合に解放漏れなんかの影響の有る/無しの見極めが
つけやすいし。
619 :
仕様書無しさん :04/02/02 03:49
int i; ←コレ void main( void ) { for ( i=0 ; i<10 ; i++ ) { : } : } そうする理由は「iという変数は汎用だから」だそうな。 容量切り詰めテクに走ってるBASICじゃないんだから…とか思った。
int i; void func() { for ( i=0; i<5 ; i++ ) { … } } void main( void ) { for ( i=0 ; i<10 ; i++ ) { func(); } }
621 :
仕様書無しさん :04/02/02 08:08
>>619 自分もi,j,kがグローバル変数になっているコードに出会ったことがあります。
N88-BASICをプログラム言語の特性を全く考慮せずそのままCに書き写した
ようなもので、引数という概念が欠落していました。
それが前の会社でした。いや、正確には前の会社が以前に害虫に発注して得た
ソースコードの面倒を数年後に見させられました。こんなコードを作るほうも
作るほうですが、受け入れるほうも受け入れるほうです。
前の会社を辞めた理由の1つは、そんな体質にウンザリしたことですた。
>>620 ん?……Σ(´Д`)うぉっ。
……俺、グローバル変数使ったコード読めんわ_| ̄|○
矢張りマルチスレッドの場合はiとかjとかをクリティカルセクションで保護するのであろうか
>>619 >そうする理由は「iという変数は汎用だから」だそうな。
正直感動しましたが、何か?
iは半妖怪。
>>620 はすばらしいな。何度みても惚れ惚れする。
627 :
仕様書無しさん :04/02/02 13:22
>>620 永久ループをコンパイラに検出させないテクだな
>>624 あー、それよくやるよな。
メモリーが128バイトしかないワンチップマイコンとかで。
629 :
仕様書無しさん :04/02/02 20:01
>>620 これがどういう挙動をするのかぱっと見でわかるのか・・昔の人って凄いな。
>631 正確にどう動くかは分からなくても、「ろくでもない動きをしそうだ」くらいは見当付かない?
>>631 BASICの経験あったら気付くよ。俺はMSX-BASICだけどさ。
>>620 を見て激しく笑うまでに1分かかった_| ̄|○
//こうすればすぐわかるだろ int i; void func() { i=0; } void main( void ) { for ( i=0 ; i<10 ; i++ ) { func(); } }
どこが面白いのか全然分からん。
>>620 は、腹いてー。
こんな記号の羅列で爆笑できるなんて変な職業だぜまったく
>637 グローバルで定義された変数をカウンタとして二重に使い回そうとしてるために、 関数に入るとその変数が 0 に戻って 5 までカウントアップ、 関数を出てもその変数を元にした for 条件に「必ず」引っかかって、 関数に入ってまたその変数が 0 に戻って ・・・・とまぁ、永久ループするってことさ。
>>635-636 でも分からなければこうだ。
void main(void)
{
for(i = 0; i<10; i++) {
i = 5;
}
}
権兵衛さんが種蒔きゃカラスがつっつくってとこか。
つーか、620をパッと見て分からなかった人ってCやらずにC++から始めた人とか?
>>642-644 グローバル変数をループカウンタにするなんて事自体思いつかなかったっていうんなら
それはそれでいいんじゃないか。
昔の規格だとfor文の条件式の中で定義するiとかのスコープが、ブロックの中でなく外なんじゃないっけ。 その関係で起きる混乱と感覚としては近いかも。
近くない
寂しくなるから一言で切り捨てんなYO
しくしくしく
何にせよ
>>646 は言葉少なに切り捨てられるって事で、
次の方ドゾー。
ぬるぽ
∩_∩ おまえらも (´ー`) 暇な奴ら ( ) だなぁ ||| (_)__)
ヒマナラ マズ タタケ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>1 (_フ彡 /
>>1 ヨ スマヌ
( ;-д-) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>654
(_フ彡 /
658 :
仕様書無しさん :04/02/03 21:42
今日、ローカル変数を一つも使っていないプログラムを見た。 ヘッダの中に全部変数が宣言されていた。 理由:デバッガで追いやすいから(はあ?) 担当者に向かって「死ねよお前」といったら、場が紛糾した。
鉄筋入れずに建物の基礎を作るようなものだな。
>>659 逆じゃないか?
鉄筋だけで建物作ってるように見える
基礎部分がふにゃふにゃ、って書きたかったんだけどな(´・ω・`)
うーん。というか、柱は一本木(つなぎが無いという意味で) 床板は一枚板、屋根は一枚のキャンバスって感じ?
とりあえず、
>>658 はもうちょっと口を慎め。学生じゃないんだから。
気持ちは分かるが。
>>620 ごときが面白いと感じるなんて、普段よほどつまんねー人生送ってるんだな。
いまさら620に構うなんて
>>664 の人生には、よほどイベントが無いんだな。
666 :
仕様書無しさん :04/02/04 00:45
まあ、まともな教育受けてないやつが多いってこった。
>>658 >担当者に向かって「死ねよお前」といったら、場が紛糾した。
会議中にそんなことを言う、お前の常識を疑う。
せめて「お亡くなりになっていただければ幸いです」と言おう
668 :
仕様書無しさん :04/02/04 01:01
>>663 >>667 すみません。あまりにあまりだったもので。
しかも、今度の仕事もその方針(ローカル変数なし)でやる、といいやがったので。
とりあえずチームからは外れていただきました。
>>667 じゃあ俺も今度から『糞喰らえ』ではなく『うんこ召し上がれ』と言うことにするよ。
>>668 確認するが、
>>668 がチームから外れるんじゃなくて、
件のグローバル変数至上主義者を外すって言ってるんだよね?
糞尿垂れ流しでござ候
>>665 いかにも2chに張り付いてる奴の感想だな(プゲラ
>>668 「チームから外れていただく」のはとてもよい。
個人的には「なぜそのようなスタイルを身につけるに至ったか」がとても興味があるが、
そんなコードを書かれてはたまらんからな。
>673 単なる元Cobolerだと思う
やべ。「死ねよお前」ってここ数年の俺の口癖だ。 ちなみに日頃見させられるコードは、ここで過去何度となく話題になった #define XXXXX_INT_ZERO 0 とか、 /* 199x/xx/xx バグ No.XXXX 対応 Start */ (この間4〜500行省略) /* 199x/xx/xx バグ No.XXXX 対応 End */ とかだ。
(´-`).。oO(こんなに受けると思わなかったなぁ…
>>676 ヒット作ってのは往々にしてそういうものです。
678 :
仕様書無しさん :04/02/04 16:46
「死ねよお前」 このセリフ、俺も使うわ・・・w 前、これで会社来なくなった奴がいたときはちょっと反省して3ヶ月くらい使わなかった。
「あなたの心臓が停止しますように・・・」
>>675 やべ下のほうやってるわ
正しい方法教えてたもう
あ、「その間400〜500行」ってのがいけないってことなのか よかったよかった
バージョン管理システム入れろよという話では?
一番肝心の、「バグNo.XXXX対応」の代わりに人の名前が書いてある (ありまくる)ソースなら見たことがあります。 1年前にあの人が修正したのが分かったってどうでもいいわけだが。
Servletで、なんでもかんでもオブジェクトにしたせいで 本来単純なarrayで済むようなもんも、Objectのオーバーヘッド付きに。 そのほとんどが、グローバル変数として存在する。 んで、要求変更でユーザ数が激増したため、 サーバのCPUとメモリはパンク状態、というか 稼動後5分くらいで憤死。 しかも、各クラスが色んなとこからリファレンスされてるので 容易にarrayに戻すこともできん(staticも沢山)。
>>685 オーバーヘッドとか以前に同期化のコードを書くのが大変そうに思えるのだが。
688 :
仕様書無しさん :04/02/04 21:56
>>684 さんざん長い修正コメントを読ませた後に、「もとい」と
書いてあったときは、脱力しました
#if age printf("デバッグ******"); #endif 先輩2ちゃんねらーだった(w
>>687 同期化の考慮が全く無いコードでした。
でも、それが問題になる前にサーバが死ぬから。
>>685 が悲惨な状況にいるのは確かだが
その文章からは本人の痛さも伝わる
>>685 「配列にすれば性能が向上する」という意見が読めるあたりが問題。
static変数に問題を感じるのはまだマシだが。
似たようなので、ServletとJSPとのオブジェクトのやりとりを、
セッションに入れた巨大なStringの配列で実現していたシステムがあった。
ちなみにServletのソースはこんな感じ。JSPじゃないからな。
xPara[1200 + i] = "<TR><TD>No" + i + "</TD><TD>" + xName + "</TD></TR>";
セッションに無駄なデータを残しまくりです。JSPもServletのコードも追いづらいったらない。
「勘弁してくれ」と、COBOL→VBから流れてきたリーダーと口論になりました。
今もちゃんと動いているんだろうか?メンテしてる知り合いは修正がある度にうんざりしているようだった。
perlの人なんじゃ無かろうか。
>695 Perlerでも流石にuse CGI;とかuse HTML::Templateとかすると思う。普通なら。
>>694 >「配列にすれば性能が向上する」という意見が読めるあたりが問題。
でかい配列を作るのと、その配列をそのままオブジェクトで包んで
同じ数だけ生成すると、どっちが性能良いでしょう?
当然前者でしょ、というレベルの話です。
こういうこと? これと、 String[] array = new String[1000]; これの比較? public class DataHolder{ private int foo; private String bar; // 以下1000個分のインスタンス変数の宣言が並ぶ。 } かわんねーよ。うむ、やはり問題ありありだな。
>>698 全然違います。説明の仕方が悪かったですね。
要は、以下のような無駄にオブジェクトを生成する状況が
色んなとこに存在するっちゅーことです:
public class Test{
public static void main (String[] args){
test1();
//test2();
}
public static void test1(){
for (int ii=0;ii<10000;ii++){
String[] strs = new String[10000];
}
}
public static void test2(){
for (int ii=0;ii<1000000;ii++){
DataHolder holder = new DataHolder();
}
}
}
class DataHolder{
String[] strs = new String[100];
}
動くかどーかしらんけど、こんな感じ。
>>694 なんでリクエストじゃなくセッションなのかがわからん。
やだよ。
>>702 _
/,.ァ、\
( ノo o ) ) 空
)ヽ ◎/(. 気
(/.(・)(・)\ . 嫁
(/| x |\)
//\\
. (/ \)
やだよ。
705 :
仕様書無しさん :04/02/05 21:09
ソースのレビューにて・・・ 先輩A「おい○○(=俺)。このhogeという関数なんだけど」 俺 「hogeがどかしましたか?」 先輩A「この関数を使いすぎだぞ」 俺 「使いすぎかもしれませんが、必要なもので・・」 先輩A「おまえはバカか?(この先輩の口癖は「バカ?」)」 こんなに呼び出しまくったら、スタックが壊れるんだよ スタックが!!」←怒鳴り声 この後技術には全く関係のない「人生は・・」や、「お前の仕事に対する 態度は・・」等の説教が小2時間ほど延々と続く。そして・・ 先輩A「もういい!ここは俺がやるからもうお前は帰れ!」(この後も 小声でブツブツ文句を言う) で翌日・・修正されたそのソースを見ると、関数hogeを呼び出している 所が、FOOというものに変えられている。いやな予感がしつつ、ヘッダー を見ると #define FOO hoge ・・・・。先輩曰く、 「これで関数呼び出しは抑えられる」 だそうです・・・・。 もうイヤポ。
>>705 ヘッダは705氏を釣るためのエサで、
hogeはインライン関数に修正されている......と思いたい
スタックが壊れるってのが、どんな環境での話なのかによって 正しくも取れるし、妄想とも取れるなぁ
Win+VCからプログラム始めた俺にとっては スタックとはローカル変数値等の一時記憶領域でしかないわけで、壊れて困るような設計をするほうがダメポ って感覚なんだけど、どうなんですか?
void hoge() { char msg[64*1024]; char tempmsg[64*1024]; char filename[256]; char bak_filename[256];
710 :
仕様書無しさん :04/02/05 23:29
>>708 >スタックとはローカル変数値等の一時記憶領域でしかないわけで、
最近の若者にとっては(ry
alloca() 最強説
>>705 殴れ!
…いや待て。時間をかけて罠を張り、どうしよーもないような
恥をかかせて追い出す方がいいか。
>>705 とりあえず先輩のソースをじっくり見るのがいいかも。
反面教師として活用するべし。
あと、先輩にプリプロセッサの事をじっくり教えてあげると良いかも。
ねちねち小2時間。
こーゆー奴は人の意見を聞き入れない。 性格には上司など自分より強い立場の人間の意見しか受け容れない。
タコ部屋で、こないだ隣の同業他社チームから聞こえてきた会話 「この、SPというレジスタの値を変えるとどうなるの?」 「ええと、それはもう、スタックポインタですから、ええと、 具体的にどうとは説明できませんが、不具合が発生すると 思われます」
スタックも知らない人がアセンブラで組込系プログラム書くって無茶じゃないか?
>>715 まぁその会話の内容自体はいいんだが
その会話が行われる事がガクブルですな。
>>718 てゆうか 12bit ってのが激しく半端だ。
>>719 それは8bitの世界に囚われているからです。
8進数なら4桁になるし、べつに半端じゃありません。
と書いてみたが…無理があるな。
>>620 のコードの意味せんとするところを理解するのに、
数分を要したプログラミング歴半年の、
PG志望の漏れは、レベルとしてどれくらいですか?
そもそも、グローバル変数をカウンタに使おうなどとは、思いもよりませんでしたが。
数分ならマシな方なんでないの?
>そもそも、グローバル変数をカウンタに使おうなどとは、思いもよりませんでしたが。 そもそもこの時点で、このスレで紹介されている連中とは 一線を画しているから安心しろ。
グローバル変数マニア≒COBOLer
グローバル変数信仰を絶やす方法は無いのかなぁ…。
387 名前:仕様書無しさん [ sage ] 投稿日:2001/07/31(火) 15:21 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 先輩、int i; ってよく使うのでグローバル関数に全部変換しておきました。 \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) ∧ ∧ < ・・・ ( ⊃ ) (゚Д゚;) \____________  ̄ ̄ ̄ ̄ ̄ (つ_つ__  ̄ ̄ ̄日∇ ̄\| BIBLO |\  ̄ ======= \
727 :
仕様書無しさん :04/02/06 22:44
>>726 ワロタ。でも一応聞いとくけど・・ネタですよね?
殆どのプロジェクトで使うのだから、stdio.hに追加したらいいんじゃないか? int i, j, k, l, m n; ついでだから、externもマクロで定義すると効率的かもしれない。
やーめーてー(泣
730 :
仕様書無しさん :04/02/07 00:19
ぬるぽ
ぬるぱ
漏れも
>>708 と似たり寄ったりの認識だなぁ。
微妙に表現は間違ってる気もするけど。
>>707 「スタック 破壊」でググってもバッファーオーバーフローによるスタックフレーム
破壊ぐらいしか出てこないんですが。
ポインタかキーワードだけでもよいので教えて下さい。おながいします。
>725 Singletonパターンを教える。 ……状況が変わらないというツッコミは丁重に却下。
>>735 ドモドモ。
この辺は分かってるつもりなのですが、「関数を呼びまくってスタック破壊」
というのが良く分からないんです。
まさか、バカみたいに再帰してるわけでもないでしょうし。
やっぱり、そういう環境があるんでしょうか。
>>736 メモリの少ない組込系とか環境も色々あるよね。
関数内部で関数呼び出して、また呼び出して、さらに再帰して…とかいうのもあるかもしれないし。
>>734 ほぼ確実に(絶対とは言い切れないが)偽Singletonを憶えるんじゃないかな。多分。
正しく憶えたところで(以下略)
スタッフ破壊の方が問題が大きいと思ふ
破壊されたスタッフの抜け毛の原因はベジタリアン派遣だと言い張るオールバック社長!!! 町で署名を集めだす社長に恥ずかしさとばからしさで苛立つプログラマはついに… 次回”プログラマが派遣といっしょに輪になって踊ろう大作戦”見ないとフフフ♪
まあかの先輩がここまで考慮してスタック破壊を心配したとは思えんがな。
741 :
仕様書無しさん :04/02/07 11:53
嫌な香具師に引き継がせて退職に追い込むコードのスレはこちらですか?
>741 いえ、違います。お引き取りください。
日本語COBOLのソースを解析させられてます(⊃д`)
745 :
仕様書無しさん :04/02/07 16:34
>>728 実用的なマクロを作ってみた。
当然再帰呼び出しにも対応している。
実に便利なので是非使ってくれ。
#define DECL(z) z, stk_##z[10], sp_##z
#define ENTER(z) stk_##z[sp_##z++]=z
#define LEAVE(z) z=stk_##z[--sp_##z]
#define ALL(z) z(i),z(j),z(k),z(l),z(m),z(n)
#define DECLALL() static int ALL(DECL)
#define LEAVEALL() ALL(LEAVE)
#define ENTERALL() ALL(ENTER)
DECLALL();
void func() {
ENTERALL();
for ( i=0; i<5 ; i++ ) {
}
LEAVEALL();
}
singleton を覚えたら、多分こうなる。 int *i_singleton(void) { static int i; return &i; } void func() { int *i = i_singleton(); for ( *i=0; *i<5 ; (*i)++ ) { … } } void main( void ) { int *i = i_singleton(); for ( *i=0 ; *i<10 ; (*i)++ ) { func(); } } (((;゚Д゚)))ガクガクブルブル
>>745 再帰呼び出しできる深さはその程度でいいのか?
>>747 DECLALL();
static char dummy[65536]; /** 消すな */
これで深くならないかな?
>>747 実用上はそれくらいで十分。
>>748 何故 ENTER じゃ無くて LEAVE なの?
>>749 やるならば
#define DECL(z) z, stk_##z[10000], sp_##z
だな・・・
プリプロセッサを展開したあとのコードを
ちょっと読んでみると理解できるかも。
752 :
仕様書無しさん :04/02/07 22:33
ソースではないが、DBにこんな文字列型のデータ(内容の方ね)が 登録されているのを、最近見た。 テ"ータヘ"ース CSVで出力したらどうなるか、分かっていただけると思う。
…… for(i=0;i<8;i++){ ARY[i]=st.ary1[i]; } for(;i<8;i++){ ARY[i]=st.ary2[i]; } for(;i<8;i++){ ARY[i]=st.ary3[i]; } ……
>754 まぁあれだ。きっと単価が行数当たりの仕事だったんだよ。
ローカルでもいっしょ
なんで同じARY[i]に代入してるの?
>>754 きっと別スレッドがグローバル変数のiの値を書き換えているんだ。
G-RAMのポインタに画像を転送してるにちがいない
おい、最初のループしか回らんぞ。
ワロタ
まわる〜。ま〜わ〜る〜よ。世界はまわる。喜び哀しみくりかえ〜えぇし。 今日は別れた変数達も生まれ変わって歩きだ〜すよ。
>>759 いや、ARY[7]はiのエイリアスなんだよ
(;゚Д゚)
>>765 Ω ΩΩ な、なんだってー!!
ワロタ
768 :
仕様書無しさん :04/02/08 09:04
>>765 それだと、最初ループしか周らないじゃん
>>768 いや、iはARY[7]のエイリアスなんだよ
いいこと言う
>>765 st.ary[7]に何が入っているかが運命の分かれ道
きっと、 int *i; と宣言してあるに違いない
for (i = 0; i < 8; InterlockedIncrement(&i)) { ARY[i] = st.ary1[i]; } for (; i < 8; InterlockedIncrement(&i)) { ARY[i] = st.ary2[i]; } こうしなくてよいのでつか。
マジレスの発生を待機しています......
まあなんというか、ぐだぐだやね
>725 まあ処理系によっては、「グローバル変数を for カウンタに使えない」という言語仕様の 言語もあるけどな。でもグローバルにバッファ取るのまでは避けられないしなあ。 って考えたけど、そもそも今から始めるレベルなら、グローバルの概念さえ教えなきゃいい ような気が。(必要になるまでその辺を教えぬまま過ごす)
弊社では全社員に対してCOBOLの徹底した教育を行っておりますので、 ここで問題になっているようなことh(以下ry クマー!
「COBOLの徹底した教育」ってどんな感じなのかな… 1.変数は全部グローバル 2.変数名は連番 3.関数を極力排除 とか教えてるのかな…
企業ガイダンスとかでCOBOLという単語を聞いただけで引いてしまうのは良くないか
>>780 おお。それってとても良いアイデアにみえるぞい。
785 :
仕様書無しさん :04/02/09 10:04
786 :
自称C++厨をクビにせよう運動 :04/02/09 10:25
グゴゴゴゴゴ!!! いまこそ、プログラマ革命を起こすときだ! (亜ぼーんする愚か者には核ミサイル無量大数本分の死を!) 〜 自称C++厨の化けの皮をはがせ!運動展開中! 〜 (本当は自称C++厨なんてたいしたことがない、上辺だけなのだ! 真実を見よ!) 大半のC++厨はインチキ詐欺師の卑怯者! オブジェクト指向も知らなければデザインパターンも知らない悪い奴である。 しかも悪名高いウォータフォール信者と来た! 許せん! 今こそ正義の一撃を! 大半のC++厨は汚いコードを書いてチームをわざと混乱させメンテナンスの手間を増大させる悪魔なのだ! 大半のC++厨は自己保守的で官僚的で革新性が無く 自分のスキルの程度を誤魔化すためにわざとソースコードを読みにくくしているのだ! (こいつらはわざと読みにくくすれば他人が解読するのにに手間がかかるので 凄いと思いこまれると勘違いしている馬鹿どもなのだ) こんな卑怯者が許されるか! 蓋を開けてみればただのC言語しかできないとんでもない低脳である。 こんな悪魔のような給料泥棒なやつが金をもらっていることは絶対に許されるべきではない! 即刻減給するかクビにしてやるべきである! このような卑怯なC++厨の行為は宣戦布告と見なさなければならない行為であり 大義名分を持って即刻解雇すべきである! 自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ! 自称C++厨の化けの皮をはがせ! 正義は勝つ!悪の枢軸・自称C++プログラマをこの世から抹殺せよ! 自称C++厨をクビにするためならいかなる手段をも辞すな!!!!!!!!
今日こんなん発見したVBで、 Dim i, j, k As Integer ・・・。iとjはバリアント型じゃねーか。 VBすらろくにできないバカがいるとは・・・もう辞めたい。
( ´_ゝ`)
ワロタ
>>788 VB6からは、全部Integerになるんだよ。
えっ、まさかそれさえも知らないで辞めるの?
いいよいいよ、そんな常識も知らない人はさっさと辞めてほしいな!
>786 元ネタきぼん。 >791 それは.NETからじゃなかったか? 手元のVB6.0 SP5で一応試したが、 Dim a, b, c As Integer ってやって aのTypeName取ったらEmptyダターヨ(勿論、何も代入せずに、の話)
VBを全く知らない俺にとっては、 バリアント型のi,jをIntegerで宣言する?ってことの イレギュラーさが分かんない てか、バリアント型ってのは何でもあり型?
>>792 .NETからだと思われ。
VB6ならもろにVariantだな。初期値はEmpty。
あれだ、こういうときは
DefInt I-K
が入っている罠とか。
そもそもIntegerを使わずにLongにしないか?
>>793 ちゃうちゃう
最後の As Integerが、kにしか有効じゃないのさ
全部いんてじゃーにしたいと思って書いてるのに前の二つがなってないの
…だよね。
俺VBは100行ぐらいしか書いたことないから不安だ。
>>795 合ってる合ってる。有名な話だ。
……しばらくVBからは離れていられたので.NETのほうの話は知らなかったよ。
じゃあ、これが正解? Dim i As Integer, j As Integer, k As Integer
>796 ありがと。 >797 なんか int i;int j;int k;みたいでイヤンな感じですよね
void main() { struct HOGE *hogepo; memset((void *)&hogepo, NULL, sizeof(struct HOGE)); hogepo = malloc(sizeof(*hogepo)); … return 0; } もう、どこから突っ込んだらいいやら
間違い struct HOGE *hogepo; void main() { memset((void *)&hogepo, NULL, sizeof(struct HOGE)); hogepo = malloc(sizeof(*hogepo)); … return 0; } こうだった
コンパイルテストしながらのコーディングはダメなん?
>>800 とりあえず、「ガッ」と言っておいてやれ。
>>800 ポインタについて問い詰めてみたら?
そのソース書いた人に。
>>800 前に助っ人で入ったチームのmalloc系は全部そんな感じだった。
「システムがおかしくてメモリ確保でよく落ちるので助けて欲しい」と言われて
1ヶ月契約で入り、初日で全解決。
>>791 はバカVB厨ってことはよくわかった・・・!!
In article
>>791 , 仕様書無しさん/sage/791 wrote:
> えっ、まさかそれさえも知らないで辞めるの?
> いいよいいよ、そんな常識も知らない人はさっさと辞めてほしいな!
その言葉、そのままヴァカなあなたに返しますよ :)
っていうか、あなたですね?
今私の隣に座っている先輩は!!
VBしか^H^Hすら出来ないなんて逝ってよしですね。:-)
# VB.NETからOKなのは知ってましたが...
VBの言語仕様ごときでここまで話が弾むのか…
809 :
仕様書無しさん :04/02/10 12:09
>>804 悪意無しにバカからカネをふんだくれる仕事うらやましい
vb.netからはOKだったのか。一変数一行で宣言する癖がついてたから、知らなかった。
VB やったことないから
>>788 すら最近知った(´Д`)マズー
>>812 漏れも・・・
っていうかVBで型宣言が出来るのはじめて知りました・・・
そろそろVB覚えなきゃだめかなぁ。
でもうちVBの案件無いしなぁ。
俺も今VBやってるけど、やらされているだけです。
VB、覚えなくても、
>>788 とかでも動くから逆に怖い。
そして、
>>791 みたいなバカがいるからマジで怖い。
早く、C++とかJavaに戻りたい。。。
VBはやりたくなくてもやらなきゃいけないこともあるからな。 覚えておいて損はない。覚えることなんかあまりないけどね。
>>815 どうせすぐ覚えれるから必要になったらでいいや、というのが本音。
VBって覚える価値あるのかよ。
VCでCOM/ActiveXの開発するときは役立ったよ。 つか、その時に覚えたんだけどね。
>>817 ちゃんと読め。価値があるなんて誰がいった?
>815が言ったとでも?>815は覚えることなんてあまりないと言っている。
つまり、覚える価値とかそういう問題じゃねーんだよ。
やらされることもあるから、そんときは覚えろよとのこと。
>>791 のように影で笑われたくなければな。
>>791 のようにやってしまった!!
が、オレは
>>791 のようにVBしかできない厨房じゃないので、
まだマシ「ということにしたい」ですね :)
# VBしかできないVB厨でそんな間違いする香具師もいるのかー
VBの話題だからこそ、ここまで盛り上がっているわけだな・・・
多分JavaでもDelphiでも盛り上がると思う。 だけどFortranじゃあこうはいかないだろう。
> Dim i, j, k As Integer > ・・・。iとjはバリアント型じゃねーか。 明らかに言語の欠陥だよなぁ、これは。直感的じゃないし。 それを > VBすらろくにできないバカがいるとは・・・もう辞めたい。 とか得意気に言う奴がいるってのが俺には理解できん。VBの世界は異常。
int* p, q, r;
>>824 やっぱり出たか。
そろそろ次のネタにしようよ〜。
Dim i, j, k As Integers M$はUpdateして、この構文通せば〜 もう既にBasicモドキなんだし
ダートマスからの脱糞
>>826 Updateで対応すると、iとjをVariantとして扱ってる
プログラムが困る罠
>>824 それで、
> ・・・。qとrはint型じゃねーか。
> Cすらろくにできないバカがいるとは・・・もう辞めたい
なんて書く奴いないし。そもそもコンパイラがエラー吐くし。
そんな突っ込みするなんて、やっぱVB厨は異常。
>>828 コンパイルオプションや#pragma(VBじゃナニ?)で抑止可能にするのは
トーゼンだと思うが.............もうどーでもイイッス
バカなんじゃねーの? 他の言語やる時に、Cだとこうだからというレベルじゃねーんだよ。 もっと低次元の話だよ。 相手はVB厨なんだぜ?VBしか(すら)できない香具師なんだぞ? その唯一触れる言語でミスるのがバカだって話題だろ? 本質をよくみれないようじゃ、PGとしては5流だな。(プゲラッキョ
>>823 > > Dim i, j, k As Integer
> > ・・・。iとjはバリアント型じゃねーか。
> 明らかに言語の欠陥だよなぁ、これは。直感的じゃないし。
仕様を欠陥扱いするのはどうかと思うがな。
初めに言っておくが、俺はJavaとC++中心にやってきた人間だ。
そんな俺も別に欠陥とは思わないな。悪魔で言語の仕様だろ。
お前、絶対始めて触る言語では「〜ではこうだった」とかうるさいヤツだろ。
いるいるそういうヤツ。(使えないPGで)
> それを
> > VBすらろくにできないバカがいるとは・・・もう辞めたい。
> とか得意気に言う奴がいるってのが俺には理解できん。VBの世界は異常。
何度もいうが、俺はJavaとC++中心にやってきた人間だ。
誰がいつ得意げにいったのやら?
と煽り気味に言ってしまったが、俺は「VBやってるヤツが全員バカ」って言いたいわけじゃない。
今、俺もやらされてるしな・・・(先が思いやられるよ)
俺が言いたいのは、VBなんて初めて触った俺ごときに「指摘」されるようなミスをする
VB厨房がバカと言いたいのだ。(別にVB自体をバカにしているわけでもない。言語としての目的が違うんだし)
別に言語の仕様が特殊だろうと「正しく」触れてこそ・・・仕事だろ?
VBしかできない香具師が正しく触れないから、辞めたくなったってヤツの気持ちは良くわかるぞ。
ってことで、次の話題。
#
>>832 で書いた長文・・・なんか「蚊取」っぽくて自分でイヤになった。(ボソ
>>832 が蚊取だったら、叩かれていないと思うが。
本質をとらえた発言だろ。特に > 別に言語の仕様が特殊だろうと「正しく」触れてこそ
> やっぱVB厨は異常。
とか言ってる馬鹿もいたが、どこにVB厨房がいるのやら?
VBを仕方なくやってるPGが、あんなミス(int型のつもりが、バリアント型)をするVB厨を発見したんだろ。
文章読めないやつは、VB厨房と同じレベル
>>791 =
>>823 =
>>829 VB厨房の
>>791 が、仕返しにジサクジエンしたと思われ。
わざわざ、大好きなVBをバカにしてまで、ジサクジエンしたんだろ。プププ
とか書くと(また)大量に釣れそうだな(プププププ
837 :
仕様書無しさん :04/02/10 16:44
釣 り 師 登 場 あ げ !
はぁ? こいつも所詮は民主だな。
知らない間に賑やかになってるじゃねーか・・・。 VB厨で検索すると、6,140件もヒットするのはビックリだな。 まあ俺も、VBにはお世話になったな。 何と言っても、C、C++、Java、VB、VB.NET、Delphiしか触れないからな。 アセンブラとかCOBOLとかやってみたいな。 COBOLは、まだ案件があったりするが、俺の地方だけか? 「消える消える」って言われてたけど、以外としぶといよ。
>>838 ごめんなさい。
意味説明してください。
わかりません。
スンマッシェン。誤爆ですた。
VB厨房の話に逆戻り(w さて、どこからどう突っ込めばいいのかわからんな。 とりあえず、瞬時に3つ突っ込めることがある。 '日付スラッシュ編集, Long型の数値を YYYY/MM/DD の形の文字列に編集 str生年月日 = Left$(CStr(RS!生年月日), 4) & "/" & Mid$(CStr(RS!生年月日), 5, 2) & "/" & Right$(CStr(RS!生年月日), 2) str施行日 = Left$(CStr(RS!施行日), 4) & "/" & Mid$(CStr(RS!施行日), 5, 2) & "/" & Right$(CStr(RS!施行日), 2) str使用期限 = Left$(CStr(RS!使用期限), 4) & "/" & Mid$(CStr(RS!使用期限), 5, 2) & "/" & Right$(CStr(RS!使用期限), 2) str更新日 = Left$(CStr(RS!更新日), 4) & "/" & Mid$(CStr(RS!更新日), 5, 2) & "/" & Right$(CStr(RS!更新日), 2) str更新時間 = Left$(CStr(RS!更新時間), 2) & ":" & Mid$(CStr(RS!更新時間), 5, 2) & ":" & Right$(CStr(RS!更新時間), 2)
>>842 3つか・・・それは・・・
@日本語変数名使うな。コーディングしづらいだろ。もうアフォかと。
Aスラ編集ならFormat$使えよ。素敵ですアンタ。
BRSはレコードセットだろ?CStrにしている意味がわからん。もうブチ切れですよ。
もし、RSをわざわざCStrにしなきゃ動かないのなら、
>>788 が目撃した
「Dim RS, なんちゃら, なんちゃら As RecordSet」
で宣言していてバリアントになっている可能性が高いな。
こういうクソース書く香具師はやるんだよな。
違うかな?っていうか、VBの話に戻すな(荒れてまうがな)
>>843 とか言っている、あんたが釣られているわけだが・・・
つまらねー話題でスレをよごすな!!ごるぁ!!
>>842 ・VBを使っている
・C++ラーという一般的でない名称
・ドラゴンボールみたく「RS!!!!!!!!!!!!」とかしたほうがかっこいい
>>846 おもしろいわ。あんた。
> ・VBを使っている
ちなみにAccess VBAなんだよな「RS!」だし・・・
> ・C++ラーという一般的でない名称
シーラーにしとけばよかったかな?
> ・ドラゴンボールみたく「RS!!!!!!!!!!!!」とかしたほうがかっこいい
意義あり!!
ドラゴンボールってそんなにエクスクラメーションマークついていたか?
はつみみです :)
C++ラー → しーぷらぷららー → チンチンブラブラソーセージ
∧_∧ ⊂(´・ω・`)つ-、シーたすたすか。シーたすた・・・チキン竜田 /// /_/:::::/ ねえ。コンビニでチキン竜田買ってきてくんない。 |:::|/⊂ヽノ|:::| /」 / ̄ ̄旦 ̄ ̄ ̄/| /______/ | | | |-----------| |
シープラプラーって言いたいんじゃないかな? めんどいから、C++ラー。
>>847 RS!は事前バインディングなら問題にならないかと。
省略したことが問題になるような種類の既定のプロパティじゃないし。
レコードセットへのアクセス回数が通常の3倍になっていて遅くなってるかもね。
これくらいならFormat$を使ったほうが速いかも。
Format$の速度の比べて3回レコードセットから読み取るのとどっちが遅いか微妙だが。
ドラゴンボールなら「RS!!!?」という感じで。
>>843 フィールドの型はLongと思われ。日本語のフィールド名がかなり痛いが。
このコードはおそらくRecordSetで明示的に宣言していると思われ。思っておく。
どちらにしろCStrは明示的に書くべき。
| ぐだぐだ言ってねぇで早く買ってこいや、ゴルァ!
| ____________________
|/
ゲシ
∧_∧ ∧_∧
>>851 ( ・∀・) ∩(´Д`;)__
(入 ⌒= ̄_)) ⊃⊃ ./|
ヾヽ / ̄=/ / / |
|| ¬| ̄ ̄ ̄| | ̄ ̄ ̄|
´ | | | |
>>852 はVB厨じゃないな。
VBしかできない香具師はこんな基本的なこともわからないからな(w
>>854 へ、へい!ただいま!!(心:デブのくせに人づかいが荒いんだよ!!)
RS = レイディアント シルバーガン
>>857 同士!!
こいつのせいでセガサタンが現役だったけど、エミュ(ry
会社じゃないけど、今日友人にこんなスタイルシートを見せられた。 BODY{ font-size: 1em; } ……お前は何がしたかったんだと小一時間。 ていうかどんな表示のされ方になるんだろう……。
860 :
仕様書無しさん :04/02/10 22:43
>>859 でも、px単位でフォントサイズを固定値指定して
「これなら環境依存しないよ」と得意満面な奴より
よっぽどマシじゃない?
プログラミングをおぼえて18年、VBをやらずに すんでいることを神に感謝したくなりました(w
>861 あ、次の仕事、VB.NETでASP.NETだからよろしく。 って上役に言われたら関連スレへドゾー。
閉じタグというものが一切ないページなら見たことがある
お客さんのサイトをIIS上で設定して、「ただいま工事中」の仮トップ置いて できますた、って報告したら数分後、その上司から 「……htmlタグ閉じといてな」 え?!と思ってみたらソースの最後が「</html」 我ながらアボガドバナナと。と自爆話を晒してみる。
遅レスだが、
>>780 > まあ処理系によっては、
と処理系の話をしているのかと思えば、
>「グローバル変数を for カウンタに使えない」という言語仕様の
>言語もあるけどな。
と言語仕様の話になってたり、わけわからん。
VBはそんなに悪いものじゃない。 気をつけるところ気をつければ、使えるものがかなり素早く簡単に作れる。 それなりの基礎が出来てる奴が覚えたらかなり便利に使いこなせると思う。 (CとかJavaに慣れてるとツッコミどころは少なくないがな…) 問題は「基礎が出来ていない奴でも動かなくはない物が何とか作れてしまう」点だな。 そしてそれを繰り返した奴が「自分はデキル」と思ってしまう点。 まともなプログラマがそんな奴と組まされた日にゃストレス溜まる一方なわけよ。
>>866 しかし.NETんいなってからはC#に負けていると言う事実
VBのほうが優れているのって多次元配列のプロパティくらいでは・・・
.NETフレームワークなんかいれてらんない
>868 何も考えずにWindows Updateしている周りのマシンには 全部.NETランタイム入ってたりする罠。
なにせ変数名に単車の名前が付いてたりすると 「あー、このプロジェクトにウザいやつが入ってんだな」とか 「嬉しがりの初心者君にやらすなよ」とか 「誰だよ、この件でつっこみ入れられてニヤニヤしたい奴は」とか もーとにかく嫌になる
変数名がマ板のスレ名だったら可ですか?
変数名が「バレンタインでチョコくれた女性の名前」だったら… ママンの名前をグローバルで宣言して使いまわすことになります(涙
>>873 ダイジョブ、ママンハイッパイイルカラ
GIGABYTE
GA-8PENXP Rev2.0
GA-8IPE1000PRO2-W
GA-8IPE1000PRO2
GA-8IPE1000-L
AOPEN
AX4C MaxII
AX4SG Max
AX4SG-UL
AX4SG-N
AX4SPE
AX4SPE-UL
AX4SPE-N
AX4SP-N
MX4SGI-4DL
MX4SG-N
AX4GER-N
MX4GER
....
ママン違いだ、ゴルァ!
筐体の中ででろどろにチョコが溶けているところを想像してしまった CPUとかGPUあたりからすごく香ばしい香りがしそうだ……
AOPENチョーサイテー
ASUSがいいよ
うちはギガバイコタソだな
以前ZDNetでネタになってた、限定1台のThinkPadを思い出した。
げぇーっ、全てのチェックボックスにイベントハンドラが設定されて、 チェックをオンオフする度にDBに状態(1/0)が書き込まれてる。 しかも実行ボタンを押した後は、それを使わずに普通にチェックボックスの状態を得てるし。 作った奴は何がしたかったのかと小一時間...。 もうやだ、こんなVBプログラムの保守/拡張は...。
Real-time-sync
>>884 思いつくのは「全操作の記録」だ。dbへの書きこみは、updateでなくてinsertだろ。
途中までやってみて挫折したが、害がないから放置しているのかもしれん。
要件に直結しない機能を実装するときには、ちゃんと「なぜこの機能が存在するか」
を書いておいてくれないと、保守担当は確実に混乱する。
しないよ。
ばっさり切り捨てるだけさ。
うわぁ、全操作の記録ってやっぱりあるんだ? 前の会社を辞めたきっかけが、まさにそれ。 リアルタイム的分析システム(なぜか普通のPC・・・)に そんなもん載せられるか、ヴォケ!と漫然と要求仕様をよこした Sヨと喧嘩して速攻辞めた。 後で同期に聞いた話では、納期を3回延長させてもらったうえで 頓挫したらしい(w
>>886 いや、updateだった。
別の場所でもう一度チェックの状態を得るためのグローバルな使い方をしていた。
その同じ関数内のすぐ上の場所では、普通にフォームオブジェクトからチェックの状態を得ている。
何でだ...。
プログラムの仕様書は無い。コメントも無い。客用の汚い説明書だけある。
エラーチェックが殆ど無いので、ちょっとでもデータがミスってたらすぐエラーで停止するし。スペランカーかよ。
以前勤めていた会社で同期が書いた検索処理を行う関数名。 Hirosi() たしかに検索(探検)してたよね、彼。
川口か藤岡か・・・
morita("検索");
関数名で一瞬意識がとんだものといえば kensaku_sarch(); おまいは・・・・・・・・・・・・
syoukyo_delete(); いろいろ応用できそうだ.
>>894 sarchを検索する関数だな。わかりやすくていいじゃないか。
>>895 deleteのスペルが合ってるからダメ〜
syoukyo_derete()だろ
藻前ら揃いも揃って馬鹿だな。 syoko_asahara()だろ。
sounyuu_insart()、なんて本当にありそうだな。
関数じゃなくて競走馬の名前だけど、 ハギノユメドリームとナリタキングオーを思い出した。
main_saisho()
903 :
仕様書無しさん :04/02/16 21:24
CSexualIntercose m,f; m.Condom=True; a.InseartPenis(f);
「Search」を「Sarch」に間違える香具師もかなりバカだが、 「Year」を「Yeay」って本気で間違えるヴァカがいた。 タイプミスじゃねーよ?本気で間違えてんだべ? 中学校もいってないのかと小一時間(略
Yeah_Metcha_Holiday
>>894 作った奴の名前が健作だったりしてな。
外人さんの作ったソースをメンテしてたら、
johns_fileopen(仮名)だのjohns_matrix_1(仮名)だの
ぞろぞろ出てきて頭痛くなった。
DQNに国境なし
そんな時は
>>906 も関数名の頭にjohns_を付けるべし。
万が一バグがでてもjohnの責任に…
namespace john の替わりだと思えば、namespace boost とやってることは変わらないかもしれない。
>906 これがほんとのnamespace
namespaceはまぁjohnで良いとしよう。 しかし、matrix_1ってのはなんだ?
聖ヨハネの加護がかかった関数なのです(w
最近、IMEのカタカナ英語変換を使ってる弱気な私。 どんどん自分が堕落していく。
うぉ変換されてねえじゃん
>>915 サンキュウじゃなくて、さんきゅーだと、Thank Youに変換されてくれます。
ああ、ほんと駄目人間になっていく。
漢字を覚えないだけじゃなくて綴りも忘れていくのか…
918 :
仕様書無しさん :04/02/17 23:04
SQLを渡すと結果セットを取得してくれる共通関数があるんですが、 戻り値ないんです。
グローバルでやり取りですか…引数も無さそうな予感…
if( a < b <= c ) 37才現役プログラマ
カウンタをグローバル変数にして、シグナルハンドラの中でループの進行度を拾っているコードなら見たことがある
>916 「さんくー」ではダメなんですね? ごめんなさい戯言喰らってきまつ
テンキューでもダメね
ten queue
コメントに「チビロンンゲこそ世界最強」とありますた。 来月辞めるつもりです。
926 :
仕様書無しさん :04/02/18 02:27
正直、もうだめです。 だれか助けてください。
社長のありがたいお言葉 「今は知りたい情報などは『ツーチャンネル』で調べることが出来るが、 それが有効な情報なのかはおのおのが判断しなければならない」 用は「嘘を嘘と〜」と同じ事を言ってるんだけど、少なくともあんたは 正しい情報を入手できていないようですね。
あ、うん誤爆した… 「この会社辞めようと思った」まで同じなんだもんよ!!
933 :
仕様書無しさん :04/02/19 02:01
スペル?そんなもん覚えてるわけがw BookShelfBASICに聞きます
>933 漏れはgoo辞書
>>929 うちの社長は「チャンネルトゥ」と言うがなにか?
アンテン・ドゥ
if(b!=0){ c=a/b; }else{ c=0; }
>939 そこだけ見てもさほど嫌なコードには思えないんだが。
>>940 数学としては定義されてないから
>>939 にとって、cに値設定してしまうことが
”この会社やめようと思った”ほどだったんでそ(w
>939 まぁそのa,b,cがどういう意味の値なのかは多少興味はある
/* 200x/xx/xx delete *** *value=1; *value=2; * * / * sub loop * / *for(loop=0;loop<MAX;loop++){ ・ ・ (500行くらい中略) ・ ・ *} *** delete end */ キレイさっぱり消して差し上げますた。
コメントのネストが出来るコンパイラは便利だったよ。