関数名: ebi() 命名の理由: プログラミング中に海老が食べたくなったから・・・らしい。ヽ(`Д´)ノ
PGじゃなくてスマソ本職はNEです。と言ってもWeb等もやったりする。 ・今日の出来事 現場のイントラでちょっとしたWebサイトを立ち上げることになった。 と、いっても、エクセルのファイルにhtmlでリンク張るだけの簡単なもの。 で、俺は何故かアクセスでDB構築をしていたので、現場の同僚に 「これ頼むよ。くれぐれも絶対パスでリンク張るなよ!」と、発注。 ところが!! 全部絶対パスでリンクを張ってくれた。 これでサーバにアップして動けばいいけど、動くシロモノではなかった。 まさか、今更絶対パスと相対パスの説明をするとは思わなかった。 今日はマジで泣きそうになったYo!
5 :
仕様書無しさん :02/03/12 01:32
>>3 それが何する関数なのか、ちょっと興味がある。
跳ねる
コソコソ
8 :
仕様書無しさん :02/03/12 02:30
../../
>>1 さんに届けこの思い/kokuhaku.html
これで2ちゃんの隠しページが見られるらしい。
../../
>>8 さんに届けこの怒り/kokuhatu.html
コソコソ
11 :
仕様書無しさん :02/03/12 17:56
>5 テキストファイルに注文表を書けば勝手にネットにアクセスして天丼などを注文してくれる関数だと思われ。 そんでエビ料理のテーブル持っててエビが含まれてない料理は、一番近い味付けのエビ料理に変換して注文。
>>3 しょうもな!とは思うものの気持ちは解からぬでもない。どこかの誰かが言いました。
「プログラムとは変数名と関数名を考えるもの也」(すごくうろ覚え)
以前、関数名と変数名はヘボン式の日本語表記でというプロジェクトにおりました。 「si」じゃなくて「shi」だろうが、おい! とかいうレベルの、なさけないコードレビューが幾度もくりかえされましたとさ。 どっぴんひゃらり。
while( "( ´∀`)<無限ループモナー" ){ printf("(・∀・)イイ"); }
15 :
仕様書無しさん :02/03/14 23:34
あるページの認証のプログラム if ($id != $pass) { print "パスワードが違います。"; } つまり、IDとパスワードが一緒だったらOKなのだ。 目を疑ったね。
変数名にreebとかemamadeとかあって、意味がわからないので作者に聞いたら、 逆さに読めと言われました。 つまり、reeb => beer、emamade => edamame ってことなんです。 なんでこんな名前付けたの?って聞くとコーディング名考えるのがメンドイからっていわれました。
17 :
仕様書無しさん :02/03/14 23:43
>>16 それでやめようと思ったのか?おもっただけか?
それ書いたの俺だ。お前誰だ?
>>17 富士通沼津工場にいた坂口さんならビンゴ!
たぶん違うだろうけど...
>>15 IDとパスワードが異なっていれば
"パスワードが違います"って表示されるだけで
後の処理はまったく同じなのですね(w
20 :
仕様書無しさん :02/03/14 23:52
DBを使っているシステムなんだが、フィールドを一つあとから 増やさなくてはいけなくなったのね。 さて、ここで、問題です。皆さんならどうしますか? 俺が見たコードによると一つのフィールドにカンマ区切りで データを2つ入れてるのね。 目を疑ったね。
21 :
仕様書無しさん :02/03/14 23:53
22 :
仕様書無しさん :02/03/14 23:57
>>19 あ、ゴメン、そーじゃないです。
exit;
してたと思います。
ボクが、目を疑ったのは、IDとPASSが同じだったらっていう部分。
何のための認証だよ。と。
思ったわけ。
23 :
仕様書無しさん :02/03/14 23:58
>>13 > 「si」じゃなくて「shi」だろうが、おい!
うちはどっちにするか決めてなかったので、両方が混在して
見にくいったらもう。次回新規プロジェクトを立ち上げるときは
絶対どちらにするか決めておこうと思った YO!
siだな。
>>20 そういえば
SELECT 〜 WHERE
TO_NUMBER(SUBSTR(hoge, 1, 5)) = 0 AND
TO_NUMBER(SUBSTR(hoge, -5)) > 0;
(hoge は VARCHAR2(10))
なんてのを見た。ついさっき。
26 :
仕様書無しさん :02/03/15 12:25
>>3 void UwaWrite();
上書きの「上」を意味する英単語がとっさに出てこなかったため、
こうなってしまったまま1996年から業務用ライブラリに組み込まれて
未だに使われている データ上書き用関数名
>15 あれ?$がついてるからPerl? perlの文字比較ってeqとかneだったような....
>>25 大丈夫だVARCHAR2(11)ではないんで
>>20 とは違うものだろう(w
29 :
仕様書無しさん :02/03/15 14:14
「んなこたない」がどこにかかってるのか気になる
31 :
仕様書無しさん :02/03/15 14:38
>>27 >perlの文字比較ってeqとかneだったような....
んなこたないよ
== != <= <=> => < > いずれも評価式として存在している。
32 :
仕様書無しさん :02/03/15 14:40
しかも、PerlはCとちがい、文字列だろうが数値だろうが、 eqでも==でもきちんと評価する。
文字比較が==などでも出来ることは知ってますけど お約束としての話です。
34 :
仕様書無しさん :02/03/15 14:56
>>33 そんな約束、いつラリーウォールが作った?
ソースきぼん。
Perl5 のパワフルテクニックの43ページ。
>35 正確にはインプレスのPerl5パワフルテクニック大全集。 それ以前に数値演算子で文字列比較が出来る以上 文字列比較はいらないだろ。 存在する以上区別するのがお約束だと思ってたんだけどな。
37 :
仕様書無しさん :02/03/15 15:14
>>35 その本の著者にはLarry WallもTom ChristensenもRandal L Schwartzの名前も見えないようだけど、
正式なコメントなの?
こうやった方がいい、というのはあるけど、こうやらなければならない、というのがないのが
Perlという言語だ、とLarryは言っているワケなんだけど。
>37 それは勉強になりました。
39 :
仕様書無しさん :02/03/15 16:14
わけわからんなぁ。
>>27 は「文字列比較は eq を使うべき」って言ってんじゃないの?
なのになんで
> それ以前に数値演算子で文字列比較が出来る以上
> 文字列比較はいらないだろ
って発言が出てくるの?
文字列は eq、数値は ==。そんなの当然じゃん。
$a="1";
$b="1.0";
if ( $a == $b ){ print "== OK\n"; }
if ( $a eq $b ){ print "eq OK\n"; }
>39 もし数値演算と文字列演算子を区別せずに 文字列比較を数値演算子で行うというなら 文字列演算子はいらないだろ? ということです。 言葉足らずで申し訳ありません。
41 :
っていうかすぐ辞めたんだけどさ :02/03/15 18:26
VBでの話。 サブルーチン、ファンクションの宣言で private、publicの宣言皆無。 引数すべて参照型。 for文書くのが面倒だったのか コピペで済ますヤツ。 1関数内に3000STEPこえるコード書くヤツ。 これを書いてたヤツらってのが 全員、経験年数10年オーバーしてるヤツがほとんどだってんだから 今までどんなコード書いてたのやら。 今までで最悪の現場だったよ。
全ての関数のアタマに On Error Resume Next 上司(32歳SE)がやってた。 去年いた会社。
43 :
仕様書無しさん :02/03/15 19:10
>>39 文字列を==でみれば1と1.0が違うって事が、コーディング以前にわかっていなければ
無意味な話だって気が付いてて重箱の隅っこの方ちまちまつつくのか。
君が「文字列は eq、数値は ==。そんなの当然じゃん。」て書いたときに得る
快感のためにこういう話しているんじゃない。
if ($id != $pass) {
print "パスワードが違います。";
}
この処理が、処理としては有効で、有効である以上、
あえてneに修整することを強制する必要はない、って話をしてるだけで、
数値についていつ誰が話をしたか?
44 :
仕様書無しさん :02/03/15 19:12
Perlでは、文字列を==で比較したときには文字コードを比較すると Larryは明言している。 パスワードデータと入力された文字の文字コードを比較することで 同一性を検証してはいけない理由を、ちょっと聞かせておくれよ。
パスワードってのは、1でも1.0でも、どっちでも有効なんですか?
>>39 さんのところでは(w
それって、何も入力されてなくても認証されるよね。 それでも不正アクセスとかで違法になるのかな?
>>46 exit;書き忘れたってさ。ここに書くときにね。
>>47 いや、ユーザーがブラウザ上で何も入力せずに、okボタンを押して、
変数の中身が両方ともカラでも、イケそうな気がするって意味どす。
50 :
名無しさん@お腹いっぱい。 :02/03/15 20:32
テストサーバーのユーザー名とパスワードが商品名であったこと。 仕様どおり動きませんしよく落ちます。 以上2つをヒントにして商品名を当ててください。
2ちゃんねる
>>45 おいおいビックリだな。文字列比較は eq でやれよって言ったオレが
叩かれてるよ。お前はタワケか?
>>43 > この処理が、処理としては有効で、
バグはバグ。$id が 000123、$pass が 123 の場合に通しちゃうのが
有効なのか。
お前がテスタだったとして、このバグに気づいたら「処理としては有効」
つって見逃すのか? すげープロ意識だな。
53 :
仕様書無しさん :02/03/15 22:23
int h1, hl, c1, cl; 勘弁してくれ...
54 :
仕様書無しさん :02/03/15 22:31
>>53 ローカル変数ならそれでもいいだろ
説明不十分自己満足、勘弁してくれ
昔居たゲーム会社ですが palette pallete palete とたくさんのパレット管理の変数がいますた。
56 :
仕様書無しさん :02/03/15 22:40
>>54 すまん。
変数名の違いが「1」と「l」しかないって
分かりづらくないか?
と言いたかった。
>>54 ローカルでもやだなぁ、1とlの区別つきにくいじゃん。
ってか、変数名なんぞで手をぬくなよ。
勘弁してくれってのはどっちかっつうと
>>54 だな。
正直、
>>54 と一緒に仕事したくないと思った・・。
自分でも考えるの面倒でやっちゃうけど、 hoge1 hoge2 hoge3 hoge4... みたいのも混乱する。 かえって分かりやすい場合もあるけど。
勘弁してもらわなくてもいいよ。 職場が一緒にならないことをはげしくキボンヌ。
63 :
仕様書無しさん :02/03/15 23:20
なんか自作自演連発な気がするんだが
>>63 さてここで問題です。
何番と何番が自作自演でしょうか?
ん? 64 != 65だが
70 :
仕様書無しさん :02/03/16 01:17
前任者が半角スペース×3でインデントしてるのは私に対する嫌がらせですか?
IBMのコンパイラのIDEがそんな感じの嫌がらせ設定だった気がする。
72 :
仕様書無しさん :02/03/16 01:30
>>70 それ、微妙だな。それは、どのあたりが嫌がらせ?
とあるC++本では、
半角スペース×3でやってたものもあるし、半角スペース×4の本もある。
半角スペース×2の本もあった(C++本ではないが)。
それから、タブでやる人もいるし。
漏れはTAB派。 ええ、ええ、異端児ですよ。 慣れると便利なんだけどな。
74 :
仕様書無しさん :02/03/16 01:42
漏れもTAB派
75 :
仕様書無しさん :02/03/16 01:45
ふつーはタブだが、コボラーとかだと半角スペースだったりするな
76 :
仕様書無しさん :02/03/16 02:08
8タブの人って居る?
77 :
仕様書無しさん :02/03/16 02:14
タブだろうタブ!4タブ。これ最強。
78 :
名無しさん@お腹いっぱい。 :02/03/16 02:36
とあるそふとでリストボックスで1を選択しSubmitをおしてPOSTする。 次のページでそのValueを確認すると2になっていたとき。 そんなぁーーーーーー ヒントは携帯のコンテンツだよ。
79 :
仕様書無しさん :02/03/16 02:48
2タブだと、上と下でどことどこが対応してるのかよくわかんね。
3TAB派はいないのか?
81 :
仕様書無しさん :02/03/16 03:13
俺も4タブ。8タブは下げすぎだと思われ
java標準8タブ
すまん、俺も4タブだ。
>>72 その会社のコーディング規約が4スペースなあたりが嫌がらせ
いちいち直した俺も真面目すぎかもしれんが
趣味では4tab派です
ウニ系はどうなの? インデントなんてエディタの仕事だと思われ。
7たぶ
みみたぶ♪
それはタブー♪
漏れデブ♪
死ねデブ♪
91 :
仕様書無しさん :02/03/16 06:28
>>85 そのエディタが入れるインデントの話をしとるんじゃ!
ちなみに俺は4Tab派
Cは4tab。アセンブラは8tab。
>>92 あ〜、おれもそうだな。
ここ数年アセンブラさわってないけど。
タブとインデントは違うだろ。
>>94 はぁ?2タブで1インデントとしてるとか?
タブ8インデント4
そもそもプロポーショナルフォントで編集してるから タブの幅は文字数に換算できない
見づらくないか?
>>98 いや普通だよ。逆に固定ピッチ見ると間延びして見える。
100 :
仕様書無しさん :02/03/16 17:42
101 :
仕様書無しさん :02/03/16 17:52
Pフォントをメインにしているやつ、たま〜〜〜〜〜〜にいるよな。 たま〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜に。
多かろうが少なかろうが、自分が見やすければいいじゃん。 他人に迷惑かけないっしょ。 人にも同じこと強要してたらうざいけど。
103 :
仕様書無しさん :02/03/16 18:07
>>102 そんなソースをあとでお守りさせられる奴の立場は?
>>103 つーか、普通にタブでインデントかけてるだけでしょ?
使ってるエディタで見た目が違う以上の違いないじゃん。
プロポーショナルなら普通、行頭以外の部分を縦にそろえるようなことしないし。
105 :
仕様書無しさん :02/03/16 18:11
Pフォントで書いているやつはAA職人と思われ。
106 :
仕様書無しさん :02/03/16 19:58
>>97 マジですか?
Pフォントでコーディングするやつが実在するとは。
エディタはもちろんWordだよね。
108 :
仕様書無しさん :02/03/16 21:39
インデントがどうのとかいうのはツールにかけて変換すればいいだけの話なので 自分の好き勝手にすればよろしい
フォントの話が出たけど、プライベートだと Osaka等幅10ptでコーディングしてる私は変ですか?(Winです) 仕事ではTerminal-10pt。
等幅なら特に変とは思わん
111 :
仕様書無しさん :02/03/16 22:02
みんな、エディタは横何文字に設定してる。 今時、横80字って俺は年寄りか?
112 :
仕様書無しさん :02/03/16 22:11
>>111 イヤ、俺もそうだよ。
むやみに長くすると後で見たとき判らなくなる。
一関数100行以内っていうのも、もう古いか?
113 :
仕様書無しさん :02/03/16 22:13
>>108 おまえ一人での開発しか経験がねーのか?多人数での開発なら統一するのが当然だろ?
それから変換ツールは大抵バグ(変換ミス)を含んでるから使うな。例えばC言語の場合、
「#IFDEF」あたりをちゃんと考慮しないと完全な変換は不可能だし、ということはincludeあたり
も全て考慮しないとならない。そのためには実際コンパイルする場合とほとんど同じような
条件指定が必要になってくる。そんな変換ツールは見たこともなければ使いたくもない。
>>111-112 普通じゃないですか?私もそうです。
ただ、一関数100行以内っていうのは、
エディタの表示とはまた別の問題と思うけど。
115 :
おひさまのよう。 :02/03/16 23:31
スレッドの本来の形に戻って・・・、 int theInt; char theChar; BOOL theBOOL; 他の変数も、全部 the と先頭に付けていた。 (theA とか theB とか) 1時間ぐらい笑えた(w もちろん全部自分が修正した(汗
>>115 なんでtheなんだろう?
同型の二つ目の変数の命名はどうなってるの?
それってスコープによるプレフィックスじゃないの?
118 :
おひさまのよう。 :02/03/17 00:03
>116 何で the なのかは・・・、謎(汗 プログラム初心者だったのかもしれぬ。 <作った人 オレより10は年上の人なんだけどねー・・・。 ちなみに同型変数の場合は、 char theChar[]; char theBuf[]; char theIdx[]; みたいなかんじでした(w フツーなら、 char cIdx; int iIdx; BOOL bIdx; なんだろうけどねぇ。
変数名に手をぬくひと嫌い
the〜って変数名、Cマガのローテク〜で見た 記憶があるがどうか。
121 :
仕様書無しさん :02/03/17 00:17
>>115 おもしろぃぃぃぃ
そんなソース見たら激しく笑う
theよりも時代遅れのハンガリアンで記述する118のほうが未来が暗い
>全部自分が修正した 単なる残業代稼ぎか? よっぽど基本給が少ないとみえる(w
124 :
仕様書無しさん :02/03/17 00:27
アタシが書いた設計書のPGをした40過ぎの課長。 ソースを見たら、詳細設計すべてコメントで書かれてあった。 ソースの8割がコメント&デバッグ文。 Vector・Hash・StringのNullチェックはないし、 こんな奴が上司かと思うと転職考えないわけない。
つうか118よ。なんで、そういうことをやったか質問したんか? 謎とかぬかしている前に本人に質問もできない自閉症みたいなおまえの ほうこそどうかしているぞ。
>>124 んー、詳細設計のドキュメント書くひまない場合、
関数のガラだけつくって処理の流れをコメントで記述しておいて
あとからコード書き込んでくってスタイルもあるのよね。
でもnullチェックとか無しってのは・・・痛いなぁ。
それで課長ってのはなぁ、いい会社ですなぁ。
ウチの会社じゃtheって使ってますが・・・?
128 :
おひさまのよう。 :02/03/17 01:39
>>122 ハンガリアン ってなんすか?(汗
>>123 見にくくて改修できそーになかったので
>>125 自閉症患者に更に自閉症を進行させるようなコト言わないでください
129 :
仕様書無しさん :02/03/17 01:44
130 :
仕様書無しさん :02/03/17 01:58
131 :
仕様書無しさん :02/03/17 02:01
研修を終え現場に配属された新人が WORDを使ってコーディングをしていた… 新人研修でいったい何を教えているのか
ハンガリアンの上に、indexをidxとかけちるヤツ
>>122 MSが採用しているという命名規約。
変数名に型をあらわす接頭語やなんぞを付加することで、
簡潔で有益な変数名になるというもの。
ただし、もともとわけのわからない命名規約を使用して
いるふざけた会社以外では、簡潔すぎてわけのわからな
い変数名になってしまうという評価が下されている。
最近は変数名には、長くなっても内容が明白にわかるよ
うな名前を付けるのが一般的になってるから、ハンガリ
アン記法を採用するメリットはあまりないような気がす
る。が、118の会社では採用するメリットあるな。
最近はMSでもハンガリアンは追放されているよ。 たぶん戦うプログラマな人が率先して叩いたから 最近のMSのサンプルコードでは見当たらないとも聞くが。
>indexをidxとかけちる これもなー。変な省略すると放送禁止用語になる場合もあるし たとえば count とかも変な省略するとマ*コって意味になる(w
136 :
仕様書無しさん :02/03/17 02:13
manualを略してmanみたいなもんだな
つーか、OOPL使っててハンガリアン使う意味あるのかよ?
不毛なのはわかってるが、いまだにハンガリアンを信仰してる人にその理由をじっくり聞いてみたい。
>118の会社では採用するメリットあるな どうだろうね。変数や関数の命名規則を採用するメリットは確かに大きいけど ハンガリアンのような型情報を重視するやつでなく、 スコープ(通用範囲)を明確にするやつを検討したほうがいいような。 グローバルならgではじめるとか、 ローカルならtheではじめる(笑)とか、 メンバならmとか
>>139 間に受けるやついるから、変なこと言うのやめてくれ。
グローバルならtheで始まる というところもあるらしいけどな
Javaだとメンバ変数の頭に_をつけるというのが一部で信仰されてます。 this.を省略し、かつ、ローカル変数(主に引数)との重複ミスを防ぐ という目的でつかわれるですね。 それはどうなんでしょ?
>>140 /* あいだに受けるって何 */
いや別にいいんじゃない?そんなに変だとも思わないけど。
つーか、設計が悪いとスコープが1画面に入りきってない
コードを書くやつがでてくるのでリファクタリングしろよ)
ハンガリアンとか、
>>144 みたいのがでてくるのかな?
144ので思い出したけど メンバ変数を使うときは「this.メンバ変数」と書け という命名規則を採用している会社もあるらしいな。 げげっと思ったが。それに比べれば、頭に_をつける ほうが、まだマシだと思われ
getter とか setter はどうするの? 名前がかぶるのが当たり前だと思うんだけど
>>148 私は、thisもしくは_等のプリフィクスをつけるってことには賛成です。
設計云々といいますが、仮に数十ラインくらいのメソッドでも、
メンバなのかローカルなのかはぱっと見ですぐに判別できたほうがいい。
つけないほうがいいという理由がよくわかんないです。
>>146 設計がどうのこうのといっても、メンバ変数のスコープってのはなぁ・・・
クラスを1画面に収めろということは普通無理な場合が多いよ。
リファクタリングって言ってみたかっただけ?
_とかのプリフィクス、もしくはthis.が必須って規約あると、
実際少しはメンテ楽ですね。
151 :
仕様書無しさん :02/03/17 05:16
typedef int Char; typedef char Int; もうね、アフォかと
152 :
仕様書無しさん :02/03/17 05:30
Vector vct = new Vector (0); 氏んでいいよ。
153 :
仕様書無しさん :02/03/17 05:34
thisとプレフィクスを一緒にするなよ…
154 :
仕様書無しさん :02/03/17 09:20
遅レスで恐縮だが、変数名の頭に「the」を付けるのはK仲川がやってた。
>>155 違うよん。PowerPlantというクラスライブラリでの命名規則が元祖よん。
>>156 「やってた」と書いてあるだけで「元祖」とは言ってないと思うが、どうよ?
頭に_をついてるのはコンパイラの予約語だぼけ。 とっととやめとけ、そんなやつのいる会社。
>>158 それはC/C++じゃないの?
一連の話はJavaなはずだが、Javaでも _ は駄目なんすか? (Javaよく知らないので)
160 :
仕様書無しさん :02/03/17 17:13
「頭に _ をついている」 すげぇニホンゴ
ニホンゴムツカシイデフ
>>158 「予約語」の意味を分かって使ってるか?
ケツに_を付けるべし。
164 :
仕様書無しさん :02/03/17 20:46
>> 158 C++で、頭に_を付けちゃいかんのはグローバルスコープとnamespace stdだけだ と思ったが? クラスのメンバはクラスのスコープ内にあるから問題ないのでは?
165 :
仕様書無しさん :02/03/17 20:52
正直、Javaの話題だとはすらんかった。 すまぬ。
スレにCとJavaの話題が混在してるからね。
>>144 を見てJavaの話だと思わん奴もすごいが
170 :
仕様書無しさん :02/03/19 21:40
DB設計で部門テーブルと個人テーブルを 部門コードで関連を持たせているのですが ・部門テーブル(部門コード ABC2) ・個人テーブル(個人コード 123456、部門コード ABC) 部門テーブルの部門コードのケツにそのレコードの修正回数を付加するという 暴挙に出たんですが、こういうのって実際あるんですか? 部門テーブルの部門コード上3桁と 個人テーブルの部門コード上とで関連を持たせています。 これって最悪のシナリオが待ち構えているような気がするんですが・・・
お前のとこの糞システム程度の規模では別に暴挙でもなんでもないが?
>部門テーブルの部門コードのケツにそのレコードの修正回数を付加するという よく見てワラタ。 やってもよいし、部分文字列でキーを作っていれば影響はすくない。 しかも、おもろい。 そして、お前のとこの糞システム程度では、本来よりチョビット無駄がでるだけで 別に暴挙でもなんでもないだろう。 だがしかし、きっとお前は仕様の把握ミスをしてる。
173 :
仕様書無しさん :02/03/19 21:57
>>170 です。
>>172 糞業務をシステムするという話しなんで・・・
うちの会社って一つの部門に5回以上変更が入った場合
部門名を変えるという変な慣例があるんです。
>173 で?部門名を変えるのにシステム的に何か問題でも?(w 確かに変な会社と思うが(w
175 :
仕様書無しさん :02/03/19 22:08
>>174 これを基盤に勤怠管理システムや旅費申請システム、
メール、ワークフローと発展させていく計画なので・・・
このレベルでこんな設計されたんじゃこの先
どうなるかわからん。
設計者はプライドが高くて聞く耳もたず。
176 :
仕様書無しさん :02/03/19 22:23
>>175 理論上おかしいです。
テーブルの項目というものはそれだけでただひとつの意味を持たせる必要があります。
だからやるのならこうなります。
┌──────┐
│部門コード │
├──────┤
│部門名 │
│部門修正回数│
└──────┘
こうしておけばその5回の修正で部門名を変えるときも困りません。
そもそも
>部門テーブルの部門コード上3桁と
>個人テーブルの部門コード上とで関連を持たせています。
このリレーションですとインデックスが利用されず、検索のボトルネックになります。
ですのでやってはだめです。
絶対だめ。
>175 ああ、>170をちゃんと理解していなかった(誤解していた)部分もあったけど、 >172の言うとおり仕様を完全に把握していないような気もする。 だからと言って、そのシステム設計がクソであることは否定しない(w
178 :
仕様書無しさん :02/03/19 22:30
175です。
>>176 それは重々承知なんですが設計者が
なぜする必要があるのかと会議で喧嘩ごしなのです。
説明してもだめ。聞く耳もたず。
年下の俺が指摘したのでつっぱっているのかも。
>>178 わかってたのなら余計なおせっかいでした。スマソ。
論より証拠。1000件ぐらいのテストデータで単純な結合演算の実測結果をたたきつけてやりましょう。
1000件で差が出なかったら10000件ぐらいで。
>>177 あの文章のどの変で仕様を完全に把握していないような気がするのか教えてくれ。
180 :
仕様書無しさん :02/03/19 22:47
そんなクソ会社、DB更新するほど仕事ねえから平気だよ。 言われたとおり作れ。 そしていつかお前が設計するときには「そんなバカはするな」。
>>181 ・設計者が嫌いなとき
・設計者の聞き分けが悪いとき
・どうでもいいシステムのとき
・終わりが決まっているとき
言われたとおり作ったときはあるな。
冗長&プロセス指向の塊のすばらしいDBデシタ。
183 :
仕様書無しさん :02/03/19 23:48
170の職場のは、仕様をガッチガチに固めた後で、DBレイアウトの 修正が効かない状態で無理やりヤリクリした結果じゃないの?
段階的に納品とかしててさ、 客「もうDBレイアウト変更はありませんね」 SE「はい、もうないです」 とかやりとりしてるんだよ、きっと。 レイアウト買えようと思っても、びびって言い出せないだけ。
VBのプログラムにて・・・ Dim strKensu As String Dim intCnt As Integer Dim intKensu As Integer ・ ・ ・ For intCnt = 1 To strKensu intKensu = intKensu + 1 Next icnt strKensuはIniファイルから取得している。 お願いだ・・・こんな糞ソースを量産しないでくれ、先輩!!! 件数なんだから、数万件入る可能性もあるだろ?と・・・ むしろもう一つの方で Dim lngKensu As Long で取ってるのに・・・ lngKensu = CInt(strKensu) ってどういうことよ? なぁ・・・Longで取っててわざわざIntegerに制限するのか? オーバーフローしても不思議じゃねぇんだけど? こんなソース残して、入院しないでくれ・・・ でも、こんなソースでも今まで動いてたんですね・・・ 棚卸で件数が多くなってようやく発生したんですか・・・ 今日はとってもどうでも良くなりました・・・あぁ・・・
187 :
仕様書無しさん :02/03/20 12:42
とりあえず動けばいいよ。動けば。 あほらし。
それはソースコード見た程度で会社を辞めたくなったことはないという意味か… 悟りの境地ですな
189 :
現実逃避派 :02/03/20 15:12
>>186 自社のソースは見ないに限る。
なぜって?
士気に関るから。(W
190 :
仕様書無しさん :02/03/20 15:21
>>186 変数の先頭に
intとかstrとか、vctとかつけるのは、
VB厨ってことだったのか・・・
>189 『バグ修正』で作った当人が居ないと、同じプロジェクトの人に回ってくるでしょ・・・ それで、初めてソースを見たんですよ・・・脱力しました。 >191 いや、よく知らないけど、変数の型を知るために付けといたほうが良いとは思う。 一応、『マイクロソフト推奨プリフィクス』とか資料には書いてあるが、詳しくは分かりません。
ついてたから、バグの発見が早かったんでないの? OOでなんか作ってるんでない限り、ハンガリアンやその派生はべつにわるくないとおもうよ。 このバグ治すときに型だけ治したりしてたら、あとでもっとくそみそに言われるだろうがね。
>186 String型でIniファイルから取得か。 最初から32ビット数値で受け取るよう、 GetPrivateProfileInt()に書き換えちまえ。
きっと後から倍精度型とかに仕様変更されることを見越してのコードに違いない。 きっとそうだ。
レコード件数に小数がはいってくる糞な仕様か。 おれならすぐ逃げる。
レコードの更新回数を小数部にいれとくんだよ、きっと。 5回更新すると、そいつの名前が変るの。 会社の決まりで。
>186 きっとそういった矛盾を修正する前に入院してしまったんでしょう… きっと(w
>194 モジュールの中には、数値で取得する関数もあるんですけどね。 >198 もうその矛盾した状態でシステムが4ヶ月は動いてましたよ。 ある意味、尊敬しますよ。 こんな書き方で動かしてたって・・・ 凄いわ・・・ハァ
いまら!200げっとぉぉぉなのれす!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄(´´ ∋oノハヽo∈ ) (´⌒(´ ⊂(´D`⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ ・・・・・・・・・・・・・・・・・・  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ∋oノハヽo∈ (´;; ⊂(´D`⊂⌒`つ (´⌒(´ ・・・・・・・そういえば・・・・・・  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∋oノハヽo∈ ⊂(´D`⊂⌒`つ; (´⌒(´ マ板で200はキリ番じゃなかったのれす・・・  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ∋oノハヽo∈ (;´D`; )⌒ヽ U‐U^(,,⊃'〜... (´⌒;;
>>200 256でお待ちいたしております。がんばってね。
FORTRAN で整数型の配列に文字列を入れるコーディング 変数一つが4文字分 文字列のコピーをするサブルーチンを利用して1文字を取り出す こんな感じ SUBROUTINE COPY(A, I, B, J, N) CHARACTER*(*) A, B INTEGER I,J,K, N DO 100 K = 1, N B(J+K-1:J+K-1)=A(I+K-1:I+K-1) 100 CONTINUE RETURN END 呼び出し側 DIMENSION I(24) CALL (I, 1, K, 4, 1) ←4という数字に注目 エンディアンが違うマシンに移植するとあぼーん
なぜこんなことをしているかというと、 サブルーチンの引数の型をフラグで判別する仕様になっている為。 誰だ、こんなコーディングをしたのは!
他にも、'i 'と 'l' ・'O' と '0' のタイプミスや、2000年問題(現在進行形で発生)や 文字列の長さが1足りない、変数初期化無しなど、問題山積み 既存のバイナリには、各種デバッグオプションがやたらつけてコンパイルされている。
205 :
仕様書無しさん :02/03/21 19:14
>>202 よく知らんのだが、FORTRANってアプリ系?
汎用系なら、エンディアンが違うマシンに・・・なんてのは
想定されてないほうが普通のような
ガイシュツかも知れないが、 if ((x == 1)|(y == 1)) { 論理演算とビット演算は違うよって教えたら「でも動いてるし」だって。 ちなみにみかか系。
>>206 '|' なら、あんまし問題ないかも。'&' は、この場合なら良いけど、
イヤーンなケースが多々ありそう。
どっかのマクロが IS_ERROR(errcode) (errcode) とかやってて if (IS_ERROR(err) | (y == 1)) { みたいなのキボンヌ。 おまいらの電話料金の計算なんて、この程度のプログラムで やってるわけだ。
| じゃだめだな & だ。
そういや モナー板(だったか?)で 引数が90個のソースに出会った...と 言うすげぇ書き込みを見た。 このスレにぴったりだと思った(w
>208 スレの趣旨とはズレるけど、金融系とかで DBのデータ型number(22,5)くらいのデータを、 平気な顔してC言語のdouble型だけで計算してるところもあったな(w まぁ、世の中のプログラムなんてそんなもんだ。 医療系はどうかは知らないけど。
212 :
仕様書無しさん :02/03/21 22:36
VBでローカル変数0で、グローバル変数228個で、構造体0で、 変数名はa1,a2,〜a228のやつだったら知ってるが。 しかもa3(20000)とかやってた
213 :
仕様書無しさん :02/03/21 22:43
>>212 そのソースは痛いな。見る気が失せる!
それを作った奴も変数把握してるか疑問だ。
たぶん一太郎で書いた変数表があるから大丈夫だ。 罫線できちっと囲んだやつがな。
自分の限界に挑戦してたんじゃないの
>211 DBがオーバーフローするぐらいの貯金が欲しいですが(w
>>212 VBのグローバル変数が千個以上あるやつ見たことあるぞ。
で、iとかがグローバル宣言してあったので、
プライベート変数宣言を忘れた場合は謎の動作をしたな〜。
あと、測定器が吐くテキストファイルで、
・9999以外は測定値、
・9999測定不可
ってのがあったが、測定不可なのに数値つかうな面倒だぞ、ゴルァ!
多分、Cobolerが設計したんだろうな・・・・・
>>217 計測器は寿命が長いからそんな機械でも現役でいたりするんだよな。
でも数値以外を返すと受け側が面倒な気もするが。
でもマジックナンバーってMSのヘッダーにもあるしな。
>>218 テキストファイルなんだから、sokuteidekinainnja,gruxa!!とか出力してればよろし。
221 :
仕様書無しさん :02/03/22 00:35
register int ri; int *p = &ri; 酷かった・・・ほんと。
それだけじゃひどいとは言い切れないな
registerヒントが無視されるだけだ。
224 :
仕様書無しさん :02/03/22 02:20
まあ、実力も知識もないくせに一丁前に愚痴だけ言えるやつもいるってことで
>>222-223
ひどいも何もまともなコンパイラならコンパイラエラーになるはずだが
ナラネエヨ
register変数のアドレスを取ることはできないと仕様書に明記されていますが
228 :
仕様書無しさん :02/03/22 13:28
いつの仕様書よ?
229 :
仕様書無しさん :02/03/22 13:28
>>206 JAVAだったら結果はいっしょ。
boolean | boolean っていう構文ありだyo!
|と||の違いだけど、||はショートカットで、
左辺の結果によって右辺を実行しない。
(a == 1) | (method(parameter)) みたいな場合もあるので、
||で普段書いているとメンテナンスの時に右辺のメソッドが
実行されないようなバグを生んだりすることがある。
みかか系なら安全性重視じゃないの?
ミカカ系は納期重視・開発規約重視です。
if((name == null)|(name.length() == 0)){ というコードを書いた本人いわく 『Javaのバグっすかねぇ?』
安全性から言ったら229の||だとmethodが実行されないっていうコードはどうかと。
>>228 227じゃないけど、K&R第2版二回照るよ
register宣言された変数に&を適用するヤツもどーかと思うけどねぇ。
235 :
仕様書無しさん :02/03/23 00:19
俺去年入ったばかりの新人なんだけど 今やってる設計用のプログラムが mainが5000行。 さらにほとんどの関数が3000行を軽く超える。 マクロを異常に多用。 作成者逃亡→アメリカへ。 どうすりゃいいんだよ…。毎日鬱だ氏脳…。
>>236 Σ(゚д゚lll)ガーン
な、何故にカナダ
C++ならregister宣言された変数でもアドレスを取れる。
240 :
仕様書無しさん :02/03/23 03:04
235は、遥かカナダに逃亡しました。
>>235 新人をそこまで放置したのが問題では?
細かいレビューしないの?
スマソ、間違った。
>>235 が新人なわけね。ご愁傷様です。
どんなだか見せて。
インデントとか凄そうだね。
>>243 >>244 そうしたいけど設計にプログラムを使ってるだけなんで
上司も同僚もそんなことは必要ないと考えてる。
ひたすら問題が出たらお前は機能追加しろと。
>>247 インデントは割とまとも
なぜなら作成者のソースをほかの社員はコピペしてるだけなんで
だから中身について聞いても答えられる人もいない。
毎日辞めようかと考える。
でもまだ一年目。
どうしたらいいのか…。
>248 とりあえずmainをやっつけろ。 それでライブラリとか適正に作成してチカラを見せ付けてやれ。 その後で、他のコピペ元のソースを吊るし上げて 「こんなソースのままでは保守に金がかかって仕方ない」とアピールすべし。 しかし、「綺麗なソース」=「見通しの良いプログラム」と解っていない 連中にこれをしてしまうと干されるという諸刃の剣。 1が牛鮭定食好きならオススメしない。
>249 ありがとう。 でも >しかし、「綺麗なソース」=「見通しの良いプログラム」と解っていない >連中にこれをしてしまうと干されるという諸刃の剣。 この可能性がかなり高いです。 当方一人常駐なんであぼーんされるかもしれんけどそれ覚悟でやってみます。
251 :
仕様書無しさん :02/03/23 21:07
>>248 やめるなら、早めにな。漏れも同じような理由で3月一杯で辞めます。
サーバー系アプリなんだけど、mainだけで 1000行近いのはマズイですか?
253 :
NTT技術開発 :02/03/24 03:53
>>252 もしかしてTCS(東京コンピュータサービス)がやってる仕事?
254 :
仕様書無しさん :02/03/24 09:24
>>253 TCS(東京コンピュータサービス) こんなとこさっさと切れよNTTさんよお。
尻ぬぐいするのが大変なんだよ!
mainだけで2000行こえて、関数はほとんど5000行超えている。しかもそれがコピペばっかり。
動いてるけど、信頼性もメンテナンス性もマイナスで、全面書き直しだよ。
TCSは、動いてるからいいでしょ? ってなバカなことほざくし…
255 :
仕様書無しさん :02/03/24 09:26
論理上おかしいプログラムを2年間も面倒を見ています。 むりやり条件文で逃げ回った形跡もあります。 もう模様にしか見えません。 辛いです。 プログラマ自体やめようかな・・・
>>253 いや、違います。
もう完成したのでこれ以上増えることはないみたいだけど・・・。
CWnd* m_hFoo;
258 :
仕様書無しさん :02/03/24 14:06
>>253-254 TCSかー
あそこの社員5名ぐらいと一緒に仕事したことがあったけど
凄かったぞえ
サーバー系しか経験ないのにアプリ系の開発に加わってきた5名を
教育するのは大変だったべさ
全員4つ以上年上だったしのう
>256 あまいな。3〜5年後に新システムに移行する可能性があって、 安定稼動・経費削減のために流用することなんてザラ。 こうして伝統的なクソプログラムは引き継がれていくのだよ。
>>258 社員ド貧乏で、会社も研修とか一切させてくれないんで無茶言わんでくれ
yahooとgoogleだけで仕事してるんだから。
おいお前ら! とりあえずmainを800行まで減らしてみました。 が、ここからどう減らせばいいか分からない俺も ひょっとしてダメ人間ですか? ていうか鬼のようなエラートラップが執拗すぎ…。 何気に0x100ゲットしてたワショーイ
>>261 関数として処理をきりだしてみたか?
縦横無尽にはしるフラグや、意味不明の状態変数の壁には気をつけろ!
場所によって意味の違うグローバル変数とかキボンヌ。
>>262 変数は殆どスペルから意味が分かるのが不幸中の幸い。
つーか数えたらエラーチェックだけで300行あるよ…。
構造化例外とかつかってエラー処理簡略化したら綺麗になったりして。
>>264 >変数は殆どスペルから意味が分かる
罠かもしれんぞ。気をつけろ!!
267 :
仕様書無しさん :02/03/26 10:36
>TCSは、動いてるからいいでしょ? ってなバカなことほざくし… それが奴らの習性。
268 :
Uppyon :02/03/26 10:48
TCSってチンピラみたいな主任を1人知っている 仕事はできないが恫喝するのだけはムネオなみにうまかったが(w
>268 基本的に声とか態度が必要以上にでかい奴は使えない。これ定説。
271 :
仕様書無しさん :02/03/26 20:34
272 :
仕様書無しさん :02/03/26 20:45
声がぼそぼそしていて態度が必要以上におどおどしているヤツも使えねー ストレス解消には使えるが。
273 :
仕様書無しさん :02/03/26 22:55
仕事中に口がうるさい奴は役立たずが多い。 考えないで行き当たりばったり発言をする癖がついている。 =考えないで行き当たりばったり行動する癖がついている。 プライベートならどうでもよいが、仕事中の脳内がそんな状態の 奴は、プログラミングなんか出来ないよな。コンサルか営業でも やってろよ。出来れば、俺の視界に入らないところで。
>>273 おれ思うにB型に多い気がする。
本人は、その時点でいい方法と思っているが、
毎回言うことが違うので、周りは、困惑。
B型人間イッテヨシ!
275 :
仕様書無しさん :02/03/27 19:36
ぷログラマはA型かO型がベスト SEはA型で。 過去出会ったSEは全員B型で揉め事おこしてた
血液型気にするやつは技術者にむかない。
277 :
仕様書無しさん :02/03/27 19:46
>>274 お前、B型だろ?(w
> 考えないで行き当たりばったり発言をする癖がついている。
まさにそのまんじゃんか。血液型を云々してるあたりで、PGと
しては三流確定だがな。
278 :
仕様書無しさん :02/03/27 22:00
ポインタ、WINAPI関数禁止なんてのは、まだまだ甘いな。世の中には、もっと 凄まじい規則の会社がイパーイあることがわかったよ。
コンパイラ禁止!
この板だっけ?誰かいたよね コンパイル申請書類があって、その書類持って別のフロアいって、 いちいちお願いしないとコンパイルできない会社の社員さんの話。 あれは衝撃だったなぁ・・・
ん?漏れん所はスケジュール表が埋まってたら駄目だたよ。
コンパイルは5回まで、それ以上すると給料ナシ
>278 Windows環境で?
MFCラッパー使うとか…
>>285 そうそう。それです。世の中にはあり得ないと思うようなことがあるよね
287 :
仕様書無しさん :02/03/28 14:35
>>278 昔とんでもない会社入ってしまった。
みんなAccessしか使えないのよ200人以上居るのに
SolarisやらUNIXwareいじる時、NTServer上げる時新人の俺が担当なのよ。
社内のサーバーもほとんど俺の担当になってしまって仕事中いっつも呼び出され
他の課でレクチャー・・・
その年俺ソフトウェア業界初めてなのに(趣味では色々アプリ多言語でやってた
C、アセンブラ68K、VB、Perl等)
即効辞めた
大企業のコンピュータ部門があれじゃ困るよね・・・
>287 そりゃあ、とんでもない会社にはとんでもない奴しかいないだろうさ。
290 :
仕様書無しさん :02/03/28 16:06
VBにて 'レコードセット作製 fncOpenRes(TBL1,SQL) Do Until TBL1.EOF 'レコードセット作製 fncOpenRes(TBL2,SQL) Do Until TBL2.EOF for i=0 to TBL2.Fields.count if なんちゃら 〜中略 End if Next TBL2.MoveNext Loop TBL1.MoveNext loop 処理が20時間帰ってこなかった。 処理書き直したら10分で帰ってきた。
291 :
仕様書無しさん :02/03/28 16:09
>>290 それ大丈夫か?
見落としてる処理ない?
>289 で、客先がとんでもないところとか。 >290 コボラーが作ったな、さては。 JOINを知らないってやつだろ。 いや、SELECT以外のSQL文を知らないってことも。 >291 Closeしてないとか。
295 :
仕様書無しさん :02/03/28 20:26
sql = "SELECT count(hoge) FROM TBL_A" rs = db.openrecordset( sql ) count_hoge = rs.fields(0).value for i = 0 to count_hoge sql = "UPDATE TBL_A SET flg = '1' WHERE hoge = i" rs = db.openrecordset( sql ) next i という処理なら見たことあるな・・
そいつに一言「あのー、レコードセットって何か知ってます?」と聞いたら 「あたりまえだろ」 とけなすように言われた。だったら、SQL一文でアップデートしろよ・・・とおもた
>>295 もうバカすぎ…
count_hoge が数万件になったらどうすんだろ。
「なんだ遅い DB だな」とかぬかすんだろうか…
ストアドプロシージャならやりそうだな、それ。
>>298 バカすぎ、には同感なんだけど、もしかして、コンピュータの計算量で報酬が決まる
(=アルゴリズムの性能が悪いほど、仕事を沢山したと見なされて評価が高くなる)
会社なんじゃないかな?
・・・んな訳ねぇか。
>>300 ある意味、とってもストレスの高い報酬制度だね(藁
302 :
仕様書無しさん :02/03/29 01:01
>>295 COUNT知ってるだけまだいい。
おれがいまやってるやつは
自称上級SEが作ったのを引き継いでるんだが、
集計関係のロジック全部が
strSQL = "SELECT * FROM hoge"
rs = OraDatabase.CreateDynaset(strSQL, 4)
sum = 0
Do While rs.Eof
sum = sum + rs.Fields("uga").Value
rs.MoveNext
Loop
こんなSEが営業捕まえて「リレーショナルデータベースは云々・・・」とか言ってて
もうみてらんない。
お前「リレーショナルデータベース」って言いたいだけ(以下略
無知って罪だね・・・
303 :
名無しさん@Emacs :02/03/29 01:05
>>300 笑おうとして、ふとソースファイルの物理行数で報酬が決まる
(=ループを全部展開したり、Cソースなら、やたら改行を入れれば評価が高くなる)
我がクライアント(コード読めない)を思いだし…
304 :
仕様書無しさん :02/03/29 01:06
305 :
仕様書無しさん :02/03/29 01:08
>>303 開発ステップで決まる場合、コメント入れまくり。
まだコメントをステップに入れる甘々だった昔の話。
306 :
仕様書無しさん :02/03/29 01:13
>>304 昔とった杵柄で
「サンプルあったほうがわかりやすいだろ!」とかいって送ってくる。
で、目に見えないところで客に納品してるし。
307 :
仕様書無しさん :02/03/29 01:19
>>304 というかあくまで「自称」
設計のレベルは全然SEじゃない。
>>298 ぬかしてたよ(w
60万件データの更新に15分以上かかってて、上司に「なんとかならんのかね」と言われたのに対して
「データが多すぎます、処理速度はこれが限界です」と言ってたので、
作り直して、さくっと数秒で終了する処理に直してやったさ(Ww
で、どうなった? 続きが聞きたいage。
部長にまで上り詰めた元コボラーに目をつけられて 窓際に転落。 COBOLの教科書と勘定系の仕様書を読まされている。
311 :
ふと思ったこと :02/03/29 09:43
>>295 >>298 ふと考えたのですが、意図的にボトルネック(10倍20倍の極端なものではなく、2〜3倍程度の)
を仕込んでおけば、顧客からレスポンス改善を要求されたときの対応が楽なのではないだろうか?
(悪知恵)
無論、このケースでは、元PG作成者の無知 + 愚かさが原因なのはあきらかですが。
実際に、そんな小細工(空ループとか、Sleep関数による待機)をした経験がある人、いますか?
(プロジェクト管理者にも顧客にもソースを読める人がいないという前提で)
312 :
ふと思ったこと :02/03/29 10:15
>>311 自分で書いておいて、なんだが、良心が咎める・・・。
313 :
仕様書無しさん :02/03/29 10:20
SQLServerのフロントエンドにAccessを使うしょーもないプロジェクトで やったぞ。 これだけで充分伝わるだろうなあ……。 ODBCパススルークエリーじゃなくて、リンクテーブルで処理してたのさ。
314 :
仕様書無しさん :02/03/29 10:35
あーるでぃーおーおっほう Do Until TBL.Eof if TBL!KEY=なんたら and TBL!KEY2=かんたら and ・・・・ TBL.Edit TBL!FieldName1=hoge1 ・ ・ ・ TBL!FieldName80=hoge80 TBL.UPDate END IF TBL.MoveNext Loop こんな処理を見たことがある。 TBLはWhere句無しで開かれて、Ifでキーを判別。 さらに1件づつプロパティに代入。 動きゃいいってもんじゃねえよぅ
>311 ウェイトをいれたりまではしないけど、 チューニングしないことならある。
316 :
仕様書無しさん :02/03/29 11:24
Sleep他用するのやめてくれ。 ちゃんと他で排他処理やってんだから、 他のスレッドに影響でるだろ?
317 :
仕様書無しさん :02/03/29 12:22
>42 それがコーディングに規約になっている会社もある。(--;
318 :
仕様書無しさん :02/03/29 12:35
どこにも出口が無いのに途中で抜けちゃう。 おかしいなーとおもってしらべたらマクロの中にひっそりとreturn文が。 上司に文句言ったら 「開発メンバーなら誰でも知っている。知らない奴が悪い」 新卒で入ったばかりの頃だったなー。 知らない奴が悪い、と言う癖してドキュメントは何もない。 .....辞めようと思った、じゃなくてもう辞めちゃった会社の話だが。
319 :
仕様書無しさん :02/03/29 12:47
>313 しかもサーバ-クライアント間はISDN回線だったりする。 「データが増えてきたら遅くなってきました。どうしましょう?」と客に泣きつかれて 「じゃあ、PcAnywareでサーバにログインしてサーバ上でAccess使いましょう」と提案した。 ホントは作り直したいけど、金無いし。スマン。 このシステムを組んでくれたのは「みいそとか」。
320 :
仕様書無しさん :02/03/29 14:25
371 :内部事情通 :02/03/29 14:16 ID:Q/sFyszc 日立のSEが適当な設計しかしないで開発を発注する. 受注先は困る。が、なんとか完成させようと徹夜状態で努力する. その間に三行間の調整で仕様が変更される.しかし、受注先には伝わらない. 受注先フ?ロトタイフ?を作成しSEに確認を取る.現在の仕様に合わない. それをハ?ク?と言われ修正させられる.納期を伸ばさざるをえない. 受注先またも徹夜状態でなんとか作り上げ、SEへ納品する. SEに納期伸ばしでヘ?ナルティーをかせられ、受注金額をカットされる. 受注先、もう二度とここで仕事するのは御免だと思う. SEまた受注先へ仕事を依頼する.当たり前のように断られる. SE新しい受注先を探し仕事を依頼する.…同じ事の繰り返し…
321 :
仕様書無しさん :02/03/29 14:28
#!/usr/bin/pearl
>320 どこの話だかわかっちゃうじゃんよ>三行間の 日立はともかく客先に迷惑かけるようなカキコの コピペはやめれ。
>「データが増えてきたら遅くなってきました。どうしましょう?」と客に泣きつかれて >「じゃあ、PcAnywareでサーバにログインしてサーバ上でAccess使いましょう」 ツッコミどころ満載でワラタ
324 :
仕様書無しさん :02/03/29 15:52
>>320 しっつもーん。
これって勧銀 + 富士 + 興行のことですよねー。ワラ
そういえばニュースで合併の 4/1 までシステム統合が間に合わない
ことが確実になった、統合後自由に口座から引き落とせないって報道
されてましたなぁ。ヒャヒャヒャ
って俺のメインバンクが勧銀だよ!(泣)
# 4/1 から目立 SK 社員より
325 :
仕様書無しさん :02/03/29 16:11
#include <stdio.h> int main() { char a[12]; scanf("%s",&a); printf("%s\n",a); } 某零細企業のC言語研修全容(研修を受けた先輩の遺物)。 しかもコンパイラ入ってなかった…。 1週間で辞めた。
追記 コボルの研修は当時より20年前の教科書のコピーだった。 VB5.0の開発でVB2.0のマニュアルを読めと言われたり…。 1週間しかいなかったけどもりだくさんだよ。 ハァ…。
327 :
仕様書無しさん :02/03/29 19:30
>>311 スケジュール的に厳しいものとか、作業分担狂ってるってものに対しては
動くけどちょっとバカ(遅い、など)なもので客の要求を満たしてはいるがもうちょっと・・・のものを作り、
客があーだこーだ仕様変更や改善要求を出してくるのを待ち、営業に相談し¥↑させて、さくっと
改善したことなら何度かある
328 :
仕様書無しさん :02/03/29 22:02
コメントに /* 分からなかったら誰それに聞け */ と書いてあった。 誰それは既に辞めていた。
>>324 そのままペイオフに突入
>>327 意図的にセキュリティホールを仕込み、サービスファックで…
サービスファックか…
(´д`;)ハァハァ
332 :
仕様書無しさん :02/03/30 07:42
>323 > >「データが増えてきたら遅くなってきました。どうしましょう?」と客に泣きつかれて > > >「じゃあ、PcAnywareでサーバにログインしてサーバ上でAccess使いましょう」 > ツッコミどころ満載でワラタ AccessのリンクテーブルはテーブルまるごとAccessに持ってくる。 よってデータが増えてくると通信量が増えてしまう。 PcAnywereでつなぐ。サーバ上でAccess立ち上げて使う。PcAnywhereの場合は 画面の書き換え情報と入力情報だけをやりとりする。ISDNだとちょっともたつく けれども、それはDBのデータが増えても関係無い。ほぼ一定している。 作り直すのもいいが、仕様書も書かねばならんし、工数も掛かる。 当然テストもしなければならない。客はお金は出せない、と言っているなら こちらもお金が掛からないように解決策を考えた。 もっとスマートな解決策はあるだろうか?
とりあえずADO+パススルークエリーでお茶を濁せ
334 :
仕様書無しさん :02/03/30 09:18
パススルーはAccess以外のDB開発経験があれば、どうってことないと思いますけど、 Access + DAO + MDB だけでやってる人はほとんど一から勉強し直しに近いのでは?
聞いたらSE全員がSQL知らないんで、DB系業務一切やったことすらない漏れに おはちが回ってきたよ。 SQL2Kサーバがやたらメモリ食ってるそうな。エソタープライズマネージャ見たよ。 は ぁ 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 た だ プ ロ パ テ ィ を 見 る 。 そ ん な 基 本 も 無 い ん で す か
336 :
仕様書無しさん :02/03/31 16:12
>333 アドバイスありがとう。 お客さんがお金を出す気になったら検討してみますです。
初期化関数で、clearのことを意味しているのだろうが、crearという 関数名があり、ちょっと萎えた。別のプログラムでもそうだった。 先輩の作った関数名を勝手に直すわけにもいかず・・・。 俺は、その関数を呼び出すたびに、無念の「r」キーを押している。
338 :
仕様書無しさん :02/04/04 03:12
そういうときは#defineで対応しましょう。
339 :
仕様書無しさん :02/04/04 03:22
>>337 crear -> clear におきかえるのがいいとおもうよ。
置換なんてエディタで一発だし、(C なら、だけど) 仮に置換で
ミスってもリンクエラーになるし。
漏れなら絶対直す。
340 :
モナBERT :02/04/04 04:41
>339 置換なんてエディタで一発だし 実際にやってみたことあります? コメントも中途半端に書き換えられるので、規模の大きいソース群ではうまくいかないことが多いです。 中途半端と書いたのは、コメントは機械によって査読されていないので、 信じられないような誤りや綴りが存在しうるという意味です。 最初からspell checkされてるぐらいなら crearなんて現れないだろうし。 あと、abc->uvwという変更をしようとする時のgenericな(一般の)解は、lex(もしくは同等品)を使うことです。 XXXabcYYYという文字列のどこかにabcが(overlapして)現れたり、 uvwに置換後にまたパターンabcが現れうることを考えると、 正規表現で扱える範囲を越えているので、通常のエディタではできません。 まあ、関数名(crearのこと)を変更したいと思ったときに、 関数名であるようなものだけを切り出さなければならない⇒文法に則った何らかのparseが絶対必要だ と考えるのが、ソフトウェア工学における通常の立場です。 プログラムを、構造のない単なる文字列あるいはテキスト群と考える試みは、容易に敗北するでしょう。 初期化データのmagic中にcrearなんて使われてたらどうします? エディタでやるにしても、一発ではなく、 人の目で確認しながら変更する(大抵のエディタにはそういう機能がある)ほうが結局は近道 というのが私の結論です。
>>340 > 実際にやってみたことあります?
% grep crear *
で確認
% perl -pi.bak -e 's/crear/clear/g'
で置換、てな感じで。
grep の結果によっては
% perl -pi.bak -e 's/crear\(/clear(/g'
などなど。
> 人の目で確認しながら変更する(大抵のエディタにはそういう機能がある)
> ほうが結局は近道というのが私の結論です。
まぁそうだけど、全て手で修正するのはあほらしいなぁ。
おとしどころは「基本は機械。人間が補佐」あたりで手を打たんかね?
リファクタリングエディタがもっと普及すればいいのにね。
俺の場合は、ソースコードの構造が頭に入るから、 エディターでちまちま(y/n)ってやってます。 意外とお勧め。
>>340 その程度ならスクリプト書けば済む。
> ソフトウェア工学における通常の立場です。
大げさ。
>>340 修正できるだけまだマシだと思え。
共通クラスのメンバ関数名がスペルミスだらけ(他社が作成)で、そのシステムは運用中。
そんなシステムの機能追加なんてやってられん。
>>340 VC、秀丸程度しかさわったことないんだろうなあ。
emacsのquery-replace-regexpとか使ってミロや。
windowsしかつかえんだろうからxxyzzyでもmeadowでもいいぞ。
mac使いだったらごめん。
>>345 俺は、
>>340 擁護派だけど、
やはり人間の目で確認しながらやるのが正解だと思う。
あなたは、客先からソースの提示求められたことありますか?
スレと関係ないのでsage
347 :
仕様書無しさん :02/04/04 11:49
なんかずれてないか?
348 :
仕様書無しさん :02/04/04 12:59
make -> create とかなら問題があるが、
crear -> clear で問題がおきるとは思えん。
文字数まで一緒なんだし…。
crear -> clear
Crear -> Clear
で置き換えればいいじゃん。
>>345 VCにも秀丸にも正規表現はあるが、それよりすごいの?
>>346 > やはり人間の目で確認しながらやるのが正解だと思う。
なんでこんな機械向きのことをわざわざ人間がやらなきゃいかんの?
君はログファイルなんかも目 grep したりするタイプと見た。
たしかに
>>340 はちょっと大げさだけど、言ってることは正しいよ。
確実にリスクを減らしたいなら、まじめに構文解析しないと。
将来は IDE にリファクタリング支援機能が標準装備になってるでそ。
今は過渡期だから、query-replace-regexp とか言ってる奴もいるけど。
性器表現を知らない人間でも、リスクなしでリファクタリングできる。
これが理想だよね。
>>350 やっぱ目で確認したほうがいいよ。
性器→正規
でしょ?
変換なんて普段よく変換されるものから優先的に出てくるから、
あまり信用しない方がいいよ。
キャップ乱用厨ウザイ
コンパイラという名の高機能な構文解析器がすでに目の前に。 crearがグローバル関数だったら関数名をclearにして、コンパイラや リンカのエラーをもとに置換。 でも、仮想関数とかだとそう簡単にはいかないよねー。 企画倒れでした。
355 :
仕様書無しさん :02/04/04 21:47
crear に限るなら正規表現で充分手に負えるだろうと思う。 一般論としては >340 の方が手堅いけど。
356 :
仕様書無しさん :02/04/04 22:23
1. 変更対象ソース全体をコピー
2. s/crear/clear/g
3. 変更前と変更後をdiff、変換しすぎがないか目で確認
でしょ?
>>340 は正論だけど、保守的でもあるんでない?
357 :
仕様書無しさん :02/04/04 22:50
たとえスペルミスといえどもソースを直したら再テストせにゃならん。 再テストする覚悟が無ければ我慢したほうが言いと思う。
どうせまだ開発中だからソースの中見ているんだし、次のテストフェーズで 再テスト、再テスト
359 :
仕様書無しさん :02/04/04 23:47
つーか、「先輩の作った関数名を勝手に直すわけにもいかず・・・。 」という 337 の
根本的な性格異常に対して、誰もコメントしないのが物凄く笑えるな
>>338-358 おまえら、自分の知識披露したいだけとちゃうんかい。
関数呼び出しなんだから案外crear(で検索すれば案外さっくり行くかもなんて crear (hoge);なんて制御文のように呼び出す変態的な スタイルの人が居ると撃沈だが
>>359 深層心理的に、自分の知識をひけらかしたいとか
自分と同程度の知識を持った人と話をしたいとか、
自己顕示欲を満たしたいとか、
そういうことを思わずに、掲示板で見ず知らずの人間の物を教える人って、
ニルヴァーナの境地だよね。
↑スマソ。なんか日本語変
今改修してるソース、 1.すべての関数、変数がpublicで完全開放 (どこから何が飛んでくるか予測不可) 2.Stringにキャストしまくり 3.引数の型にclass、objectを多用 (そのくせ中はStringの引数1つで足りる内容) なんらかの基準があればいいが、各人が気分次第で書いた模様 crearとかまだいいよ。統一されてるなら さらに仕様書なし、コメントが内容と不一致、辞めてもよかですか
364 :
仕様書無しさん :02/04/05 01:41
どこぞのpublicのcrearと、どこぞのprivateのcrearが混在してると とっても面倒なことになると思われ。。。 更に、ローカル関数なんて使われた日にゃ・・・置換するのはすんごい面倒。 (C/C++、VB、Delphi・・・などなど、言語は一切問わず) ・・・きっとみんな、他人のソースをメンテしたことないんだね(w
>359 わはは、確かに話しがあらぬ方向に(^^ シンプルなソースだから、直してよそが ヘンになるようなものでもないんですよ。 勝手に直せないのは、 1.指示された部分以外の修正・追加は、一応お伺いを立てなければならない 2.ワタシは新人なので、先輩のスペルを正すような真似をすると、生意気に思われてしまう。 というわけで、今の今は、だまってcrearと呼び出してますわ(笑 ま、そのうち・・・ね。
366 :
仕様書無しさん :02/04/05 03:52
crear を呼び出す clear って関数を書けば良いだけじゃん・・・
>>365 知ってて直さない、嫌味な奴と受け取られる。
諸刃の剣。ならば直してしまうのも手。
>>364 publicとprivateなら大丈夫?な気もするが。
いちおー修正前後でバイナリの比較しませんか?
368 :
仕様書無しさん :02/04/05 06:24
DIM A AS Boolean ’ブーリアン型
わざと誤字を入れて、相手の出方をうかがうテストだったりして。
つか CR + EAR の造語だったりして。
>>365 >1.指示された部分以外の修正・追加は、一応お伺いを立てなければならない
当たり前の環境すぎて、笑う気にもなれんわ。
愚痴スレなら無視するけど、それで辞めようと思う奴なんてこっちから願い下げだな
>2.ワタシは新人なので、先輩のスペルを正すような真似をすると、生意気に思われてしまう。
つまり、過去に先輩にそういう指摘をして生意気に思われたということか?
そうじゃないかなあ・・と思っているだけなら逝ってよし。
creat を思い出して余韻にひたる会
互換性のために「e」は取りました。
Message が Massage で萎えた。 マッサージカヨ!
注釈からラベルから全部massageって書いたのが活字になっちゃった。 指摘されて欝になったよ。
>crear を呼び出す clear って関数を書けば良いだけじゃん・・・ それは痛烈なイヤミだな(藁
>374 initial -> initailってのもある。(initializeの略らしい) 打ち間違えてるけど、作ったやつがコピペしてソース書いたみたいで動いてる。 素直に*_initにしとけば一目瞭然なものを半端に略すなって気がする。
378 :
仕様書無しさん :02/04/05 22:21
void uwarite に勝てるものなどない
上書き?
380 :
仕様書無しさん :02/04/05 22:40
なんかtrableとかいうディレクトリができていたので、 ln -s trable trouble としておきました。
>>379 そ。5年前の4月に入った会社、3年上の先輩のソース見て唖然。
漏れ「これ、なんですか?uwarite??」
浅敗「ああ、それなあ・・いや、上書きの上ってのがわからなかったんだよ」
漏れ「OVER・・・ですよね」
浅敗「あ、そうかそうか!まあ、それでも意味わかるからいいだろ」
漏れ「riteって何ですか?」
浅敗「書く、って意味だろ」
漏れ「・・・wは?」
浅敗「え?」
漏れ「write・・・ですよね。。」
浅敗「そうなのか?まあ、いいだろ読めるし」
漏れ「はあ・・・」
というのが最初に入ったプロジェクトの共通関数の1つ。
他にも deta_load や retarn_vale とかあって爆笑。
382 :
仕様書無しさん :02/04/06 01:38
>>381 小熊ちゃん思い出したよ…て、何のことかわからんか、スマソ。
ローマ字と英単語がごっちゃになっててすさまじいね。(w
まあtypoも勝手に作った言葉もまだいい。 海外向けにローカライズして「datas sended」つー表示はねーだろ! しかも仕様書にまで、ご丁寧にメッセージ一覧で載ってるぞ。ハヅカシー
正直、俺もtypeも関しては人の事笑えないんだよな、はぁ。
>>385 ここでtypeって打ったのはtypoの間違いだよな?
〜out って書きたいところを 〜put ってtypoしました。 しかもそれが社内のライブラリに残ってます。 恥ずかしくて辞めたい...
388 :
仕様書無しさん :02/04/06 13:40
>>387 >〜out って書きたいところを 〜put ってtypoしました。
>しかもそれが社内のライブラリに残ってます。
それはそれでいいんじゃないか?
どういう動作するかにもよるけど、少なくともPG連中には通じると思うぞ。
>388 '〜out' で一つの単語なんだよ ヽ(`д´)ノ ウワァァァァン
390 :
仕様書無しさん :02/04/06 15:02
とある業務メール。 関数名を仮名にした以外は、ほぼマンマ 件名 : 【【【重要:確認依頼】】】ソースコードへのコメント記入について (略) ソースコード中のコメント記入についての 確認依頼です。 【依頼の背景】 納入ソースファイルの内容を確認したところ 下記のコメント記入があり、非常に問題となって おります。(現時点では社内レベルですが) (社名)として各担当者殿が日々の努力の結果として 納入したソースファイル中に心ない一部のコメントにより 全体の品位を疑われるような記述がありました。 (顧客名)さんには未だ認識されていないようですが この様なものが発見された場合に(社名)としての 責任問題まで行きかねません。 (略) *** 以下、問題のコメントです。 *** /////////////////////////////////////////////////////// // 関数名:信号打ち出し試験関数(func1) // 機能概要:だから試験用だって // パラメータ:だからないって // リターン値:そんなもん期待すんな //////////////////////////////////////////////////////// void func1() { func2("失敗だよーん やり直しだぴょーん"); 〜中略〜 ////////////////////////////////////////////////////// // 関数名:****試験関数(func3) // 機能概要:しつこいぞ // パラメータ:だからないんだよ // 戻り値:いいかげんにしろよ ////////////////////////////////////////////////////// void func3() { func2("だめだったねー よかったらもう一回あそんでね ");
392 :
仕様書無しさん :02/04/06 15:58
>>391 そいえば、昔、ショッピングサイトの構築の際、
振り込み請求画面のHTML中に
「とっと金払ってね」
とか、書かれてて大問題になったっけ。
主任が平に降格されてたような。
393 :
仕様書無しさん :02/04/06 16:25
>>151 激ワロタ、訳わからないソースだろうね。
391 コードレビューはしないのか?
>>391 コードレビューで
自分のテスト用関数のコメントが
コーディング規則に従ってないとか文句つれられた
プロクラマーさん きれちゃったのね
396 :
仕様書無しさん :02/04/07 09:19
ごめん、俺も
>>391 の件みたいなことやった経験があります。
愚痴を書き連ねました。
「このソース、最後までレビューされないだろうなぁ」 ってときは、あらぬことを書き連ねることがあります。 /* 仕様が曖昧なまま実装しました。 もちろん再三問い合わせましたが SEは「もうすぐ決まるから」と逝ったまま 納期が迫って来てます。。。 お前仕様一つも決められないで SEなんてやってんなと。 一家四人で詳細設計か?おめでてーな。 「よーしパパ、共通関数仕様書まとめちゃうぞー」 とか逝ってんの。もう見てらんない。 俺が持ってる「はじめてのC」やるからその席空けろと。 「もうちょっと待って、もうちょっと」 なんて3回も待たされて、そこでまたブチ切れですよ。 もうね、アフォかと、ヴァカかと。 */
セクハラ系関数名 fuck(); どうもフック関数のつもりだったらし。
400 :
仕様書無しさん :02/04/07 12:37
俺も1年目に
>>391 に近いことをやって、リーダーから怒られた経験あり(w
でも、先輩の大半が全ての関数のヘッダで
関数名:(その名前)
概要:?
用途:?
引数:?
備考:?
作成日:?
とやってたから、「ああ、ここはそういうとこなんだー」と思い
関数名:(その名前)
概要:(ここはきちんと書いた)
用途:さあ?
引数:見てのとおり
備考:特にないです
作成日:タイムスタンプ見てちょ
とやったら、何故か俺だけ叱られた・・・
401 :
仕様書無しさん :02/04/07 14:58
関数のコメントから、ドキュメントを生成するために決めた規約 ということがあるからね。 プログラム作成者名の入力欄があるコメントには注意しましょう。
402 :
仕様書無しさん :02/04/07 15:09
/** うっかりJavadocで関数票に炙り出される罠。 **/
>391 しかしスタブで怒られるとはな(w >400 それは先輩の仕掛けた罠だよキミィ
404 :
仕様書無しさん :02/04/07 15:31
Dim a as integer Dim b as string Dim c as integer dim d as long ばーか。ばーか。ばーか。
>>404 宣言してあるだけマシだと思った私はかなり毒されてますか?
>405 真のVB厨は配列にできる変数を個別に宣言する。コレ最悪。 Dim a1 As Integer Dim a2 As Integer Dim a3 As Integer Dim a4 As Integer
int a[3]; int a,b,c; どちらがマシなのかな。
408 :
仕様書無しさん :02/04/07 16:12
Dim sakana As Integer Dim sakanasakana As Integer Dim sakanawotaberuto As Integer Dim karada As Integer Dim karadakarada As Integer
>>406 それ、VC++でやられた…
後輩だったので、会社辞めようというより辞めさせようだったけど。
連鎖的に、ループにできる部分がコピぺで200行くらいになってた。
410 :
仕様書無しさん :02/04/07 17:15
VBで Public i(20000) となってて、使い方が i(1) = i(30) とかで、配列の意味はまったく残ってないソース解析したことあるぞ 作ったやつ曰く「配列の意味は別のファイルに書いてましたけど、完成したから いらないと思って消しちゃったんですよ」だった。
>410 よっぽどその会社に居るのがイヤだったんだろうなぁ(w
>411 その手があったか!
>>411 最初はそう思ったけど、単なるアホでした。
テスト終了後に問題発生、テストデータを残してあるもんと思い聞いたら
「テスト終わったのでデータはもう消しましたよ」
テスト仕様書見せろっていったら
「テストでは問題なかったので全部消しましたよ」
414 :
仕様書無しさん :02/04/07 23:02
関数内で何箇所もある他関数コール。 その戻り値格納用に、すべて違う変数を使用。 しかも、値を格納だけして参照しないものも多数。 もうね、アホかと。バカかと。
415 :
仕様書無しさん :02/04/07 23:09
↓コメントだけで、逃げてる人を見たことあるっす。 void hoge(char* p) { //pにはNULLを絶対に渡さないこと } あと void iikanji() { //いい感じな処理をします } どんな処理やねん!
>>415 |void iikanji() {
|//いい感じな処理をします
藁タ
>415 ワラタ ファジー搭載の頭のいい関数だったら尊敬できるな。
>>414 格納だけで参照しないのは、デバッグ時に必要だった可能性あり。
たまに、デバッグ→完成!さあ、無駄な返り値を消そう・・・と思ったら
「格納する処理があったから動いているかもしれないのに、消して動かなくなったら」どうするんです!!」
と謎の注意をする人もいるからな
CommPtr->Finished = TRUE; CommPtr->Finished = TRUE; // 念のため ‥あほかい。
421 :
仕様書無しさん :02/04/08 05:37
1メソッドが5キロほどある。
422 :
仕様書無しさん :02/04/08 07:11
423 :
仕様書無しさん :02/04/08 07:34
>>419 連続は見たことねーな
VBで標準イベントをコールしまくるアホなメソッドで、
その標準イベント内で同変数を書き換えまくるというのが理由で
メソッドの頭と最後で419みたいなのを書いてたソースなら知ってる
424 :
仕様書無しさん :02/04/08 08:29
>>423 もしかして同じ職場か?
俺のソースを見たことがあるとは・・・。
>>414 参照しないのに格納は賛成しないけど,
各戻り値を違う変数に格納は賛成.
それぞれの戻り値をどういう用途で使うかを
示すわかりやすい名前を付けるべきだ.
同じ変数を使いまわしされたりすると
その変数がどこでセットされたか追うのめんどいし.
426 :
仕様書無しさん :02/04/08 09:42
VBだろうがPerlだろうがCだろうが、 とにかく「変数は全部グローバル変数」 が一番萎える。
>>426 たぶん、メンテ者に対するイヤがらせ(藁
428 :
仕様書無しさん :02/04/08 12:48
時効だから告白するが... C++で書いた交換機制御のコード中に int i,c,b,m = 0; // 大陸間弾道弾(カウンタだよん) って埋め込んだ記憶がある。規約で変数は処理の先頭で まとめて宣言、ってのがあったんで遊んだのだが。
>419 組み込み系で、トリガたたくときに *video_init = 0; wait(10); //10u wait とか書いて信号の立ち上がりを待たなきゃいけないもの だったとか? 昔、ハードのことよくわからなくて、ドツボにはまったことあったな。
うちなんか、変数はできるだけグローバルに。 だぞ。
>>431 そのこと自体が悪い訳じゃない。
それに起因するトラブルが怖いだけ。
433 :
仕様書無しさん :02/04/08 19:35
>431 グローバル変数だと機械語に落ちたときにデバッガで追いやすい、 という理由なら納得しなくもないが。 コーディングするほうとしてはせめてスタティックなローカル変数程度で 勘弁して欲しいところではある。
>>426 全部ではないが、関数の戻り値やループ用変数は全部グローバルって人を
見たことがある。その人がそういうことを行った理由が、また爆笑モノ。(C言語)
「えっ、だって関数の中で何個も変数宣言するよりも、外で1つにするほうが
メモリの使用量少なくてすむでしょ」
おっさん、あんた・・・・
>>426-434 (少なくともVB使いの場合は)愚弄罵る変数を多用する人たちは、引数の使い方を
知らない場合が多く、ほとんどのサブルーチンが引数なし。(藁
結局、引数の渡し方も、戻り値の取り方もよくわかってないから、愚弄罵る変数
を多用せざるを得ないという構図・・・。(鬱
しかも型が馬離暗吐ばかりなんだよな。
それでもそれなりに動くVBってすばらしい!
ソースコード納品になってて、引継ぎして完全実行したらエラー出まくり。 おいおい、これコンパイルしたことあるんかい!と作者(別の部署に異動済み)に聞いたら 「ソースコード納品でよかったのでそんなことやってませんよ」 つまり、テストもしてないんだね・・・
>>430 そう (^^; 通信ポート内での書き込み終了フラグを立てる処理。一行目の後で
割り込むとバグとなるんだが、時間的に2行目でやれば再現しなくなる。
割り込みマスクとか排他処理とか知らんヤツがSEやってる制御系ソフト
ハウス、ってのは、辞めようと思いましたです。はい。
ついでに、同じ会社での出来事。 サブシステムとの間をベーシック手順もどきで通信しているんだが、 初めての結合試験、メイン側のプロトコルモニタ見ていた私。 「はい、それでは開始電文を送信します」 メイン→サブ:<SOH> 1 <STX> S T <ETX> = 01 31 02 53 54 03 「受け取りました〜」「応答返します」 サブ→メイン:A C K 0 = 41 43 4B 30 「‥」 ‥もう、バカかと。アフォかと。
int main() { ... char **main = ... 唖然
442 :
仕様書無しさん :02/04/10 14:36
みずほに敬意を表して アゲ
443 :
仕様書無しさん :02/04/10 18:11
Private Sub cmdOK_Click() Dim items() As String Dim Ret As Long Dim i As Long Dim j As Long If BihinItems(0) = "" Then Exit Sub With frmMenu.sprBihin .MaxRows = lstParts(1).ListCount .MaxCols = UBound(Split(BihinItems(0), ",")) + 1 For i = 0 To lstParts(1).ListCount - 1 Ret = lstParts(1).ItemData(i) items = Split(BihinItems(Ret), ",") For j = 0 To UBound(items) Call .SetText(j + 1, i + 1, CStr(items(j))) Next j Next i End With Unload Me End Sub 意味ワカラン
わかるよー
>>443 ソースだけコピペして「意味ワカラン」
キミ、普段から「日本語を喋れるように努力しなさい」って言われてるよね
>>443 コメントがないので、作成者以外の人にはちょっとわかりにくいかも。
それから、個人的には、スプレッド?を使ったことがないので、SetTextメソッドというのが
どんなメソッドなのかがよくワカラソ(指定座標にデータ出力・・・かな?)
# インデントなしでループのネストは読みにくいですね。PREタグが使えないからしゃーないけど。
ふと、今日会社で雑談してる時にサイテーなコードの話になったので書いてみる ・NORTi(リアルタイムOS)使用のソース(もしかしたら勘違いだったかもしれないが一応C) 関数テーブルで飛びまくりの上、飛んだ中でセマフォ乱立 加えて、同じ領域の変数をかなりてきとーに別名で設定 作った奴も把握できなくなっているようで、 領域乗り越え&同時アクセス起こりまくり しかも、あらゆる変数がすべてメモリエリア上に固定されている ・組込み系(一応C) 変更履歴や変更箇所をコメントアウトして残すという規約 まあ、これ自体はそう問題でもないのだろうが 十年以上の使用実績と、細かい改変とパッチの山 おかげで、全ソースの六割が無意味なコメント (変更箇所にコメントったって、 /* 01/14 Suzuki */ では、誰がいつ何のためになおしたのかすらわからんわい) ・ 某制御系補助プログラム(VB) 頼むからRedimで次元を変えるな 配列を構造体代わりに使うな 関数の入り口と出口で引数の次元と 各内容の意味 (配列を構造体代わりにしているので添え字ごとに違う意味になる) が変わった日にはデバッグしようもないぞ
> セマフォ乱立 私なら捨てます、そのコード。(^^;
Cのプログラム。 関数はただ一つ、main()のみ。wcでみると2400行とちょっとだけど、 1行中に;がいっぱいある…。 なんか妙に左側がそろってるなと思ったら 分岐は if (...) goto hoge; else goto fuga; のみ! while (...) {}とか do { ... } while (...) とか for (..;..;..) {...} とかが 一つもないのだ。 早速コードを書いた奴を呼び出してせめる。 「あんた、Cの他は何の言語知ってるのさ」 「N-BASIC...」 「...」 「...」 「だったらここはループ使えや」 「...........ループって?」 「Basicだったら、えーと(Basicなんかもう忘却の彼方だよ).....FOR〜NEXTだ」 「ふぉあねくすとってぇ?」 こ、こいつ…FOR〜NEXTしらねーよぉ。今までなにやってきたんだ?????
1Kステップ越えるBAT
しかもこいつ、「Cってgosubがないから不便だね」とか言い出したんよ。 で、コード見たら gp = 7; goto sub4080; ret007: ... sub4080: ... if (gp == 4) goto ret004; if (gp == 7) goto ret007; 以下if()gotoが延々と続く こんなコードをオレに渡して、いったいどうしろと。
ごめん、バイト学生にはネタにしか見えない。
453 :
仕様書無しさん :02/04/11 00:12
SQLServer や Access を使えばいいのに、 魔がさして、INIファイルをDBにしてしまった。 今でも正常に動いているけど、 作ったころは64KBの制限があるなんて 考えもしなかった。
>>451 gosub先でclearしてから変数を全部再宣言して、gotoで戻りますが何か?
>>428 /* コンドームはループ1回ごとに使い捨てること */
int iCdm1, iCdm2, iCdm3;
456 :
仕様書無しさん :02/04/11 01:55
Dim a As Integer Dim aa As Integer Dim aaa As Integer Dim aaaa As Integer Dim aaaaa As Integer Dim aaaaaa As Integer 'カウンタ Dim aaaaaaa As Integer Dim aaaaaaaa As Integer 他は何よ・・・
457 :
仕様書無しさん :02/04/11 02:14
プログラマって職業は何でこんなこと起きるんだろうね。 プロ野球の選手がヒット打っていきなり3塁に走り出すよなもんじゃん。
>449 処理速度だったらそれが一番早いぞ。
459 :
仕様書無しさん :02/04/11 08:16
とある汎用機用のソフトで hogeとhoge2というのがある。2の方が新しいバージョンだな。 そして、メーカーはhoge2のみソースパッチをリリースした。 しかしこっちで使っているのはhogeだ。 汎用機部隊は何をしたか? hoge2のソースパッチをhogeに無条件に適用後、動かしてみて バグを取ろうとしたらしいんだ。 hogeとhoge2ではハナから内容が違うのにどうやってパッチが 適用できたんだろー? とか、ウチ独自の仕様変更も加わって るのにそこはどうしたんだろー? とか今でも疑問は尽きない。
>>443-446 もしかして、443氏は「アルゴリズム的にタコ」ということが言いたいのかな?
二次元配列を使えば、一括処理できる、とか?(試してないけど)
そのあたりの「趣旨」を書いて欲しいところ。
461 :
仕様書無しさん :02/04/11 11:03
462 :
仕様書無しさん :02/04/11 11:31
゚Д゚ !!
463 :
仕様書無しさん :02/04/11 12:24
いいんじゃない? 最近はメモリたくさん積んでるし。 昔いた会社で、開発主任が 「メモリにゴミがたまるから半日に一回再起動してください」 って客に言ってたよ。マジで。
Windowsだとあながち嘘ではない。
>>460 With frmMenu.sprBihin で別フォーム上のコントロールをいじってる
部分からして、俺的には糞コード
466 :
仕様書無しさん :02/04/11 16:56
>>465 じゃあどうするの?
つーかフォームもスプレッドもPublic宣言されてるんだから
構わんと思うが。
別フォームに関数作ってそれを呼ぶかなぁ。
468 :
仕様書無しさん :02/04/11 17:31
>>467 モジュールじゃなくてフォーム?
わけわかめ
469 :
仕様書無しさん :02/04/11 17:33
暗黙のコードでpublic宣言すっからVBは糞なんだよ
某パソコン屋さんのオンラインショッピングのソース。PHP なんだけど。 ユーザがモノを買うと、 select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して select して commit して update して commit して もいっかい commit して update した内容を select して select して commit して select して commit して select して commit して insert して commit して insert して commit して insert して commit して insert して commit して update して commit して もいっかい commit する。 # 元コードそのまま。 join も無いし、SQL いっこごとに commit してるし、SQL 流した時の エラーを変数にいれはしてるが見ていない。処理は続く。 1ソースあたり関数は平均2つくらい。 パスは全てハードコーディング。(include 使えって) 色々イヤなとこばっかなんだけど、思いだしたくないんで、このへんで。
471 :
仕様書無しさん :02/04/11 17:52
すげぇどうでもいいんだけど。 for (; $bye ;) { ....; } 何かと思ったじゃないか。 # buy と bye を間違えたらしい。 # # while 使えとかも思ったけど。
472 :
仕様書無しさん :02/04/11 17:58
さよなら言うまで終われないのか。 買うまで返さない店なのか。(嫌な店だ)
if(a>0){a+=1}else{a=(a!=0)?(a-a):(0)} やりたいことが判らん
>>473 わかりはするけど…素直にえるしふ使えと。
そういや以前、==使える局面なのにやたら!=で判定したがる人がいた。
わかりづらいんだよなー。
475 :
仕様書無しさん :02/04/11 18:14
>>473 if(a > 0)
++a;
else
a = 0;
まとめると、こうか?
何をどうしたらそんな糞コードが書けるんだ‥‥‥
a=(a!=0)?(a-a):(0); 恒等式じゃないか?
2000年対応のとき、、、諸先輩が書いたコード 漏れはこんなアホなコード書いた部長にコキ使われて、 不具合出したときにクソミソに言われてたのかと思うと、 悔しくて涙がでた。 ---- /** 本モジュールは99年12月31まで利用可能である **/ if ( year == 84 ){ uruu_flag = 1 ; } else if ( year == 88 ){ uruu_flag = 1 ; } else if ( year == 92 ){ uruu_flag = 1 ; } else if ( year == 96 ){ uruu_flag = 1 ; } else{ uruu_flag = 0 ; } ----
>>477 あー
3年前に入ってきた新卒に、能力テストということで
課題 「うるう年を求めるプログラムをCでかけ」
を出したら、一人だけそういうソースを出してきて「よくできてるでしょ?」と
嬉しそうに言ってたのを覚えている。
部長に糞呼ばわりされて、実際仕事させたら糞で、半年で自主退社してもらったっけなあ
2099年まで利用可能ってコメント書いて、 leap_flag=0; if((year%4)=0) leap_flag=1; て書いてあったソースだったらまだ頭つかってるなコイツって思えるけどね、 実際に漏れが2000年でソースチェックしまくったときには そういうの見つけたことあったよ。 でも元ソース作成時に、477のコード書いたその部長とやらはアホすぎ(w
>>477 せめて、forループで回して欲しい。(違
>>477 西暦99年までですよね。
埴輪と一緒に埋まっててください。
if(条件式){ 長〜い長〜い通常処理 }else{ 1行の異常処理 exitとかreturnとか ] なぜ逆にしない?
>>483 事実上同等アルゴリズムなのに、ちょっとの配慮で可読性が大差、という例ですね。
(「大差」はちょっと大袈裟ですが)
485 :
仕様書無しさん :02/04/11 21:05
ああ、俺もうるう年の対応で、テーブル作ってまわしたタイプだ。 ごめんよ、馬鹿で・・・。
>>483 その、長〜い長〜い通常処理 をなんで関数にしないんだろ?
なが〜く書くのもどうかと思うが、 長いからというだけで関数にするのもどうかと (いや、ちゃんと意味のある単位で切り分けろってことね)
>>486 PGに技術がなくてうまく関数に切り分けられないからだなぁ(苦笑)。
もう何がなんだか。
if文周りの欝なプログラムはたくさんあるはず。
入れ子が深かったり、{}の中がやたらと長かったりと
もうメンテナンスしたくないと言いたくなるものが
どれだけあることか。
>>488 SQL文をベタに書くと、アルゴリズム的に特に冗長でなく、妥当な内容でも、
たちまち数百行になってしまいますね。
>>489 VB6.0以前の仕様だと、論理AND / OR 演算子が短絡しない(常に右辺も評価されてしまう)
ので、意に染まないIf文のネストをせざるを得ないケースもままあるのですが、それでも、
センスのいい人なら、3段を超える条件分岐のネストはやりませんね。
>>483 別に逆にしなくてもいいと思われ
仕様を理解した上でソース読んだらすぐわかることだろ?
ま、そのソースにコメント一切なしというなら同情はするが。
html吐いたりするのも、無意味に長くなるからいやだなぁ。
>>457 ボールの概念ナシ、1ストライクアウトって言ったらバッターもそうなるだろうに
>>469 遅レスですが、クラスのイニシャライズ/ターミネートイベントに細工をして、
「暗黙の」インスタンスを使えなくする(使うとエラーになる)Tipをどこかで
見た記憶があります。
497 :
仕様書無しさん :02/04/11 22:11
>>450 AUTOEXEC.BATが5Kありましたが、何か?
>>495 Tipも何も、あったりめーじゃんよって感じの知識だぜ、そりゃ。
たまにいるよな〜 常識並の知識をありがたがるやつって。
>>498 VBは内部の仕組みがわからんでも使えてしまう言語だから、常識並みとは言えない。
(VBオンリーの人間にとっては)
>>498 Tipsなんだから、この程度の内容がふさわしいんじゃない?
動作解ってなかったら気づけないだろうし。
LBound/UBoundが同列なのはどうかと思うけど。(ワラ
501 :
仕様書無しさん :02/04/12 01:52
>>489 世の中には「関数」という概念すら持たないプログラマもいるのです。
いやマジで…
503 :
仕様書無しさん :02/04/12 02:08
COBOLerが使う「サブルーチン」の意味がよくわからない ソフト会社も疲れたので企業の情報システムに入社したはいいが 基幹システム(COBOL)をやらされるはめに・・・ DHW構築って話はどこいったのやら。
コメントに顔文字が。。。 笑いが止まらなかった。 'さあ表示しよう○(^o^)。 Form1.show
>>504 いいな、それ(w
バグってたらむかつくけど
> leap_flag=0; if((year%4)=0) leap_flag=1; 2000年以前にこれ書いてたら、ヤバくないすか? bool Leap ( unsigned int y ) { if ( ! ( y % 4 )) { if ( ! ( y % 100 )) { if ( ! ( y % 400 )) { return true; } return false; } else { return true; } } return false; }
507 :
仕様書無しさん :02/04/12 05:12
>>506 1901年〜2099年はそれで正解ですが、何か?
俺はそれより、その3重ifの方がヤバいと思う。
まあ、一行 ? : で繋げてもいいけどねー。 で、2099年までではなく、2100年超えても、これ有効でそ? 計算の基礎になっている、天文学には詳しくないっすけど。
言葉が足りんかった。スマソ。
>>507 の“それ”は
> leap_flag=0; if((year%4)=0) leap_flag=1;
↑これを指してるです。
Private Sub 件数確認_Click() On Error GoTo Err_件数確認_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "件数確認" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_件数確認_Click: Exit Sub Err_件数確認_Click: MsgBox Err.Description Resume Exit_件数確認_Click End Sub …VBAはよくわからんけど、これはちょっとな〜
>>510 それは、MS製ウィザードが自動生成したデフォルトのエラーハンドラです。(藁
エラー行に飛ばした後、何もせずに、Exit。・・・意味ないやん。
ヘルプ(ドキュメント)のサンプルコードに罵リアント使いまくるは、As New
使うは、MSはいったい何を考えておるんかと小一時間(以下、自粛)
512 :
仕様書無しさん :02/04/12 12:32
>510 これのどこが変なのかよーわからん。 stDocNameに直前で文字列を代入することが変だけど、あとはごくごくふつーの コードだぞ?
513 :
仕様書無しさん :02/04/12 13:34
>>512 Exit_件数確認_Click:
Resume Exit_件数確認_Click
この2行は必要ないやね。
むしろ可読性を下げるだけの駄目コード。
あとコントロール名に日本語ってどうなんだ
わりい、虫はいってたわ >2099年まで利用可能ってコメント書いて、 > >leap_flag=0; if((year%4)=0) leap_flag=1; leap_flag=0; if((year%4)==0) leap_flag=1; FORTRANnerな漏れってバカまるだチンポね
まぁ、なんだ。あまり人を笑えないってことだな。
>>513 > コントロール名に日本語
それも、ウィザード自動生成のデフォルト。(W
(俺も、日本語識別子は嫌い。トラブル原因になりやすいから)
もういっちょ。 strcpy( s.sin_addr.s_addr, "www.yahoo.co.jp" ); ‥勉強やりなおせ。
ずうっと昔だけど ----- main(){ char *s; strcpy(s,"test string"); printf ("%s\n",s); } これを実行したらエラーが出力されました。 コンパイラの問題だと思いますので、いずれ改修されると思います。 -------------- とか書いてある教科書が売られていたと記憶する。
>513 状況がよくわからんからなんとも胃炎が、 出口を1つにする、というポリシーがあれば(もしあれば) それなりに意味があるコードだと考える。「必ず Exit_ のラベルのところに飛ぶ」 そうしておけば修了処理をExit_ のところに書いておけばいい。 日本語を使う件についてもそれでヨシとするなら書くほうの勝手だ。 個人的にはアルファベットの方がいいが、あれはあれで問題が発生しやすい。 わけわかめなスペルで書いてしまう奴も多いからな。 意味の無いエラー処理とやらも 後でエラー処理を追加する可能性もあるだろう。 そう考えると、そう酷いコードでは無い、と思うがな。
>518 char c; c = getchar(); としてある本は結構あったりする。
>>519 正論なんですが、ウィザード自動生成のスケルトン(みたいなモン?)をそのまま
手直しせずに使っちゃう人が多いのよね・・・。
ま、エラー処理がないよりは、いいんですが。
>519 同意。ポリシーがあればね。
523 :
仕様書無しさん :02/04/13 00:32
>>483 あー、それ、俺もよくやります。
後から気づいてこっそり条件式を裏返します。
しかもそのelse節の1行がreturnとかthrowとかだったりして、
「長〜い長〜い通常処理」のインデントがそっくり一段浅くなるというおまけつき。
524 :
仕様書無しさん :02/04/13 01:14
>>523 最初から気づけよ。そんなの修正する羽目になって何度泣いたことか・・・
社内のサーバの中を整理するためいらない物を削除してた時のこと VBのソースがあったので必要な物かどうか判断する為中を覗いたら コントロール名が全て初期状態。 いわゆるText1やLabel1 Label27.Caption = Text15.Text & Text16.Text どれがどれなのやら しかも一切のコメントなし おまけにこのText15とText16はForm1の領域外に隠れていて 全然見つかりませんでした。 どうせ研修か何かだと思って速攻捨てましたよ いい笑い話でした とある建設会社の社内システムと知るまではね
527 :
仕様書無しさん :02/04/13 01:56
Cのソースでセミコロンが全て80桁目に書かれていた。 しかも、いつのまにか自分のソースも前述のように修正されていた。 はぁ。(ためいき) 短期出向した親会社のグループリーダーっぽい人だったんだけど。 何も知らないお姉ちゃんとかに、「プログラムとは何か」とか説いてんの。 へんなソース見て染まらないでね。
528 :
popopo :02/04/13 02:09
何も知らないお姉ちゃん相手に説いている時点で終わってるな。
235で書き込んだmain5000行です。 会議で同じ部署の全員がプログラムなど殆ど理解してないと判明した。 なので月曜から一人で好き勝手にやる予定。 一部上場の超大企業ってもこんなもんか。 全部俺色のソースに変えてから辞めるかな。 俺まだ就職して二年目なんだけどなぁ。
530 :
仕様書無しさん :02/04/13 12:09
>527 >Cのソースでセミコロンが全て80桁目 似たような事を「ソースの標準化」とかいって吹聴してる教科書があったよ。
>>507 うるう年問題で入れ子が深くなるようではちょっと問題ありですよね。
if (year % 400 == 0) return true;
if (year % 100 == 0) return false;
if (year % 4 == 0) return true;
return false;
ひょっとしてうるう年問題はプログラマの質を見る
いいバロメータになるのではなかろうか?
>>527 1行1命令を厳密に守っているプログラムなのね…
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
>>531 うるう年の100年、400年は「うるう年における除外規定」ですので、
「定義通り」なら入れ子、「論理通り」なら入れ子にしない、が正解でしょう。
可読性をどっちで取るかってのは賛否両論ありそうです。
ふつー、
>>532 と書かないか?
(因に、&& は || より優先順位が高いので括弧はいらないんだけどね)
535 :
仕様書無しさん :02/04/13 15:06
int kaunt0; int main() { int kaunt; ... kaunt++; kaunt0 = kaunt; func1(kaunt); kanunt--; ... } void func(int kanut) { ... printf("%d\n", kanut0); ... }
ネタくさいなぁ。
static int leap[400]={ 1, 0, 0, 0, 1, ...(中略).., 1, 0, 0, 0 }; int is_leap( int year ) { return leap[year%400]; } とか書いてしまう私は逝ってよしですか?
538 :
仕様書無しさん :02/04/13 16:37
逝ってよし♥
>534 自分たちでメンテができないから、とかいう理由で 一つの式の中に&&と||を混在させちゃダメっていう 縛りをつけられたことがある。
540 :
仕様書無しさん :02/04/13 17:42
F通でファームの開発した時にはCでポインタ禁止って言われたよ。 氏ね!
>>540 どうやるの?ヒープ一切仕様禁止?
全部グローバルと関数ローカルにだけ変数切るの?ひえー。
542 :
仕様書無しさん :02/04/13 17:55
>>540 それは処理系にバグがあるとか、その他ハードの制限で
ポインタ禁止にしたほうがてっとり早いとかそういう
事ではなくって?
543 :
仕様書無しさん :02/04/13 18:24
ポインタ禁止は言われたことないけど、動的にメモリ確保するの禁止なのは結構あった。
544 :
仕様書無しさん :02/04/13 18:32
>540 あ、折れも以前F通系でファームだったけど ポインタ禁止だった。全部グローバル。 externしまくり。 ポインタで以前、痛い目にあったかららしい。 たしかにそのほうがいいとさえ思えるスキルでした>お客さん。
545 :
仕様書無しさん :02/04/13 18:49
546 :
仕様書無しさん :02/04/13 19:00
>>543 メモリリークは見つかりにくいから、分からないでもないな。
おまえらの会社のクラスライブラリの中で, 最大何段継承しているクラスを見かけましたか? 漏れは4段.しかもprotect変数使いまくりで癒着クラス(鬱) 俺の立場がもう少し上だったら,全員説教だったんだがなぁ
548 :
Pukiki :02/04/13 19:36
public変数使いまくりなら結構見るけどな(w >547
549 :
仕様書無しさん :02/04/13 19:43
>544 ポインタ禁止で全部グローバルって、つまり構造体を全部 外側で static に確保するってこと ? initialization でこけたら、エラーが返せないんじゃ ?
うちのは5段かな。 VCLをパクって機能を減らしC++で書き直したような感じのライブラリ。
>>540 >>543 S社でポインタ禁止、変数は全部グローバル(ループ関係、関数の戻り値取得時のみ許可)、
標準関数一切使用禁止、という経験あり。
で、どうよ? 俺は本当に辞めちゃったよ。
>>551 > S社でポインタ禁止、変数は全部グローバル(ループ関係、関数の戻り値取得時のみ許可)、
> 標準関数一切使用禁止、という経験あり。
なんでそういうルールなのか背景かかにゃ。
配列=ポインタだと思うんだが?
>>555 みたいな勘違いがいるので、仕方なくポインタ禁止、変数全部グローバル
社内ライブラリ以外禁止のルールを作ったんだろうな。
同情するよ。
「ポインタを使うの禁止!」 「ファイルポインタはいいんですね?」 「ファイルポインタって何?」 という会話をしたことがある。 ポインタ禁止の理由:設計者がポインタ理解してないから
日本語ypsコンパイラがifのネスト14段で落ちると怒る奴と ネスト14段程度で落ちるコンパイラ作る奴 あと日本語ypsなんか採用する奴と日本語ypsなんか作った奴 誰が一番の抜け作だと思いますか?
日本語ypsを作ったやつ以外
C言語で文字列使うのってポインタが絡むんじゃねーの? たいていの関数じゃ引数はポインタで宣言してあるぜ?
参照 アド
>>556 まあ、一般的に配列、特に文字列とポインタが、ポインタ定数とポインタ変数の違いで
しかないので「まったく違う」「勘違い」は言い過ぎであるとも思うが、
この違いをわからずに濫用して書くヤツも多いので、「表現としてポインタを使うな」
という規約はわからんでもないが‥。
賛成もでけん。
FILE 構造体も使えんし、もちろん malloc なぞもってのほか、そもそも char * で
受け渡すのが全部ダメとなると。(^^;
>>559 IFが14段もネストしている、そのソースを書いたヤツでなくて?(w
ファーム系でファイル関連は専用の別タスクが いるからファイルポインタはいいとしても キューとかも使えない。ほんと今思うとスキルの無いプロジェクトでした。 新人だったから混乱してて。 あと1関数、1ファイルでしかも関数名が番号だから もう訳が分からなくなってました。
>>564 ASPで作られたシステムでそんな感じのコードをみたことがある。
言語仕様上仕方ないのかなぁと思って見なかったことにしたけどね。
567 :
仕様書無しさん :02/04/14 11:18
>ポインタ禁止の理由:設計者がポインタ理解してないから ナイス! ローカル変数禁止の理由:設計者がコボラーでローカル変数を理解してないから に通じる香りが。
>>536 ネタなら幸せなんだが・・・
こいつは日本語文章もまともに書けん。
お前は日系何世だと聞きたくなる・・・
569 :
仕様書無しさん :02/04/14 12:03
switch文知らない上司がいたな。10年以上前の話だけど。
for (i=0; i<10; i++) { if (i==0) Hoge1(0); else if (i==1) Hoge2(); else if (i==2) Hoge1(1); else if (i==3) Hoge1(2); else if (i==4) Hoge3(); : : (以下、i==9 まで続く) } ウチの課長 (FORTRAN 出身) の10年前の作品。
ヘタクソなコードジェネレタが吐いたコードみたいやね
572 :
仕様書無しさん :02/04/14 13:12
>571 ちょうどYPSがそんな感じ。
戻り値の代わりにグローバル変数使ってるソースコード。 リリース済み...を、見つけてしまった。 戻り値の使い方を知らない人間が作ったものらしく、 同じことをあちこちでやってる。 わかんなきゃ誰かに聞けよ。 だれかリリース前にチェックしてやれよ。 は〜
Yet Pain Sourceの略ですから
>>573 改変が度重なると、応急処置のつもりでグローバル
かませることがあるよ。
その分、コードの老化が進むんで、やりたかあないんだが、
なんせ納期が・・
>>570 飛び先の関数がループごとに異なるのなら、別にそれでもいいと思うが?
・・・と思ったが、よく見るとループの意味ねーじゃん(鬱
>>570 for (i=0; i<10; i++) {
if (tbl[i]==0) Hoge1(0);
else if (tbl[i]==1) Hoge2();
else if (tbl[i]==2) Hoge1(1);
else if (tbl[i]==3) Hoge1(2);
else if (tbl[i]==4) Hoge3();
:
: (以下、tbl[i]==9 まで続く)
}
これならよかったんだろうけどな
579 :
仕様書無しさん :02/04/14 14:39
//何故かデストラクタが呼ばれないので CAdmin *admin = dynamic_cast<CAdmin*>(user); if( admin ) delete admin; else delete user; なんてのがあった。
580 :
仕様書無しさん :02/04/14 14:46
ソースでなくてすまんが 「仕様を予測しろ」と言葉でハッキリ言われてしまった時
「ここはどうすればいいですか?」「いい感じに」 という会話は日常的に行われてます。
>>582 「いい感じに」イイ!(・∀・)ワロタ!
「どうすればいいですか?」なんて聞かれるほうがかわいそう。 普通は「こういう風でいいですか?」とか、「コレとコレならどっちがいいですか?」 とか。 「前髪はどうしますか?」 「どうって...じゃぁ、短めで」 「短めというのは何センチのことですか?」 「...」 こんな床屋いたらどうする?
>>586 前髪はどうしますか?って普通に聞かれるけど・・・。
どういう美容院行ってるの?俺が行くところが変?
自分が考えてることを言葉に出来ない人は、選択することを好む。
if ( 0 == hoge ) ... って定数を前にもってくるおれは変ですか。
590 :
仕様書無しさん :02/04/14 17:18
>>589 変です。Magic Numberは#defineしましょう。
591 :
仕様書無しさん :02/04/14 17:31
>>590 それはちょっと論点がズレてないかい?(^^;
592 :
仕様書無しさん :02/04/14 17:42
COBOL GOTOの嵐
>>586 立場を逆転するなよ。
その場合、俺らが床屋でユーザーが客だぞ。
つまり、
「前髪はどうしますか?」
「てきとーに」
「もみあげはどうしましょうか?」
「かっこよく」
「頭は洗いますか?」
「そんな感じで」
という受け答えをされているようなもんだぞ
客の要望をはっきりさせるのも仕事のうちです。
客の要望をハッキリさせるのが仕事に含まれる場合と、 そうでない場合があるけどな。 要求仕様の洗い出しも含む場合は、別途見積もりさせて頂きます。
596 :
仕様書無しさん :02/04/14 19:23
>>589 定数を前にすることで、"==" を間違えて "="にしてしまったときに
コンパイルエラーになる...と何かに書いてあった。
597 :
仕様書無しさん :02/04/14 19:26
>>593 床屋だと普通じゃない?
漏れが床屋行くときは、そんな感じだけどなぁ。もちろん、
どんなふうになっても文句言ったりしない。これって嫌な客?
598 :
仕様書無しさん :02/04/14 19:27
そんなの、if (i == j) みたいに両方変数だったら全然意味ないじゃん。 alias rm rm -i なんかと同じで、却って危険な「安全策」だよ。
>>596 今のコンパイラなら、警告レベル上げたほうがはやい。
600 :
仕様書無しさん :02/04/14 19:28
>>568 確かにな(ワラ
って藁えんわー。タイムリーすぎて
文句言わなきゃいいんじゃないかなぁ。 完成直前になって想像してたのと違うとゴネだして、 やり直せって言い出すのが嫌な客。
おまかせなのにストレートパーマかけなかったとかモヒカンが良かったとか カットのみなのに洗髪して無いとかそんなんばっかり その上\1500程度をゴネて値切ろうとするんだよ
>>597 よく「どんな風になっても文句は言わない。お前の好きなようにやれ」と
命令出しておきながら、後になって好き勝手やっただの、人の意見を
(出してもいねーのに)聞かないだの愚痴る部長や課長がいるが・・・
つまりは、そういう人間ってこと?
>>597 後になって文句を言わなければそれで良い。
後で文句を言ったらDQN。
>>598 >alias rm rm -i
ファイル名が正しいかどうかなんかいちいち確認してないけど、
rm *~ とかやろうとして rm * でまちがって return 押してしまった時なんかには
有効だと思うけどどうよ?
>>605 他のマシンを使ったときにうっかり全て消してしまう罠。
玄人はとりあえず alias/which rm で確認。 rmの前に echo rm -i xxx で確認。 最後にrm。 体が覚えてるからどこに行こうが問題ない。
いちいち確認するなんて、うざくて早晩条件反射で yを押すようになるのは必定。 「rmをundoできるようにする」が真っ当な方法。 その意味で、「Win/Macの漁れるゴミ箱」は、ベターな方法。
脊髄反射で y を押す前に体が固まるようになれば、君も一人前だ。 それまではrootあげない。
`y'キーを他のキーより重くすればいいのでは? PC-98x1のSTOPキーみたく
亀レスですが・・・
>>596 昔のCマガの記事にあったと思います。
>>596 私自身は、Cはよくわかりません(仕事で使わないし)が、「枝葉末節的な小細工を
弄する人は、本質的な部分でより大きなミスを犯す」という意見もあるようです。
(確か、別板、別スレで、過去複数回上がっているかと・・・)
>>596 そんなプログラマが俺のとこに外注で来たら
即座に帰らせるか単価切り下げ交渉だな。
そいつが書いたソースコードの確認と書き直しの手間を考えれば当然だ。
>>613 コーディング規約に含めてなければ文句言う筋合いでもないような。
615 :
仕様書無しさん :02/04/15 21:38
>>614 プログラマを時間単価で使う時は値切る理由を常に考えているものだよ。
コードが変なのは格好の理由になるよ。たとえ運良く動いていたとしてもね
rm *~は ~を打とうとして手が滑り、Enterしてしまうという罠。
>>615 そんな貧乏くさい会社聞いたことない。
おれが幸せなだけか?
618 :
仕様書無しさん :02/04/15 21:48
if( a==1)とかfunc( arg)のように "("の後ろにスペースを置くコーディングスタイルって なにかいいことあるの?
619 :
仕様書無しさん :02/04/15 21:54
617は幸せかもしれない と言ってみるテスト
>618 その方が()の中がよみ易いと感じているのでは。 俺は、その手のコード見つけたら整形しちゃうけど。
621 :
仕様書無しさん :02/04/15 22:01
そういえば Berkley版のコーディング規約の和訳はどこかに ありませんか?
>>618 いるよな、たまに
漏れは
if( a == 1 )とかfunc( arg )
と、常にスペースを空けるように心がけているが。
あと、最初の職場の先輩に叩き込まれた癖で、 a = -1; というコードは a = (-1); と括弧でくくり、マイナスであることを(見る人にとって)明確に伝わるように、と されて・・・9年目だが未だに守っていたりする
624 :
仕様書無しさん :02/04/15 22:22
>>622 プロポーショナルフォントでソース表示している環境では
スペースを入れないと()が見えにくくなるという罠
625 :
仕様書無しさん :02/04/15 22:23
>>623 それは可読性を高める上で正しい判断です。
a =- 1が今のa -= 1 意味だった古代の名残?
なんのためにびすとろがなくなったのかいみがわからないの
>>627 月刊PC-DIYのビストロDIYなら継続中ですが何か?
俺は制御文の場合は if (a == b) ; の様にして、括弧の前にスペース入れてる。 関数の場合はスペース無しだが、コンマの次にスペース入れてる hoge(a, b);
スマの事じゃねえのか?
>601 そう言わせないように画面イメージや帳票イメージ作って客の 承認もらっとくんでは?
633 :
仕様書無しさん :02/04/15 22:59
>>601 外部設計書の承認はちゃんといただきましたか?
ぷろじぇくとかんりのきほんですよ。
#define BLANK1 " " #define BLANK2 " " #define BLANK3 " " ... #define BLANK60 " " #define ZERO1 "0" #define ZERO2 "00" #define ZERO3 "000" ... 初期化のためにmemcpy()したり、ゼロパディングしてるんです。 もうね、アホかと。バカかと。 金融系ももう終いだね。
承認や契約を守ってくれるような客だけだと楽でいいよなぁ。
無理を聞いてやらないと契約切られてしまうと。 現場はぜひ切ってくれと考えている罠。
自分で関数作っちゃダメって言われた…。つまり、 main() のみ
>>635 ソンナやつらは居ない。もしそうだとしてもあとからクレームの山。
641 :
仕様書無しさん :02/04/16 01:34
void main(void) { real_main(); } void real_main(void) { int a,b; : : (以下略) なぜこんな事をしている・・・意味不明
642 :
仕様書無しさん :02/04/16 02:00
↑ ギャハハ。笑った。
実話です。D社委託会社C社は女の家を盗聴しろと指示し、 その盗聴テープを現場でばらまいた。その他にM社委託Mシステム会社 は、女風呂の盗撮写真を現場に貼りつけて仕事 をしている。生保。
644 :
仕様書無しさん :02/04/16 02:13
端末エミュとUnixサーバの相性で仕方なく80桁キープしてると8タブつらすぎ。
げ、百年前の書き込みにレスしてしまった。鬱。
646 :
仕様書無しさん :02/04/16 02:19
class Hoge{ public Hoge(){} public void init(Hage val1,Hige val2...){/*実質初期化*/} } すまん、なんでこんな事をするのか教えてくれ…
647 :
仕様書無しさん :02/04/16 02:34
642サソ 笑ってくれてありがとね。 もう一つついでに unsigned int XOR(unsigned int a, usngned int b) { unsigned int c; c = a ^ b; return c; } 何故、関数にするんだ? 関数にしなくても見れば判るだろ。 ちなみにうちではこのほかに unsigned int OR( unsigned int a, unsigned int b); unsigned int AND( unsigned int a, unsigned int b); っていうプロトタイプ宣言をしょっちゅう見かけます。
>>647 VB使い、もしくはBASIC上がりが書いたっぽい?
649 :
仕様書無しさん :02/04/16 02:40
最近見たアホ。 public static int atoi(String val){return Integer.parseInt(val);} public static String itoa(int val){return String.valueOf(val);} public static String strcat(String val1,String val2){ return new StringBuffer().append(val1).append(val2).toString(); }
650 :
仕様書無しさん :02/04/16 02:43
↑ 痛すぎるね
651 :
仕様書無しさん :02/04/16 02:44
>>646 コンストラクタ、Hoge()の一つだけだった?
>>646 コンストラクタで例外を投げるとやっかいなのでそうすることはままある
653 :
仕様書無しさん :02/04/16 02:50
>>651 あい〜。
オブジェクト生成に必要な情報が集まってないのに、newしたがる
馬鹿がいるんですよ…
メンバフィールドの整合性維持(インスタンスがあれば、そのメンバ
フィールドは必ず整合性が取れている状態のうちのいずれかである事
を保証するようにコーディングすべき)が、クラスの存在理由の一つ
だと思っているんですが…
>>652 それはどういうことですか?おいらが無知?
>>625 あ、Cではそうだな。実はVBでも守っているという罠(W
>>655 あー、C++ですか。りょうかい。
このコードはJavaです。Javaはコンストラクタ起動前にインスタンス
生成自体は終わっているので、整合性崩壊なんかおきないっす。
exceptional c++よんだか?
>>655 >このコンストラクタ内で例外をさせない,という筆者の方針ですが,
>わりあい反発を食らうことがあります。
なんて書いてるよ。C++の意味が半減するじゃん
メモリリーク作成言語のC++は、早く消えてほしい
new Hoge[100]、の時とか。
Cでソース書いてたんです。そしたら先輩が「新しくスタックに積めろ」とか言うんですよ。 何のことかと思ったら、変数宣言のことを「スタックに積む」と言ってるんです。 もう、馬鹿かとあほかと…と思ったのですが、もしかして、英語では変数宣言をスタックに積むとか言うのでしょうか? 教えてサミアドン!
662 :
仕様書無しさん :02/04/16 16:31
>661 auto 変数つう意味なら、確かにスタック上に確保される。 けど、普通Cのコーディングでそうは言わない。
663 :
仕様書無しさん :02/04/16 16:46
>661 その先輩は関数呼び出しも「スタックに積む」だな。
機械語に落ちたコードを見て「自動変数はスタックにつむんだ」 って判断しているだけだね。しかしC言語の規格では 自動変数はスタックにつまねばならない、という規定はない。
>>661 「積む」の命令形は「積めろ」ではない。
その先輩、日本人なのか?
>664 まぁそうだね。 ただ単にそれが実装し易いというだけだ。
スタックを詰めろ、なら、GCカモ(スタックにGCってのもアレだが)
668 :
仕様書無しさん :02/04/16 18:11
#define BUF _T("\0\0\0\0") : TCHAR *gBuf = { BUF, BUF, : } : int a() { char *p=NULL; while(1){ if (p == gBuf[i]){ lperr = _T("最適化コンパイルしないで下さい。"); goto end; } : p = gBuf[i]; i++; } : } 確かこんな感じ。 C++だからメモリリーク恐かったのかな?
669 :
仕様書無しさん :02/04/17 01:10
>>646 コンストラクタと初期化を別にするのは珍しいことじゃない。
・・・って思ったけど、コンストラクタではinit()メソッド呼んでないし。
確かに変。
670 :
仕様書無し :02/04/17 01:16
>>661 最近「行間を読めないプログラマが増えてる」って噂は本当なんだね。
671 :
仕様書無し :02/04/17 01:18
<補足> 661=行間を読めないプログラマ
>670-671 gccで行間を有効にするオプションスイッチは何ですか?
行間さんの行動は読めません
「アセンブラレベルでみて正しければいいんだ! オレはちゃんとアセンブラレベルでちゃんとなっているのを 確認しながら組んでいるんだ!」 アセンブラレベルで正しければどんなソースを書いてもいいわけ? そもそもそれならなんでC言語なんか使うわけ?最初からアセンブラで書けよ。
行間を読んだら「そんなことは言ってない」と蹴られる罠 どうあがいても最終的には責任を押し付けられるのです
677 :
仕様書無しさん :02/04/17 15:09
>676 光景が目に浮かびすぎる……(涙
>アセンブラレベルでみて正しければ コンパイラやOSを変えれば、たちまち破綻する(w
たくさんレス、ありがとうございまふ。 さりげなく確かめてみたら、単なる変数宣言をスタックといっているようです。 「このスタック、使ってないから削除ね」「この、int hogeのことですか?」「そう」 おまけに、それが新人にも伝染してたんです。 「スタックはこれでいいんですか?」(訳:変数はこれでいいんですか?) あと、CVSを完成したソースを納めるものだと思っていて、ソース完成後にしかコミットしないんです。お前本当に10年選手かと。 ちなみにその先輩の関数は5000行以上あります。入社一ヶ月ですが、テックビーイング買ってきます。
680 :
仕様書無しさん :02/04/17 16:18
>>675 アセンブラレベルで正しくて、Cレベルで間違ってるって事?
それとも、アセンブラレベルを考慮して、Cレベルで変な書き方してるって事?
前者ならコンパイラのバグだと思うが、後者だとありえないでもない。
初心者にはお勧めできないが、特定のハード限定で、そんな汚い書き方をする場合もある。
>>679 > あと、CVSを完成したソースを納めるものだと思っていて、
> ソース完成後にしかコミットしないんです。お前本当に10年選手かと。
え?俺のとこは完成していないソースをコミットした奴は死刑だぞ
682 :
仕様書無しさん :02/04/17 16:49
必要性の問題ですな。 意味もなくインラインアセンブラを使いたがる人はいます。 何してるのかと思えば、memcpyでいいじゃないかと言いたくなるようなことだったり。
>680 徳に必要もないのに 特定のアーキテクチャに依存した書き方をしてある。 しかし、特定のハード限定で汚い書き方をするにしても、 #asm使えばいいんでないかいとかせめてコメントしとけよとか思う。
>>680 >前者ならコンパイラのバグだと思うが
そうとも限らないだろ。動作未定義なコードをどうするかはコンパイラの勝手だよ。
a[i]=i++; とか。
>>681 バージョン管理ソフトを知らないということだと思われ。
>>681 は、「コンパイルも通らないような未完成品」と言うことが言いたいのでは?
製品としての最終版と言う意味ではなくて。
自動変数を宣言=スタックに積まれる は意識しておいた方がいいと思うな。 世の中には巨大構造体(しかも配列)を自動変数で宣言する 大馬鹿者がいるくらいだし・・・
>>687 それと「自動変数をスタックと呼ぶ」とは全然かんケー無いぢゃん。
>>686 コンパイルとおらないのを収めるアフォがいるのか?
それだったらVersion管理というか日々の業務管理だな。
>>690 コンパイルに通るくらいで「完成したソース」とか言っちゃうのか?
そういう感覚があってもいいけど一般的ではないと思いたい。
692 :
仕様書無しさん :02/04/18 00:20
C言語のプログラムで、構造体をファイルに出力。 そのファイルを、Javaのプログラムで読みこむ。 そこまではいい。 読みこみ側のJavaプログラムでは、1レコードを全てひとつの文字列フィールドに読みこむ。 値の参照は、substringで「何文字目から何文字目」で読み出す。 おかげで、フィールド1箇所の桁数が変わっただけで、プログラム全域に渡って修正が。 もうね、アホかと。バカかと。
693 :
仕様書無しさん :02/04/18 00:22
694 :
仕様書無しさん :02/04/18 00:31
>>692 >そこまではいい。
良くない。XMLとかそういう類の構造化フォーマット
使っとけ。でないと後で死ぬ。
>>692 何でソンナ仕様なの?
どんなアプリかサラッとおしえて
696 :
仕様書無しさん :02/04/18 01:08
>>687 > 自動変数を宣言=スタックに積まれる
> は意識しておいた方がいいと思うな。
「スタックに積む」というと、「この自動変数はサイズでかいから、
このブロックに入るたびに積むためにコストがかかる」と思って
しまう人がいるね。
もちっとビシっとくる表現ないかなぁと思う。
>>695 設計者がCOBOL屋、なのでは。
なんかそんな気がする
698 :
仕様書無しさん :02/04/18 01:13
>>681 > え?俺のとこは完成していないソースをコミットした奴は死刑だぞ
うちでは、
ソースいじる → なんとなく動いている → commit →
cvsweb で side by side で diff とって印刷 → レビュー →
指摘された点を修正(*1) → 単体テスト → commit → cvsweb を見てレビュー
→ 必要があれば *1 へ戻る
だな。
commit log には「未レビュー」とか、「レビュー指摘事項反映」とか書く。
別に開発中 branch 切ってもいいんだけど、なんとなくこれでうまくいってる。
これってどうかね?
>>698 少人数ならそれでよいかも。
って漏れのとこもそんな感じ。少人数だからね。
う〜む、よく考えると、人を選ぶかもしれない。
>>698 ちなみに単体テスト前にレビューするのは、レビューの指摘を
確実に反映させるため。単体テスト後のレビューで大きな
修正を要求すると「もう単体テスト終わってるので…」と言われ
ちゃうから。
701 :
仕様書無しさん :02/04/18 01:20
>関数は5000行以上あります。 100行以内に書けないやつは、たいてい無能だな。 5000行なんて論外。おそらく、そいつ、5000行も書けることを 自慢に思っているんだろうな。それって借金が何億もあるのを 自慢している自己破産一歩手前の芸人なんかと変わらないね
702 :
仕様書無しさん :02/04/18 01:22
>>701 おれもそうおもう。
あと同じような処理を繰り返してコピペしてあって10000行とか
勘弁してくれ。
うちの上司、あ、VBなんですけど、関数が50行以上あったら 怒るんです。長すぎって・・・・
705 :
仕様書無しさん :02/04/18 01:26
5行の関数をたくさん作ってあげれば? そっちのほうが理解しにくくなる。
707 :
仕様書無しさん :02/04/18 01:30
VBなんですけど。 If文のネストが多すぎ。 7つもネストしてるって… ( TдT)
708 :
仕様書無しさん :02/04/18 01:34
>>705 あ〜、俺も関数は1画面以内って決めてるよ。ほとんどの関数は20ステップ以内。
一見して処理内容が把握できない関数を作ると、自分が後で苦労するから。
>>707 CASE使うかLogic逆さまにしろよ
711 :
仕様書無しさん :02/04/18 01:43
>>707 まあ、VBには continue がないし、条件式の短絡評価もないから、ボーっと組んでるとネストしがちではあるな。
712 :
仕様書無しさん :02/04/18 01:45
>>692 設計がアホなのは確かだけど、なんで桁数を定数で持たない?
それも相当間抜けだ。
714 :
仕様書無しさん :02/04/18 01:50
>>712 と、いうよりはまともなreader classを作れば
「桁数が変わっただけで」「プログラムに全域に渡って」
修正が発生する訳がない。
なぜかみんな見当違いなことを云っていますね。
715 :
仕様書無しさん :02/04/18 01:50
>>706 >5行の関数をたくさん作ってあげれば?
>そっちのほうが理解しにくくなる。
機能的に5行の関数に分割したほうが理解できる場合は、
そうしたほうがいいかも。
逆に、100行くらいでも関数の目的として分割不可ならしょうがないんじゃない?
しかし、このくらいが限度だろーな。
10000行の関数作って自慢するヴァカには、水子銀行の応援に逝ってもらいたいもんだ。
716 :
仕様書無しさん :02/04/18 01:56
>>714 同意。
まず、ファイルの読み込み時点で適当なクラスに値を保持させるってことね。
多分、ファイルに書き出した形式を引きずって実処理をやってるんじゃないかな?
ファイル文字列をそのまんま変数に取り込んで、フィールド位置指定してって感じで。
っていうか、そういうPGを見て会社辞めたくなったから
>>692 は書き込んだんだと思うけどね。
>691 「コンパイル通るくらい」っていう程度にもよると思うけど、 プロジェクト期間が1年あったら、最終段階まで一度もcommitしないんですか? 私は日々の作業の区切りでcommitしていくのが普通だと思ってたんですが。
>>717 つーか、他モジュールに影響するかどうかによるんじゃない?
そこがちゃんと動いてくれないと他の部分がテストできない部分だったら、ちゃんと
単体レベル通した物をcommitしてくれないと困る。逆にモジュールとして独立して
いるとか新規の場合は、とりあえずコンパイル通った時点でcommitしちゃう事もある。
キリが悪くても、コンパイルすら通らないbrokenな状態でcommitして帰っちゃうのは
他のメンバーが困るので勘弁。(つか、それやったら強制backoutだ)
ちなみにJavaだとクラス構造依存が無いので、本当に時間がない時はガワ(メソッド
定義)だけ作ってcommit、「後でちゃんと動く奴出し直すから、今回はこれでコンパ
イル通るまでって事で勘弁してちょ!」とかやってた。
>703 同じ処理をコピペして200個くらいの同じ処理がある場合はどうですか? 本体をひとつにして引数参照型にしよう、と提案したら却下されたYO!
>719 その却下した奴を徹底的に罵倒するな。殴るかもしれん。 というか、どういう理由で却下したんだ、そいつは。
>720 719ではないが ・動いてるからいーぢゃん ・参照型が理解できない ・実はその200あまりの処理が全部びみょ〜に違う
全部微妙に違うのを一般化できないのは無能の証
>動作未定義なコードをどうするかはコンパイラの勝手だよ。 > a[i]=i++; とか。 なぜ誰もこれに突っ込まないのだ
>>722 正論。
しかも、苦しむのは、大抵、無能な人間本人ではなく、周囲の別の人間。(とばっちり)
725 :
仕様書無しさん :02/04/19 11:01
>>721 実は全部同じ仕様なんだけど、
200人で手分けして作ったから、微妙に違ってしまった。
というのが真実だったりして
すでにgotoとかグローバルの状態変数とかが入り乱れてて 一般化するのが不可能、もしくは、かえって可読性を落とす罠。
作った本人をソースコードに添付して保存しておきましょう。
「実はコードジェネレータで200の関数つくっているんですよ。 ほら、うちって行数で計るじゃないですか」という罠
>729 ディモールト!! "動けばよい"の見本のような処理だな(w
731 :
仕様書無しさん :02/04/20 00:31
>>723 え?どこをつっこむの?
a[i]=i++;
だと未定義で正しいと思うが。
732 :
仕様書無しさん :02/04/20 00:37
>>729 商用のPGでもっとひどいコード見たことあるぞ。
うちの会社の先輩だけど。(藁
うちの辞めた先輩。 コード書きかけでコンパイルすら通らなかった…。 元気かな。
734 :
仕様書無しさん :02/04/20 00:52
昔、組み込み系の営業やってて、客先でROM交換することになった。
で、本社から宅急便でROMもらって、高速で1時間のところにある客先に
逝ってROM交換したら、電源投入してもうんともすんともいわなかった。
ドアホが、電源投入チェックせずにROMだけ送りやがった。
>>729 のソースの10^15倍程度は、ひどいソースだろーなと思ったよ。
End Select 'オープンしたファイルを閉じる End If End If End If End If End If End If End If End If End If End If Else 萌え
思い出しても腹が立つから、言葉がおかしかった。 スマソ
だから、あれは、w3cのhtmlじゃねーから、実体参照も、 キャラクタセットも、UNICODEではないんだよ、きっと。 たぶん、「Shift-JIS似のnttコドモ独自コード」が指定されてる。
>>737 ああ、それは悪名高いよ(藁
これでは数値文字参照をしたときにどういう文字が出てくるのかわからない。
誰かテストした人はいないのでしょうか?(藁
コドモが間違えたのかアクセクが間違えたのか...。 誰も指摘しなかったんかのぅ。 ところでなんでK帯屋ってShift_JIS好きなんだろ。 WebじゃShift_JISを毛嫌いする人もいるでしょ。 漏れも最近じゃUTF-8しか使ってないなぁ...。
多分カナが 1byte で送れて、データ量を圧縮できるからと思われ。 そりゃまあ、1page あたりが 2KB とかだからなあ。 もともと i-mode では Shift-JIS 以外は認めない、んじゃなかったっけ。
Shift_JISもGIFも嫌いなんだけどなあ。 WAP化に期待するか。
UNIXとかMac屋の曲がった根性が嫌いなんで、むしろEUCが滅んで欲すぃ あいつら紅茶紅茶ってうるせーから戦術で勝って戦略で負けるんだよ
745 :
仕様書無しさん :02/04/22 02:43
道具としてMacは秀逸だと思うがなあ。
俺はウニコードが滅んで欲しい。 何が悲しくて更に混乱を巻き起こそうというのだ・・・。 全面移行できるという話はどこへ・・・。
>>743 紅茶って・・・もしかして、Java?
ほら、JavaTeaってあったし。
漏れはウニ好きだ。
多国語ドキュメントを書けるという点でウニの存在は認めたいな。
日本のアプリで日本語とハングルを混ぜて打てたりするのはウニのおかげ。
EUCはいらんと思う。JISは打てる文字種がウニに遠く及ばないのに
KI/KOの問題があるからいや。SJISはM$のニホイがするからいや。
漏れのデフォはUTF-8に改行コードはLF、BOM無しだな。みんな道南?
>>747 漏れは紅茶紅茶を「ゴチャゴチャ」と読んだが。
750 :
仕様書無しさん :02/04/22 09:04
751 :
仕様書無しさん :02/04/22 09:16
752 :
仕様書無しさん :02/04/22 09:25
>>748 たしかにUnicodeは便利だと思うけど、
「横棒」文字だけで何種類もあるとか
「空白」文字だけで何種類もあるのを見るにつけて、
これらを正しく区別して入力する方法は果たしてあるのかと。
FULLWIDTH TILDE と WAVE DASH とかなー。
転職先が決まってからだけど。 CTRL_ID = 1 CNTL_PHASE = 2 CNTRL_TYPE = 3 Controlの省略形がバラバラ 上記3つは同一人物のコード内にある …でもこのスレ見てると、藁って許せるような気がしてくる罠。
>>731 無知ですまぬが、a[i]= i++; って、
ほんとに a[i]=i, i++; だとは保証されてないの ?
ANSI のどこに書いてあるの ?
>>752 たしかになー。
横棒はハイフンorマイナス、ハイフン、ノンブレークハイフン、マイナスを、
空白はスペースとノンブレークスペースくらいは使い分けてるつもりだけど。
おかげでディスプレイにコード番号書いた付箋が貼り付けてある(藁
Unicodeには他の文字コード体系との互換性のためだけにある文字とかもある
から、それらは極力使わない。富士通系の「1.」とかいう文字とか。
改行までUnicodeラインセパレータ(U+2028)とかUnicodeパラグラフセパレータ(U+2029)とか
厄介なものが出てきてんだよな。
>>755 に追記。
Unicodeには半角の円(¥)記号に独立した番地(U+00A5)が与えられてるから、
円記号がバックスラッシュに「化け」たりしなくてイイ。
円記号のつもりでバックスラッシュを使うなってことやね。きっと。
バックスラッシュが円記号に化けるのは当面避けられそうもないが。
さらに追記。WAVE DASH (U+3010) は、コード表に This character was encoded to match JIS C 6226-1978 1-33 "wave dash". Subsequent revisions of the JIS standard and industry practice have settled on JIS 1-33 as being the fullwidth tilde character. って書いてあるべ。あまり新規で使うものではなさげだなも。 wavy dash (U+3030) はもっとうにょうにょしてはるが、出典がわからへん・・・。
>756 ところで、現在Shift_JISでの'\'をUNICODEの 何にコンバートすべきか決まりましたか?
>>758 Shift_JIS の '\' は、バックスラッシュの意味で使ってる可能性も高いので
Unicodeに変換するときは U+005C にしないとトラブると思う。
761 :
仕様書無しさん :02/04/23 10:27
Javaの話になるんだけど… HttpServletRequestからJISAutoDetectで「£」とか「¢」とかを拾って EUCなDBに格納すると化けるんだヨ! MS932コードページを使うかららしいんだが、ホント勘弁してくれって感じ…
スレ違いすまんかった。
>>759 有難う。しかし、これはおかしくないか ?
> a[i] = i++;
>i++は副作用をもたらす。つまりiの値を変更する。
>式の他のところで iが参照されているので、このことが未定義の振舞いを引き起こす。
ANSI C 3.3 は、
Between the previous and next sequence point an object shall have
its stored value modifed at most once by the evaluation of an
expression. (A)
Furthermore, the prior value shall be accessed only to determine
the value to be stored. (B)
とあって、ここの注に未定義 undefined と指摘してある例
i= ++i + 1;
は確かに (A) に反する (i が ; までの間に2回modifyされる)。しかし
a[i]= i++;
は、i に代入している訳ではなく、iのmodifyは一回だけである。
しかもそれは、i の value が obtain された後と保証されている。(3.3.2.4)
だから、*(a + i)= i; i++; と同じ意味になる筈だと思うのだが。
この解釈が間違っているのなら、是非指摘してほしい。
# (a + i) == &i の場合とかの aliasing の話は一応別として
*(a + i)も *(i + a)もおなじで、 a[i] は i[a]と同じ。 んでもって a[i] = xx; における a も i も(共に配列名ではないとして)、共に左辺値を構成する 式の要素。 というのをおいといて、 ANSI C 3.3で言いたいのは、「modifyが二回以上だとだめだ」じゃなくて 「副作用を伴ったオブジェクトを、シーケンスポイントをまたがずに、 左辺値を構成する式でも使用すると、その動作は未定義」といってるんでないかね? modifyが二回は、もちろん、どっちのmodiyも左辺値となりうるのでだめ。
議論用スレ新規作成またはプログラム板移動を提案。 読んでて楽しくなくはないんだが、ここは「この会社辞めようと思ったソースコード」スレだし。
>>729 >'この辺のアルゴリズムの仕組みは自分で考えてください。
>'説明し切れません。
コメントスレ逝きカモ(;´Д`)
768 :
名無しさん@お腹いっぱい。 :02/04/24 07:28
Spikeの書いたコード
769 :
仕様書無しさん :02/04/25 02:28
javaで。 try { //実業務 } finally { try { // リソース後始末 } catch (Exception e) { throw new RuntimeException(); } } ・・・実業務内のexceptionは帰ってこないの?
その上のネストに飛ばされるんだろ お前大丈夫か?
771 :
仕様書無しさん :02/04/25 02:46
リソース後始末がうまくいけばね
772 :
仕様書無しさん :02/04/25 02:56
まぁ、馬鹿みたいに例外飛ばしまくるなということだね。
774 :
名無しさん@お腹いっぱい。 :02/04/25 07:04
例外飛ばすのは重い処理だからの。ただ、例外をコンソールにはきまくっている ○-○(以下省略)も問題だが(藁
CGIが重いのでちょっとみてくれと言われた。 送られてきたソースコードの先頭には、こう書かれていた。 #!/bin/sh wc -l してみると、11000超えていた.......。 : : : あのなーっ!!!!!!!!
>>769 つーか
catch (Exception e)
を安易に使うやつの気が知れん。
>>776 つーか、普通
try {
} catch (Exception e) {
throw new RuntimeException();
}
こんなことするの?
>>777 同意。
自分のバグをランタイムのせいにしてるみたいね。
メソッドが投げる例外を定義したくないから? どちらにしてもクズコードだな。
精液と例外はめったやたらに飛ばさないこと
でも、あほみたいに例外定義されると泣ける。
とりあえず俺ルールでは、設計上、実装上、 継続不可能などうしようもないエラーの場合にだけthrowすることにしている。 だからといって他人が、たいしたことでもないのにらい外をthrowしているのを みても、とりあえずまあ、wrapするかそこだけcatchすりゃあいいんだ、と思ってる。 あくまで俺ルール。
783 :
仕様書無しさん :02/04/27 05:35
>>783 トリッキーなコードだね。
少々早くてもそんなコード書くヤシとは仕事したくないな。
>783 つか、そういうコード、Effective Javaで思いっきり けなされてた記憶があるが。。。
>>782 俺ルール作らずにEffective Java読め。
javaみたいな糞言語使ってネエヨ
>>783 だめだYO!
ArrayOutOfBoundsExceptionが起こる前に
違う例外が発生したとしたら・・・。
少なくとも、単にループを例外処理に置き換えるだけだとアウト。
実際にそういう処理を使って記述されていた
フレームワーク使わされていてバグが出てひどい目にあったことがある。
>>783 だめだYO!
ArrayOutOfBoundsExceptionが起こる前に
違う例外が発生したとしたら・・・。
少なくとも、単にループを例外処理に置き換えるだけだとアウト。
実際にそういう処理を使って記述されていた
フレームワーク使わされていてバグが出てひどい目にあったことがある。
790 :
仕様書無しさん :02/04/28 00:37
>>788 どういうコードを想定してる?
「違う例外」が発生したとしても対処することは可能では。
「違う例外が発生する可能性があるのに、ArrayOutOfBoundsException
にしか対処していなかった」としたら、その「フレームワーク」とやら
の作者が単にまぬけなのであって、
ループを例外処理に置き換える云々の話とは独立では。
791 :
仕様書無しさん :02/04/28 00:40
JavaScriptで、件数の一定しない明細のチェックボックスを調べるのに そういうコード書いたことはあるけどね。
793 :
仕様書無しさん :02/05/02 11:37
動きゃいいよ
動かねーだろが。
795 :
仕様書無しさん :02/05/02 12:37
人の名前を騙ってソース書くのヤメレ 後から保守依頼回ってくんだよ!!
>>795 おれの書いたコードはPGP署名が入ってるよ。
797 :
仕様書無しさん :02/05/02 15:21
「変数名は全て大文字、アンダーバー使用禁止。」 ほーう。
>>797 「文字数は8文字まで」
だったりして(藁。
あ、書き忘れてたが
>>798 で思い出した。
「変数名は16文字まで」
う〜ん。 8文字よりはマシだけど、でも制限あったのね。
801 :
DELザク :02/05/02 16:48
try A := intToStr(B); exsept ShowMessage("数字を入力してください"); end:
802 :
仕様書無しさん :02/05/02 17:06
長すぎるのもウザイから16文字もあれば良いでしょ。 for( int BackGroundTextureArrayIndex=0 ; BackGroundTextureArrayIndex < m_BackGroundTextureArray.size() ; ++BackGroundTextureArrayIndex ) { (略 }
型名長いのはかまわんから、せめてインスタンス名くらい短くしろと言いたい
処理の内容が全部書いてある関数名とか。
伝統に忠実に変数名は5文字が基本でしょう。
ラベル名や変数名6文字まで、というのが昔はよくあったな。 8バイトで1つの変数、ラベルを表現していて、 アドレス2バイトを取ると6バイトしか名前の領域がない、と。
creat()
808 :
組み込み屋 :02/05/03 03:20
とある番地がどのファイルなのか調べようと、 久しぶりにシンボルファイルを見て仰天。 hoge 0068030 入力された数値の範囲確認 0068032 hoge_001 0068040 ここに来たらエラー!! 0068048 : 以下、ところどころにアドレスが振られた日本語が… 慌ててアセンブラのマニュアルを見ると「ラベル名は半角256文字まで 記述できます。英数字、記号、漢字が使用できます」とあった。 ;ちなみに日本語ラベルは意図してつけたのではなく、 ;外注オヤジがコメント記号つけ忘れたものと判明…
ちょっと仕事を休んでいたんで、前の勤め先からの依頼で Servletの小さな修正を1週間くらいで引き受けたんだが、 国に帰ってしまった中国人プログラマの書いたコードに愕然。 1メソッドが300行を越え、 開いたデータベースコネクションはほったらかし、 使ったストリームも開きっぱなし、 例外処理のcatch節の中は空っぽ、 変数のスコープがが大間違いでリクエストが集中したら ユーザーごとの処理が混ざる、 等々。 今まで苦情もなく動いてたのが奇跡としか思えない駄目っぷり。 納期を大幅に延ばしてもらって修正にあたることになったけど、 腐った残飯からまともな料理を作れと言われてるような気分で、 吐き気をこらえながら仕事をしてる。 でも、このコードが問題にならない会社だってのが 一番の問題なんだよな、ここ。 辞めてよかった。 これ終わったらもう二度とちかづかねえ。
>809 てゆーか、仕様書が甘かったんじゃ? どっちにせよそーゆー会社とはお付き合いしたくないが。
811 :
仕様書無しさん :02/05/03 05:42
できましたー。といってコミットしてきたのが。 #include "/usr/home/bakamono/proj/module/include/xxxx.h" というコード山盛り。
>>811 それはすごいなぁ。うん。
htmlにローカルのpathで指定してるのを思い出したよ。
>>810 ああ?
仕様書?
ある訳無いじゃん、そんなの。
本人は仕様書だって言い張ってる画面イメージだけだよ。
あんなのが仕様書ならこの世の中にSEはいらんな。
>>809 > 腐った残飯からまともな料理
この例えいただき
815 :
仕様書無しさん :02/05/03 11:12
>できましたー。といってコミットしてきたのが。 >#include "/usr/home/bakamono/proj/module/include/xxxx.h" >というコード山盛り。 まだマシです。 #include <xxxx.h> つまりstdio.hやstdlib.hとかをほうりこむディレクトリに 自分だけ使うファイルをいれてるのを見たことあるよ。 よそにもちこめねーじゃねえの。ぷんぷん。
>>815 大概のコンパイラは、インクルードファイルのディレクトリ指定できるか
ら
>>811 よりは、マシだよ。
>>815 4年程前、stdio.h等を自分専用に書き換えて使っている
自称C言語が一番得意なプログラマーを見かけましたが、何か?
818 :
仕様書無しさん :02/05/03 11:25
>815 「つまり」の前後の話がつながっておりません。
819 :
仕様書無しさん :02/05/03 11:30
>>817 強烈ですね。私も昔、ベンダー配布のヘッダファイル
書き換えてましたが、何か?
ごめん、俺もSTLのバグ修正して使ってる・・・。
821 :
仕様書無しさん :02/05/03 12:05
会社辞めたきゃさっさと辞めろ
822 :
仕様書無しさん :02/05/03 12:22
内部設計ですが 書籍DBから書籍の在庫を探す文字列検索ソフトを作るとき 小さい文字(なんていうんだ、知らないけど)'っ'や'ゃ'を 検索できるようにしていない 濁音を専用に1バイト確保させる おかげで"トッパン印刷"や"ソフトバンク"が検索できません 仕様だから問題ないようです
>>822 そういえば、漢字は検索できないね。
トッパンインサツ
で探してくれ、クライアントさんよ
>>817 そういや、そういう人もいましたね。公開ファイルや
標準ファイルを自分で勝手に修正している人。
あとでまとめるときに苦労しました。
#define TRUE 0 ってのは流石にいないのかな、もう。
>>825 こういうことやりたい場合はどうすんのかな。
typedef enum {
False, True,
} _Bool;
こうやって勝手に真偽値型を作るのって趣味以外だとだめだめ?
うん
>>827 じゃあどうすんの? 単に int で 0,1 を返すと仕様に明記すれば
オーケー?
>822 拗音(ようおん)
忘れ物 吃音(きつおん) 照準固定(ろっくおん)
>>824 修正ならいいんだけどね。
memmoveという関数名は嫌だからmmvという関数にしたい
・・・・って、それはそれでまぁ悪いけどいいとして、その宣言をstdio.hに書くなっての。
駄目コードを書き直してまともなコードに直す、というのを 「腐った残飯からまともな料理」と書いたが、 もっと良い表現が浮かんだけど話す相手がいないので書き込ませてくれ。 「ウンコをせめてウンコ味のカレーにする」 材料がウンコじゃまともな料理は無理だが、 せめて食べ物を、という意味で。
>>832 話す相手がいないとこ悪いんだけど前のがよかった。
834 :
名無しさん@お腹いっぱい :02/05/03 23:37
Spike様のコードを思い出す・・・まさに
>>832
>817 ふ。 printfをマクロで独自関数に置き換えてるコードを拝んだことあるぜ。
>826 enumってswitch文のcaseに使えなかったなー。 あれは漏れの勘違いだったんだろーか?
>>836 いけたよ。BCC5.51でコンパイル確認。それともこういうことではない?
#include <stdio.h>
enum { MONA, GIKO, NONOTAN };
int main(void)
{
int value;
printf("数字入れれ\n");
scanf("%1d", &value);
switch (value) {
case MONA:
printf("( ´∀`)\n");
break;
case GIKO:
printf("( ゚Д゚)\n");
break;
case NONOTAN:
printf("( ´D`)\n");
break;
default:
printf("だめぽ\n");
break;
}
return 0;
}
>835 よくある、あとsprintf,strcpyなどの、string.h系。
>837 あ、使えるね。 漏れの勘違いみたい。スマソ MS-Cの頃だったかな...いや、VBだっけかなー。10年ぐらい前の話なんだわ。
>838 こういうときはドキュメントの必要性をひしひし感じるね。 そういうことをへーきでする奴はドキュメントなんか残さないんだよなー。 独自ISAMライブラリとか独自packedBCDライブラリとかもあったけど これまた内部仕様無し。Windows版にするときにえらい苦労したよ......
int a1-1; int a1-2; int a2-1; int a2-2; a以外にもbとかcとかあり 無論コンパイルはとおらない /* C言語 */
842 :
仕様書無しさん :02/05/07 04:02
>>819 甘いな。通の漏れはsys/type.h変更。
843 :
仕様書無しさん :02/05/07 05:12
関数1つが5000行、その中のswitchブロックの中身が1000行以上… 卒倒しそうになったよ。
846 :
こないだメンテしたVBのプログラム。 :02/05/08 18:05
1 sub main2() 2 Dim a 3 Dim b 4 Dim c 5 ' 6 ' 7 if get_xxx() = 0 then 8 goto 11 9 end if 10 goto 20 11 a = get_xxx() 12 goto 13 13 b = a + c 14 goto 15 15 exit sub 16 ' 17 ' 18 ' 19 ' 20 c = a + c 21 goto 25 22 ' 23 ' 24 ' 25 exit sub 26 end sub
847 :
仕様書無しさん :02/05/08 18:17
>>826 いんじゃないの?
そのかわり、真偽判定にそれを使わないやつは鏖殺しとけ。
>>847 だめだろ。
&& とか || とかは整数型に対する演算子であって、
列挙型に対する演算子ではないんだから。
850 :
仕様書無しさん :02/05/08 21:17
>>848 その後輩の女の子が経理や社長秘書なら最高なんだけど、、、
どう?
852 :
仕様書無しさん :02/05/08 23:16
VBで、ステップ400行といったら「かなり多いですね」と言われた・・・
>852 1プロシージャのステップ数と思ったトカ
int func1(/* char *arg1, char *arg2, int *arg3 */) { /* 高速化のため、引数はレジスタで渡す */ register char *arg1, char *arg2, int *arg3; おい・・・
>>848 エロ関係のURLでなくて良かったと胸をなでおろしとけ
ちなみに漏れはそんな事したことない
・・・と聞かれもしないのに激しく断言してみるテスト
>>853 いや、「この画面って処理からするとかなりステップ数多そうだけど、、、ソース見せて?」と
頼まれてソースを見せつつ説明した時の返答がそれだから、違うと思う。
てゆかその人、ちょっとした文字列変換を目的としたツールをVBで作るにも
ごちゃごちゃ繰り返し同じこと書いて、すぐ1000ステップぐらいいくからなあ。
400を4000と聞き間違えたのかもしれん。
同じ処理を繰り返すのにループ使ったら「読みにくいからやめて」って言われた事が... あと、コントロール配列も「そんな裏技使わないでください」とか(笑
Dim a(30000) as string とかやっているから、Redimを使えといったら 「そんな高度なテクニックがあったとは・・・」と尊敬の目で見られたことがある。
>846 せめてgotoのあて先はラベルにしてほすいー。
>854 一時期#asmがはやったなー。
マルチスレッドプログラムにて、複数のスレッドからとある関数を同時に呼ぶのがまずいのが発覚(約100箇所)。 責任者「排他かけるように修正しておいたから〜」 その修正ソース↓ #flgはグローバル変数 if(flg == 1){ while(1){ if(flg == 0){ break; } sleep(1); } } flg = 1; int ret = func(); flg = 0; ・・・このまま納品されましたとさ。
flg がグローバルじゃなかったら、それはそれでオモシロイかも。 # それはそれでイヤだけど
えーと、 flg に対する操作がatomic じゃないからダメなんだよな?
864 :
仕様書無しさん :02/05/09 21:16
>>849 でもでも。列挙型といっても値は int だよね?
>>863 だから
>>865 なんだろうけど、さらに
flg には volatile も付いてないんだろうなきっと。
867 :
仕様書無しさん :02/05/09 22:41
変数の宣言がこんなん。 int aaa, eee, iii, bbb, fff, jjj, ccc, ggg, kkk, ddd, hhh, lll; 縦に4つ宣言して、そのあと次の列に縦に4つ宣言・・・ 意味のある変数はこの順番で並んでいる。というか規則みたい。 馬鹿。
>861 バグが発覚する確率は下がっているとみていいんだよね? 例えれば、あー、あれか、死体をそのまま山林に埋めるんじゃなくて、 砕石機で粉々にして吹き飛ばしてみました、と。だけど、殺人には 変わりないよ、と。 # このコードをメンテするのはごめんこうむる
C言語だけど、変数は全て 英字1文字 か 英字1文字+数字1文字 というソース。「なんで?」って聞いたら 「その方がコンパイルが早いから」だってさ。 >867 はなんでそんな宣言にしたか聞いてみた?
870 :
名無しさん@お腹いっぱい。 :02/05/10 00:59
うまくいえないけどセンスのないコードやオブジェクト指向な プログラミングをするやついるよな。リファクタリングしてるんだけど、 それ以前におかしい、っていうやつ。
ホントうまく言えてないな。
872 :
名無しさん@お腹いっぱい。 :02/05/10 01:25
すまん。ありとあらゆる意味でセンスがないんだよ。ほんとソース見ていて なんでこんなコードが書けるかな、こんな理解不能なことするかな、っていうのが 多すぎるんだよ。もちろん虫はぶんぶんとんでいるんでいくらとってもとりきれない。
873 :
仕様書無しさん :02/05/10 01:34
そいつにとっては理解可能なことなんだろう? 君も、もうちょっと表現力と国語を勉強したほうがいいぞ
>>870 正直、あんたとだけは一緒に仕事したくないと思った。
酔っ払ってないとしたらあんたまずいよ。
875 :
名無しさん@お腹いっぱい。 :02/05/10 02:49
いや、本当に酔っ払っています。久しぶりに飲みすぎた。
876 :
仕様書無しさん :02/05/10 03:21
私はこれでPerlが大嫌いになりました。 $ perl -e '$x="000";$x++;print"$x\n";' 001 $ perl -e '$x="000";$x<10;$x++;print"$x\n";' 1 比較で副作用起こすんじゃねーよ、ヴォケが。
>>876 それ、、、おかしいのか?
2番目のは副作用というか、数値による比較命令にかけたから、
$xが数値に自動変換されただけでしょ。
むしろ、1番目の動作の方が不思議。
perlって、文字列のままインクリメント出来るんだ、すごい。
知らなかったYO!(・∀・) perl(・∀・)イイ!!
単に、
>>876 が言語仕様を理解する能力がなかっただけじゃん。
>2番目のは副作用というか、数値による比較命令にかけたから、 >$xが数値に自動変換されただけでしょ。 はあ? 自動変換するなら式の評価中だけでいいじゃん。 なんで変数の中身まで変化させる必要あんの。 ちなみに $ perl -e '$x="000";$x<10;print"$x\n";' 000 なんですけど。ふつう比較だけでは変数の内容は変わらないよ。 なぜかインクリメントが後に続いたときだけ変わるの。 >perlって、文字列のままインクリメント出来るんだ、すごい。 馬鹿まるだし。
perl触らなくてよかった・・・
perlの演算子について。 ne 文字列の不等式(!= は数値の不等式)。 lt 文字列の小なり。 gt 文字列の大なり。 le 文字列の以下。 ge 文字列の以上。 ということなので、$xを文字列として扱いたいなら、 $x lt "10" と書くべきでは? ちなみに、 $ perl -e '$x="000";$x le 10;$x++;print"$x\n";' 001 $ perl -e '$x="000";$x le "10";$x++;print"$x\n";' 001 文字列と数値をごちゃまぜにして扱うのが悪い。 馬鹿まるだし
> 文字列と数値をごちゃまぜにして扱うのが悪い。 それは正しいご意見ですが、 Perl は意図的に文字列も数字もごちゃまぜにできるようにしてあるのです。 評価したときに型が合わないからといって、勝手に変数の内容を 変えたり変えなかったりするのはどう考えてもおかしいと思うんだけど。 そんなことするくらいならエラー出すべきでは? > 馬鹿まるだし 苦しい煽りだね(w
なんか、朝っぱらから変な雰囲気だねぇ。 >評価したときに型が合わないからといって、勝手に変数の内容を >変えたり変えなかったりするのはどう考えてもおかしいと思うんだけど。 変数の内容は変えてないでしょ。型は変わったけど。 >Perl は意図的に文字列も数字もごちゃまぜにできるようにしてあるのです そうですよ。 数値用の比較演算子を使ったということは、 その変数を数値として扱うという意思表示をしたのと同じです。 だから、それ以降は変数の型が変わったんでしょ? あなたの書いた構文通りにperlは動いてると思いますよ。 プログラム中で変数をどう扱うか、 明確な設計思想が無いままコーディングする方が問題。 「変数の内容を変えたり変えなかったり」というのは、 あなたの言いがかりとも取れますが? >そんなことするくらいならエラー出すべきでは? その動作が「仕様」どおりなら、エラーを出す必要ないのでは? スレ違いなのでsage
>>881 >Perl は意図的に文字列も数字もごちゃまぜにできるようにしてあるのです。
そういう言語なのをわかっていて、その上で
>$ perl -e '$x="000";$x<10;$x++;print"$x\n";'
というノラリクラリな書き方を(判りやすい例示ではあるにせよ)したんだったら、
>副作用
って、Perlに対する揚げ足取りじゃない?
まあ、
>私はこれでPerlが大嫌いになりました。
は理解できるけど、それが何か?
どっちかっていうとPerlの方から
「そんなソースを書くプログラマが大嫌いになりました。」
って言いだしそう…。
うひゃ、書いてたら1分違いで似たようなレスが(w
まぁ結論としては Perlってそういうもんです。いやなら使うな。 ってことです
>869 コンパイル速度にどのくらい差があったのか知りたいですね。
> その変数を数値として扱うという意思表示をしたのと同じです。 > だから、それ以降は変数の型が変わったんでしょ? 「だから」になってませんね。 式の中ではたしかに値は数値として扱うという意思表示をしている。 でもふつうの言語では、評価するときの型と変数自身の静的な型は分離すると思いますが。 もちろん Perl はそういう「ふつうの言語」じゃなくて、 こういう特殊な仕様なのはわかってますよ。ソースも読んだしね(その付近だけだが)。 そのうえでぐちたれてるだけです。 > 明確な設計思想が無いままコーディングする方が問題。 Perlでワンライナーかくのに設計思想ですか。はあ。 すばらしい才能をおもちのようで。 > どっちかっていうとPerlの方から > 「そんなソースを書くプログラマが大嫌いになりました。」 > って言いだしそう…。 自分の感情とPerlの感情をごっちゃまぜになさっていますよ。 型の不一致は危険ですね。
>888 Perlは馬鹿防止機能付き(;俗に言うバカチョン)じゃねーんだ。意味があって文字列と数値が混在できるようになってるんだ。 ラクダ本、ちゃんと読んだか?
>>876 つか、Perl のワンライナーごときしくじった程度で、会社やめたくなったので?
つうか、この程度でぐちぐち書きたれたあげく、あおりに乗っかってるような
人はやめたほうがその会社にとってもいいような気がするけど。
>>864 >でもでも。列挙型といっても値は int だよね?
大抵のコンパイラが列挙型を整数型として実装しているので、大抵のコンパイラでは問題ありませんが、
C言語の規約で決まっているわけではありません。
列挙子は整数値として利用できますが、整数を列挙子に変換した結果は未定義です。
つまり、
>>826 のように_Bool型を定義した場合、
_Bool b;
b = (_Bool)(1 > 0);
の結果は未定義です。
>>888 >Perlでワンライナーかくのに設計思想ですか。はあ。
>すばらしい才能をおもちのようで。
ワンライナー程度にすら設計思想をもてない奴が、
プロジェクトレベルに設計思想を反映させてるとは思えないけどね。
いつから言語の好き嫌いを語るスレになったの?
そうだよ。ソースコード見てこの会社やめようと思おうよ〜 (←莫迦)
>>894 たぶん、
>>876 みたいなアホが書いたソースを見たときに
会社辞めようと思うんじゃない?
自分が会社辞めようと思ったことはないけど、 外注の納品してきたソースを見て、二度と仕事を頼むのはやめよう、と 思ったことは何度もあるよ。
だから〜、
>>876 は「へーそうなんだ。知らなかたよ。貴重な情報かりがとう」
って言ってもらいたかっただけだってば。
>887 差は全く無し。というのは、当時使っていたコンパイラが2パス構成で: パス1:字句解析・構文解析の後、quadrupleをディスクへ出力 パス2:quadrupleを読み込み、オブジェクトを出力 という構成になっていたのさ。当然、字句解析よりディスクへの出力の方が はるかに時間がかかるんで、測定しても全く差は出なかった。 /* というデータを出しても、ヤツのコードは相変わらずだった */
899 :
仕様書無しさん :02/05/10 22:50
まだ、働いてないんで、質問なんですが、 ふざけたコード書く奴と一緒に仕事をせざるを得ないときは、 どういう風に対処してるんですか? 徹底的にそいつに注意して直させる? 放置?
>>898 タイプ量が減る分、書くのが速くなります。
プログラム作成がグンと速くなります。
もちろん、情報量に乏しいため人が読むのにやさしくありません。
あとから解析してなおすひとが泣き叫びます。
「ヨシ、一から作り直そう」
そしてまた、少ないタイプ量で、プログラムが作り直されてゆきます。
>899 そういう奴は淘汰されそうな所に行くべし。 SMGとか(藁
bit演算子の|を見て「パイプ」と。 恐る恐る説明したら「それじゃアンドじゃないですか?」と。 bit演算子をまるっきり知らなかったようなので放置。 それから数ヶ月後の今、ヤツが入院してしまい俺がソースを引き継いでます。。。
903 :
仕様書無しさん :02/05/11 08:13
>>899 年下・経験が自分より下
同じ会社の後輩なら、徹底的に指導する。
別の会社の人間なら、仕事に支障がない程度に教育する。
それ以外
時と場合によるが、自分に影響がない程度に(その人の行動に)注意する。
904 :
仕様書無しさん :02/05/11 08:32
SQL文が一つの処理で300行あったとき…
項目が150あるテーブルに対して 項目ごとに改行してINSERT文書けば 300行になりますが、何か?
処理の内容も見ずに行数が多いとか変数が多いとか 騒いでいる中途がきた時、その中途を辞めさせたくなるな
それ、テーブル設計する方も問題じゃないの? 前の勤め先でカラム名が ○○1、○○2、○○3、ってのが延々50個続いてるってのがあったよ。
>898 ありがとうございます。 昔のBASICはソースの格納容量が小さくて変数名が短い方が 長いプログラムが入ったけど、そのへんから来てるんじゃないかなー。
>899 テストをきっちりやらせて正常に動いているなら良しとします。 そのかわり後のメンテも全てそいつにやらせようと心の中で誓います。
郷に入っては郷に従え
char buff[10]; …… strcpy(buff,&buff[2]); 久しぶりにこんなコーディングを見た。 書いたのは馬鹿っ高い金を取るので有名な会社のヤツ。
馬鹿っ高い金を取るので有名な会社 が下請けに出した先のやつだろ
>>910 それはわかるけど、バカの巣窟に入ってバカの巣窟に従うのは
人間として耐えれません。
ではそこから立ち去りましょう
916 :
仕様書無しさん :02/05/14 08:23
>>911 あいちゃん?
昔「遅くて遅くて使い物にならないんだけど・・」ととあるお客さんに相談を
受けてあいちゃんの作ったソースを見たことがあるんだが・・・
「なんじゃこりゃ?」ってな糞ソースだった。
・・でもすっごくお金はとられたらしい・・
917 :
仕様書無しさん :02/05/14 08:50
誰か
>>911 のプログラムの問題点を可能な限り挙げてみて下さい。
いくつ思いつけばPG合格なのかな。俺3つしか思い浮かばないや。
でも、まあ、動くだろうなあ。ふつうの環境なら。
920 :
仕様書無しさん :02/05/14 19:24
>>907 うちのは500超えてますが何か?
INSERT文が1万行を超えますが何か?
まじめに辞めようと思います・・・
あれ?今まで出てなかったのか。switch case で、こんなん。 見つけた時は、倒れそうになったけど。 switch(i) { case 0: { . . . // なんか0 break; } case 1: { . . . // なんか1 break; } . . . default: { なんか } }
何が倒れそうなのかイマイチ分からん caseラベルのところにもブロックを作ってるところ? caseラベルにブロックをつけるのは別に倒れそうにはならんでしょ
>>922 ,923
アホ発見
breakでswitchブロックから出れないのが
わからんのか?
>>924 ごめん、最近Cの勉強はじめたばかりなんだけど正直分からん
構文と見比べた限りじゃ間違ってないように思うが・・・
926 :
仕様書無しさん :02/05/14 21:45
>>924 break文はあくまでも一番内側のfor,while,do,switchを抜けるだけなのでは?
不安になって試してみたけど,gcc 2.95 では問題なく動いたよ。
コンパイラによって違うのかもね。何で試した?
脳内コンパイラは論外ね。
>>924 んん?6行目のbreak文で8行目に抜けちゃうってこと?
それは有りえないはずだが・・・。
それとも何か別のこと言ってる?
921==924を叩く事で1000に到達の予感…
すまん、俺がアホだった。 ちなみに924!=921ね。 俺の理論で行くと関数のブロックからもbreakで出れることになる。 もう寝るか・・・
>>929 正直なので罵声は勘弁してあげましょう。
>>921 の書き込みの意図も同じ勘違い?
それとも何か気が付かないところがあるのかなぁ
921出てこいよ。 このどアホ。。。あ、そうか。 switch〜case文の存在を知らなくて「今まで全部IFでやってたよ!こんな方法が!!!」 と思って倒れそうになったってことだね。
関係ないが、ちょっと上のほうで出てた switchを関数ポインタの配列に置き換えるのは時と場合による。 添え字がどうのって話もあるが、それ以上にcaseラベルの部分を関数として切り出すのが 適当かどうかってことを考えないといけない。 ただ連続してる部分だから関数にってのはいかがなものか。 (ちゃんと一つの関数で意味をなしてないと関数として切り出すべきではない)
>>924 おしいな〜。天然で美味しそうな生餌だったのに。これでもう少しいきが良ければ・・・。
スマン!俺の勘違いだった! やっぱプログラマ向いてない。辞めようと思った!
お前等、いつから寛容になりやがりましたか?
まぁ921はgoto使ってろってこった
939 :
仕様書無しさん :02/05/15 01:16
ここ数年Cをかいていないので一瞬びびってしまった。だけど最近C,C++を書かんな。
>>937 派遣とCOBOLer以外には寛容なのがマ板です。
先輩の作ったプログラムを修正する事になりました。 void hoge(void) { int amark; int bmark; int cmark; int aflg; int bflg; int cflg; : 氏のうとおもいました。
942 :
仕様書無しさん :02/05/15 01:42
>>941 単に変数名がドキュソなのを言ってるの?
>>942 クサカベ某が2人も出てきそうだからだろ
static/外部変数じゃないだけましか。
>>942 フラグが6個もある関数、俺は見たくないぞ。
プログラムしたことあるの?
947 :
組み込み屋 :02/05/15 03:27
>>933 そうなんだよなー。後々のメンテや拡張を考えると、
caseラベル羅列しといた方が正しく思えることもあるんだけど、
タイミングクリティカルな部分なんかだとほぼ実行時間が揃う
関数ポインタ配列も魅力的で、いつも悩むんだよね。
>>947 コンパイラや最適化オプションにもよるけど、
switch( enum )だと、勝手にジャンプテーブル化してやがることもある。
>>932 以前、他社で作ったソースのメンテをしてたら、こんなコードが。
if( j == 0 ) {
/* なにか0 */
}
else {
if( j == 1 ) {
/* なにか */
}
else {
if( j == 3 ) {
/* 以下延々と9まで続く... */
}
}
}
無理して switch を使えとは言わないが、せめて if 〜 else if 〜 else if 〜
ぐらいで書いて欲しかった...
段々インデントが深くなり、最後に } が階段状に並ぶところはもう芸術(w
あまりに脱力したので、その箇所(似たようなのが他にも多々...)は
そのまんま放っておきました
950!! (。・_・。)ノ
>>949 そういや、どっかのサイトで「VBの優良サンプルです」とかいって
その手の書式で20階層ぐらい下げてるソースを自慢気に配布していたのを見たよ。
すっげぇDQNだなあと思って感心してしまった。
VB歴2年とか書いてあったような。
VB使いにダメなヤツの多いのをおしえてくれる最良サンプルなんだろ。 # 全員がダメと言ってるわけではない。
>>950 else ifを連続してかくとVBの昔のバージョンだときちんと判定されなかったから、
ある程度まではしょうがないんだけどね。
ただ、優良サンプルというほどのもんじゃない。
むしろそこまで行かないようにするテクニックを紹介すべきだと漏れは思う。
あるお客様より、客先製作プログラムの機能追加依頼が来る。 .BASファイル内に、数十個のDBアクセス関数があった。 DBアクセス関数の成功・失敗を示す戻り値が、見事なほどにばらばら… Func1: 成功の場合 1、 失敗の場合 0 Func2: 成功の場合 0、 失敗の場合 -1 Func1: 成功の場合 0、 失敗の場合 1 Func1: 成功の場合 True、 失敗の場合 False ...
以前どっかのシステムのメンテしたとき、そんなのあったな。
>>953 しかしFunc2以降は・・・コピペ後の編集忘れだよな?
>>952 昔、っていつのバージョンよ。
V2とか言うなよ
>>948 switch 〜 case 文って、コンパイラでクセがあるよな。
組み込みって、命令フェッチが死ぬほど遅かったり。
ROM より早い RAM とか、メモリ上とか、
あるいは直接キャッシュ上とかに展開したり。
僅か数ステップの命令数の違いやらでも、時としては動かなかったり。
>957 case文が少ないと直接分岐命令に展開するけど、 case文の数が増えるとジャンプテーブルにになったりとか。 なんかいろいろあるらしい。
959 :
仕様書無しさん :02/05/16 06:57
>911 > > char buff[10]; > …… > strcpy(buff,&buff[2]); > > 久しぶりにこんなコーディングを見た。 > 書いたのは馬鹿っ高い金を取るので有名な会社のヤツ。 > strcpy(buff,buff+2) と同じで先頭の2文字を詰めてる、普通だと思うが。
>>959 いくらマ板だからって、そりゃないだろ…
オマエはそれを普通だと思うのか!
961 :
仕様書無しさん :02/05/16 07:15
>960 #include <stdio.h> #include <string.h> int main() { char buff[10]; strcpy(buff,"XXYYhoge"); puts(buff); strcpy(buff,&buff[2]); puts(buff); strcpy(buff,buff+2); puts(buff); } 動くよ。
>>959 そのCソースのアセンブル展開をみないと、動くかどうかわからんだろ
コピー元とコピー先が重なる場合の動作は保証されてるのかされてないのか。 俺はされてないに一票。
964 :
仕様書無しさん :02/05/16 08:29
memcpyとmemmoveがあるのは何故だろう。
以前、ある新人にmemcpyとmemmoveの2つの存在理由を考えてみ、と言ったら 「作った人が違うんじゃないんですか。」とのたまいやがった。 先輩組は笑う気にもなれなかった。(一部の新人組は爆笑してた)
966 :
仕様書無しさん :02/05/16 09:00
まぁ、大抵エイリアスだからどっちでも構わないんだけどね。
967 :
仕様書無しさん :02/05/16 09:32
>>959 って動くんじゃないの?
バカにもわかりやすくおせーてくださいおながいします!
結局は誰も俺なんかには教えてくれないわけか・・・・・ マ板は不親切じゃのう(´┏┓`#)
MSDN読めば?
>971 なぜMSDNなのか教えてください。 C言語の仕様ならC言語の本を読むべきだし、 CPU依存の話ならCPUの解説書を見るべきだとおもう。 コンパイラの動作の詳細ならMSDNに載っているとは思えない。いや、ひょっとしてそーゆー情報もMSDNにあるのかしら?
memcpy、memmoveは関数の仕様であって CPU依存ではないだろ? memcpyとmemmoveの動作が違うのがコンパイラのせい? 初耳だな
974 :
仕様書無しさん :02/05/16 12:47
>コピー元とコピー先の文字列が重なり合っているときの >strcpy 関数の動作は未定義です。 MSDNのも書いておいてあげよう。
MSDNライブラリ Visual Studio 6.0から 解説 memmove 関数は src から dest に count バイト数をコピーします。コピー元とコピー先の領域が一部重なっている場合は、memmove は、重なっている部分の内容をコピーしてから、上書きします。 解説 memcpy 関数は src から dest に count バイト数をコピーします。コピー元とコピー先が重なり合っていると、この関数は、重なっているコピー元のバイトをコピーしてから、上書きするとは限りません。重なり合っている領域を扱うときは memmove 関数を使ってください。
関数の仕様って完全に決まってたのか? 知らん買った。
>>978 いやいや、うちの会社には絶対にきて欲しくないタイプの人だね
そういえば、こういう書き方するやつがいたな。 sprintf( a, "%s%s", a, b );
981 :
仕様書無しさん :02/05/16 18:43
こういうのあった。 char *buf; char size[1024]; buf = malloc(sizeof(size)); この配列は sizeof でしか使われていない。 別の関数にも、size[] の中身の数字だけ違って同じのがいっぱいあった。
>>978 > 関数の仕様って完全に決まってたのか?
少なくともC言語の標準関数の仕様は決まっている。
君の作った関数の仕様は決まってないかも知れないが
983 :
仕様書無しさん :02/05/16 18:54
char buff[10];の時 strcpy(buff+2,buff);はまずいが strcpy(buff,buff+2);はいいと思う。
今動くからって理由で本来未定義の動作をあてにすんなよ... コンパイラ(付属の標準Cライブラリの実装)変わったら一発で意図通り動かなくなる可能性大。
>>983 strcpyが必ず1バイトずつ順番にコピーしてくれるとか決め付けてないか?
>>981 sizeofの使い方を小一時間教えてください。
>>983 後ろからコピーって可能性もあるし。
誰しもプログラムをはじめた頃は strcpyとかには一度ははまった経験があると思うんだが・・・。 学習能力のないやつが多いのか?
C++とかならStringクラスでも使えばいいじゃん。 なぜそこまで低レベルの処理にこだわる?
990 :
仕様書無しさん :02/05/16 21:26
STRCPY(3) Linux Programmer's Manual STRCPY(3) 名前 strcpy, strncpy - 文字列をコピーする 書式 #include <string.h> char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); 説明 strcpy()関数は src(終端文字`\0'を含む)をポインタとする文 字列を destをポインタとする配列にコピーする。二つの文字 列 は重ならない。受け側の文字列であるdestはコピーを受け取るの に十分な程度に大きくなければならない。 srcのnバイトを越えない数の文字がコピーされるこ と を 除 け ば、strncpy()関 数も同様である。したがって、もし srcの最初 のnバイトの中にNUL文字が無ければ、コピーの結果としてできる 文字列はNUL終端していないものになる。 src の長さが n よりも少ない場合は、 dest の残りはNULLで埋 められる。 返り値 strcpy()関数とstrncpy()関数は受け側の文字列destへのポイ ン タを返す。 バグ strcpy()の受け側の文字列が十分に大きくない場合 (つまり、プ ログラマが間抜けか不精で、コピーする前にサイズをチェックす る ことを怠った場合)、何が起こるかわからない。固定長文字列 を溢れさせるのはクラッカーが好むテクニックである。 準拠 SVID 3, POSIX, BSD 4.3, ISO 9899 関連項目 bcopy(3), memccpy(3), memcpy(3), memmove(3) GNU April 11, 1993 1
991 :
仕様書無しさん :02/05/16 21:27
なるほど、そうか、しかしだな、今まで書いた コードを考えると、信じたくないぞ!
>>973 おえおえ、そのコンパイラがDMAとか使ってたらどうする?
めったにないとは思うがCPU依存じゃん・・。
>>989 その通りなんだけど、これくらいの事頭の隅に入れとけよ、と言いたい。
Z80でメモリ転送するときにハマった覚えがあるよ〜
次スレあるの?
996 :
仕様書無しさん :02/05/16 22:11
1000
い
while(1){
return 0; }
1000!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。