5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

この会社辞めようと思ったソースコード3

1 :仕様書無しさん:02/03/12 00:44
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

■過去スレ

この会社辞めようと思ったソースコード
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=997104873&ls=50

この会社辞めようと思ったソースコード#2
http://pc.2ch.net/test/read.cgi/prog/1001076034/l50
■関連スレ

この会社辞めようと思った上司の一言
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=992259973&ls=50

この会社辞めようと思った会社の規則
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=996827150&ls=50

なんでこんな奴と給料が一緒なんだと思う瞬間
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=1000730743&ls=50


2 :仕様書無しさん:02/03/12 00:47
>>1
乙カレー

3 :仕様書無しさん:02/03/12 01:22
関数名: ebi()
命名の理由: プログラミング中に海老が食べたくなったから・・・らしい。ヽ(`Д´)ノ

4 :仕様書無しさん:02/03/12 01:28
PGじゃなくてスマソ本職はNEです。と言ってもWeb等もやったりする。
・今日の出来事
現場のイントラでちょっとしたWebサイトを立ち上げることになった。
と、いっても、エクセルのファイルにhtmlでリンク張るだけの簡単なもの。
で、俺は何故かアクセスでDB構築をしていたので、現場の同僚に
「これ頼むよ。くれぐれも絶対パスでリンク張るなよ!」と、発注。
ところが!! 全部絶対パスでリンクを張ってくれた。
これでサーバにアップして動けばいいけど、動くシロモノではなかった。
まさか、今更絶対パスと相対パスの説明をするとは思わなかった。
今日はマジで泣きそうになったYo!

5 :仕様書無しさん:02/03/12 01:32
>>3
それが何する関数なのか、ちょっと興味がある。

6 :仕様書無しさん:02/03/12 01:45
跳ねる

7 :1:02/03/12 02:01
コソコソ

8 :仕様書無しさん:02/03/12 02:30
../../>>1さんに届けこの思い/kokuhaku.html

これで2ちゃんの隠しページが見られるらしい。

9 :仕様書無しさん:02/03/12 02:34
../../>>8さんに届けこの怒り/kokuhatu.html


10 :1:02/03/12 12:25
コソコソ

11 :仕様書無しさん:02/03/12 17:56
>5
テキストファイルに注文表を書けば勝手にネットにアクセスして天丼などを注文してくれる関数だと思われ。
そんでエビ料理のテーブル持っててエビが含まれてない料理は、一番近い味付けのエビ料理に変換して注文。


12 :仕様書無しさん:02/03/12 20:50
>>3
しょうもな!とは思うものの気持ちは解からぬでもない。どこかの誰かが言いました。
  「プログラムとは変数名と関数名を考えるもの也」(すごくうろ覚え)

13 :仕様書無しさん:02/03/12 23:11
以前、関数名と変数名はヘボン式の日本語表記でというプロジェクトにおりました。
「si」じゃなくて「shi」だろうが、おい!
とかいうレベルの、なさけないコードレビューが幾度もくりかえされましたとさ。
どっぴんひゃらり。

14 :仕様書無しさん:02/03/13 16:57
while( "( ´∀`)<無限ループモナー" ){
  printf("(・∀・)イイ");
}

15 :仕様書無しさん:02/03/14 23:34
あるページの認証のプログラム

if ($id != $pass) {
  print "パスワードが違います。";
}

つまり、IDとパスワードが一緒だったらOKなのだ。
目を疑ったね。

16 :仕様書無しさん:02/03/14 23:42
変数名にreebとかemamadeとかあって、意味がわからないので作者に聞いたら、
逆さに読めと言われました。
つまり、reeb => beer、emamade => edamame ってことなんです。
なんでこんな名前付けたの?って聞くとコーディング名考えるのがメンドイからっていわれました。

17 :仕様書無しさん:02/03/14 23:43
>>16
それでやめようと思ったのか?おもっただけか?
それ書いたの俺だ。お前誰だ?

18 :仕様書無しさん:02/03/14 23:46
>>17
富士通沼津工場にいた坂口さんならビンゴ!
たぶん違うだろうけど...

19 :お約束:02/03/14 23:47
>>15
IDとパスワードが異なっていれば
"パスワードが違います"って表示されるだけで
後の処理はまったく同じなのですね(w


20 :仕様書無しさん:02/03/14 23:52
DBを使っているシステムなんだが、フィールドを一つあとから
増やさなくてはいけなくなったのね。

さて、ここで、問題です。皆さんならどうしますか?


俺が見たコードによると一つのフィールドにカンマ区切りで
データを2つ入れてるのね。

目を疑ったね。

21 :仕様書無しさん:02/03/14 23:53
>>20
そんな手があったか(笑)

22 :仕様書無しさん:02/03/14 23:57
>>19
あ、ゴメン、そーじゃないです。
exit;
してたと思います。

ボクが、目を疑ったのは、IDとPASSが同じだったらっていう部分。
何のための認証だよ。と。
思ったわけ。


23 :仕様書無しさん:02/03/14 23:58
>>13
> 「si」じゃなくて「shi」だろうが、おい!
うちはどっちにするか決めてなかったので、両方が混在して
見にくいったらもう。次回新規プロジェクトを立ち上げるときは
絶対どちらにするか決めておこうと思った YO!


24 :仕様書無しさん:02/03/15 00:04
siだな。

25 :仕様書無しさん:02/03/15 00:07
>>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年から業務用ライブラリに組み込まれて
未だに使われている データ上書き用関数名

27 :仕様書無しさん:02/03/15 12:42
>15
あれ?$がついてるからPerl?
perlの文字比較ってeqとかneだったような....

28 :仕様書無しさん:02/03/15 14:08
>>25
大丈夫だVARCHAR2(11)ではないんで>>20とは違うものだろう(w



29 :仕様書無しさん:02/03/15 14:14
>>27
んなこたないよ

30 :仕様書無しさん:02/03/15 14:26
「んなこたない」がどこにかかってるのか気になる

31 :仕様書無しさん:02/03/15 14:38
>>27
>perlの文字比較ってeqとかneだったような....

んなこたないよ

== != <= <=> => < > いずれも評価式として存在している。

32 :仕様書無しさん:02/03/15 14:40
しかも、PerlはCとちがい、文字列だろうが数値だろうが、
eqでも==でもきちんと評価する。

33 :27:02/03/15 14:51
文字比較が==などでも出来ることは知ってますけど
お約束としての話です。

34 :仕様書無しさん:02/03/15 14:56
>>33 
そんな約束、いつラリーウォールが作った?
ソースきぼん。

35 :27:02/03/15 14:59
Perl5 のパワフルテクニックの43ページ。


36 :27:02/03/15 15:08
>35
正確にはインプレスのPerl5パワフルテクニック大全集。

それ以前に数値演算子で文字列比較が出来る以上
文字列比較はいらないだろ。

存在する以上区別するのがお約束だと思ってたんだけどな。

37 :仕様書無しさん:02/03/15 15:14
>>35
その本の著者にはLarry WallもTom ChristensenもRandal L Schwartzの名前も見えないようだけど、
正式なコメントなの?
こうやった方がいい、というのはあるけど、こうやらなければならない、というのがないのが
Perlという言語だ、とLarryは言っているワケなんだけど。

38 :27:02/03/15 15:19
>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"; }


40 :27:02/03/15 16:23
>39

もし数値演算と文字列演算子を区別せずに
文字列比較を数値演算子で行うというなら
文字列演算子はいらないだろ?

ということです。
言葉足らずで申し訳ありません。

41 :っていうかすぐ辞めたんだけどさ:02/03/15 18:26
VBでの話。
サブルーチン、ファンクションの宣言で
private、publicの宣言皆無。

引数すべて参照型。

for文書くのが面倒だったのか
コピペで済ますヤツ。

1関数内に3000STEPこえるコード書くヤツ。

これを書いてたヤツらってのが
全員、経験年数10年オーバーしてるヤツがほとんどだってんだから
今までどんなコード書いてたのやら。

今までで最悪の現場だったよ。


42 :VB:02/03/15 18:31
全ての関数のアタマに
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は明言している。
パスワードデータと入力された文字の文字コードを比較することで
同一性を検証してはいけない理由を、ちょっと聞かせておくれよ。

45 :仕様書無しさん:02/03/15 19:13
パスワードってのは、1でも1.0でも、どっちでも有効なんですか?
>>39さんのところでは(w

46 :仕様書無しさん:02/03/15 19:38
それって、何も入力されてなくても認証されるよね。
それでも不正アクセスとかで違法になるのかな?

47 :仕様書無しさん:02/03/15 19:43
>>46
exit;書き忘れたってさ。ここに書くときにね。

48 :仕様書無しさん:02/03/15 20:12
>>47
いや、ユーザーがブラウザ上で何も入力せずに、okボタンを押して、
変数の中身が両方ともカラでも、イケそうな気がするって意味どす。

49 :仕様書無しさん:02/03/15 20:25
>>48
ああ(笑)んだね。

50 :名無しさん@お腹いっぱい。:02/03/15 20:32
テストサーバーのユーザー名とパスワードが商品名であったこと。
仕様どおり動きませんしよく落ちます。
以上2つをヒントにして商品名を当ててください。

51 :仕様書無しさん:02/03/15 20:34
2ちゃんねる

52 :仕様書無しさん:02/03/15 20:50
>>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
ローカル変数ならそれでもいいだろ

説明不十分自己満足、勘弁してくれ

55 :仕様書無しさん:02/03/15 22:31
昔居たゲーム会社ですが
palette pallete palete とたくさんのパレット管理の変数がいますた。


56 :仕様書無しさん:02/03/15 22:40
>>54

すまん。
変数名の違いが「1」と「l」しかないって
分かりづらくないか?
と言いたかった。

57 :仕様書無しさん:02/03/15 22:41
>>54
ローカルでもやだなぁ、1とlの区別つきにくいじゃん。
ってか、変数名なんぞで手をぬくなよ。
勘弁してくれってのはどっちかっつうと>>54だな。

58 :54:02/03/15 22:45
>>57
いや、勘弁してやらない。

59 :仕様書無しさん:02/03/15 22:52
正直、>>54 と一緒に仕事したくないと思った・・。

60 :仕様書無しさん:02/03/15 22:57
>>59
禿同

61 :仕様書無しさん:02/03/15 23:01
自分でも考えるの面倒でやっちゃうけど、
hoge1 hoge2 hoge3 hoge4...
みたいのも混乱する。

かえって分かりやすい場合もあるけど。


62 :57:02/03/15 23:15
勘弁してもらわなくてもいいよ。
職場が一緒にならないことをはげしくキボンヌ。

63 :仕様書無しさん:02/03/15 23:20
なんか自作自演連発な気がするんだが

64 :仕様書無しさん:02/03/15 23:28
>>63
さてここで問題です。
何番と何番が自作自演でしょうか?

65 :仕様書無しさん:02/03/15 23:30
>>64>>65

66 :仕様書無しさん:02/03/15 23:32
>>63>>64>>65

67 :仕様書無しさん:02/03/15 23:38
>>65が自白した

68 :仕様書無しさん:02/03/15 23:49
ん?
64 != 65だが

69 :仕様書無しさん:02/03/16 00:03
>>63>>64>>65>>68
・・・飽きた

70 :仕様書無しさん:02/03/16 01:17
前任者が半角スペース×3でインデントしてるのは私に対する嫌がらせですか?

71 :仕様書無しさん:02/03/16 01:29
IBMのコンパイラのIDEがそんな感じの嫌がらせ設定だった気がする。


72 :仕様書無しさん:02/03/16 01:30
>>70
それ、微妙だな。それは、どのあたりが嫌がらせ?

とあるC++本では、
半角スペース×3でやってたものもあるし、半角スペース×4の本もある。
半角スペース×2の本もあった(C++本ではないが)。
それから、タブでやる人もいるし。

73 :仕様書無しさん:02/03/16 01:31
漏れは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タブだと、上と下でどことどこが対応してるのかよくわかんね。


80 :仕様書無しさん:02/03/16 03:00
3TAB派はいないのか?

81 :仕様書無しさん:02/03/16 03:13
俺も4タブ。8タブは下げすぎだと思われ

82 :仕様書無しさん:02/03/16 03:21
java標準8タブ

83 : :02/03/16 03:33
すまん、俺も4タブだ。

84 :70:02/03/16 03:37
>>72
その会社のコーディング規約が4スペースなあたりが嫌がらせ
いちいち直した俺も真面目すぎかもしれんが

趣味では4tab派です

85 :仕様書無しさん:02/03/16 03:40
ウニ系はどうなの?
インデントなんてエディタの仕事だと思われ。

86 :うん:02/03/16 03:49
7たぶ

87 :うん:02/03/16 03:50
みみたぶ♪

88 :うん:02/03/16 03:50
それはタブー♪

89 :うん:02/03/16 03:56
漏れデブ♪

90 :うん:02/03/16 04:20
死ねデブ♪

91 :仕様書無しさん:02/03/16 06:28
>>85
そのエディタが入れるインデントの話をしとるんじゃ!

ちなみに俺は4Tab派

92 :仕様書無しさん:02/03/16 06:34
Cは4tab。アセンブラは8tab。

93 :仕様書無しさん:02/03/16 09:37
>>92
あ〜、おれもそうだな。
ここ数年アセンブラさわってないけど。

94 :仕様書無しさん:02/03/16 12:06
タブとインデントは違うだろ。

95 :仕様書無しさん:02/03/16 12:08
>>94
はぁ?2タブで1インデントとしてるとか?

96 :94:02/03/16 12:46
タブ8インデント4

97 :仕様書無しさん:02/03/16 14:49
そもそもプロポーショナルフォントで編集してるから
タブの幅は文字数に換算できない

98 :仕様書無しさん:02/03/16 17:24
見づらくないか?

99 :仕様書無しさん:02/03/16 17:33
>>98
いや普通だよ。逆に固定ピッチ見ると間延びして見える。

100 :仕様書無しさん:02/03/16 17:42
>>97は、絶対まわりの奴に嫌われてる。 

101 :仕様書無しさん:02/03/16 17:52
Pフォントをメインにしているやつ、たま〜〜〜〜〜〜にいるよな。
たま〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜に。

102 :仕様書無しさん:02/03/16 18:05
多かろうが少なかろうが、自分が見やすければいいじゃん。
他人に迷惑かけないっしょ。
人にも同じこと強要してたらうざいけど。

103 :仕様書無しさん:02/03/16 18:07
>>102
そんなソースをあとでお守りさせられる奴の立場は?

104 :仕様書無しさん:02/03/16 18:09
>>103
つーか、普通にタブでインデントかけてるだけでしょ?
使ってるエディタで見た目が違う以上の違いないじゃん。

プロポーショナルなら普通、行頭以外の部分を縦にそろえるようなことしないし。

105 :仕様書無しさん:02/03/16 18:11
Pフォントで書いているやつはAA職人と思われ。

106 :仕様書無しさん:02/03/16 19:58
 

107 :仕様書無しさん:02/03/16 20:10
>>97
マジですか?
Pフォントでコーディングするやつが実在するとは。
エディタはもちろんWordだよね。

108 :仕様書無しさん:02/03/16 21:39
インデントがどうのとかいうのはツールにかけて変換すればいいだけの話なので
自分の好き勝手にすればよろしい

109 :仕様書無しさん:02/03/16 21:44
フォントの話が出たけど、プライベートだと
Osaka等幅10ptでコーディングしてる私は変ですか?(Winです)
仕事ではTerminal-10pt。

110 :_:02/03/16 22:00
等幅なら特に変とは思わん

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あたり
も全て考慮しないとならない。そのためには実際コンパイルする場合とほとんど同じような
条件指定が必要になってくる。そんな変換ツールは見たこともなければ使いたくもない。

114 :仕様書無しさん:02/03/16 23:23
>>111-112
普通じゃないですか?私もそうです。
ただ、一関数100行以内っていうのは、
エディタの表示とはまた別の問題と思うけど。

115 :おひさまのよう。:02/03/16 23:31
スレッドの本来の形に戻って・・・、

int theInt;
char theChar;
BOOL theBOOL;

他の変数も、全部 the と先頭に付けていた。
(theA とか theB とか)
1時間ぐらい笑えた(w

もちろん全部自分が修正した(汗

116 :仕様書無しさん:02/03/16 23:42
>>115
なんでtheなんだろう?
同型の二つ目の変数の命名はどうなってるの?

117 :仕様書無しさん:02/03/17 00:02
それってスコープによるプレフィックスじゃないの?

118 :おひさまのよう。:02/03/17 00:03
>116
何で the なのかは・・・、謎(汗
プログラム初心者だったのかもしれぬ。 <作った人
オレより10は年上の人なんだけどねー・・・。

ちなみに同型変数の場合は、
char theChar[];
char theBuf[];
char theIdx[];
みたいなかんじでした(w

フツーなら、
char cIdx;
int iIdx;
BOOL bIdx;
なんだろうけどねぇ。

119 :116:02/03/17 00:05
変数名に手をぬくひと嫌い

120 :仕様書無しさん:02/03/17 00:17
the〜って変数名、Cマガのローテク〜で見た
記憶があるがどうか。

121 :仕様書無しさん:02/03/17 00:17
>>115
おもしろぃぃぃぃ
そんなソース見たら激しく笑う

122 :ぷぷぷ:02/03/17 00:25
theよりも時代遅れのハンガリアンで記述する118のほうが未来が暗い

123 :ぷぷぷ:02/03/17 00:27
>全部自分が修正した

単なる残業代稼ぎか?
よっぽど基本給が少ないとみえる(w

124 :仕様書無しさん:02/03/17 00:27
アタシが書いた設計書のPGをした40過ぎの課長。
ソースを見たら、詳細設計すべてコメントで書かれてあった。
ソースの8割がコメント&デバッグ文。
Vector・Hash・StringのNullチェックはないし、
こんな奴が上司かと思うと転職考えないわけない。

125 :あほ発見:02/03/17 00:30
つうか118よ。なんで、そういうことをやったか質問したんか?
謎とかぬかしている前に本人に質問もできない自閉症みたいなおまえの
ほうこそどうかしているぞ。

126 :仕様書無しさん:02/03/17 00:42
>>124
んー、詳細設計のドキュメント書くひまない場合、
関数のガラだけつくって処理の流れをコメントで記述しておいて
あとからコード書き込んでくってスタイルもあるのよね。

でもnullチェックとか無しってのは・・・痛いなぁ。
それで課長ってのはなぁ、いい会社ですなぁ。

127 :118:02/03/17 00:46
ウチの会社じゃtheって使ってますが・・・?

128 :おひさまのよう。:02/03/17 01:39
>>122
ハンガリアン ってなんすか?(汗

>>123
見にくくて改修できそーになかったので

>>125
自閉症患者に更に自閉症を進行させるようなコト言わないでください


129 :仕様書無しさん:02/03/17 01:44
>>118
>>122
うむ。ハンガリアンは古いな。
時代はモンゴリアン記法だな。


130 :仕様書無しさん:02/03/17 01:58
>>118
の会社には、>>118も含め
ろくなやつがいないな


131 :仕様書無しさん:02/03/17 02:01
研修を終え現場に配属された新人が
WORDを使ってコーディングをしていた…

新人研修でいったい何を教えているのか

132 :仕様書無しさん:02/03/17 02:02
ハンガリアンの上に、indexをidxとかけちるヤツ

133 :仕様書無しさん:02/03/17 02:03
>>122
MSが採用しているという命名規約。
変数名に型をあらわす接頭語やなんぞを付加することで、
簡潔で有益な変数名になるというもの。
ただし、もともとわけのわからない命名規約を使用して
いるふざけた会社以外では、簡潔すぎてわけのわからな
い変数名になってしまうという評価が下されている。

最近は変数名には、長くなっても内容が明白にわかるよ
うな名前を付けるのが一般的になってるから、ハンガリ
アン記法を採用するメリットはあまりないような気がす
る。が、118の会社では採用するメリットあるな。

134 :最近はMSでも:02/03/17 02:08
最近はMSでもハンガリアンは追放されているよ。
たぶん戦うプログラマな人が率先して叩いたから
最近のMSのサンプルコードでは見当たらないとも聞くが。


135 :昔カタギのプログラマに多かったな:02/03/17 02:11
>indexをidxとかけちる

これもなー。変な省略すると放送禁止用語になる場合もあるし
たとえば count とかも変な省略するとマ*コって意味になる(w

136 :仕様書無しさん:02/03/17 02:13
manualを略してmanみたいなもんだな

137 :仕様書無しさん:02/03/17 02:13
つーか、OOPL使っててハンガリアン使う意味あるのかよ?


138 :仕様書無しさん:02/03/17 02:17
不毛なのはわかってるが、いまだにハンガリアンを信仰してる人にその理由をじっくり聞いてみたい。


139 :しょぼーん:02/03/17 02:18
>118の会社では採用するメリットあるな

どうだろうね。変数や関数の命名規則を採用するメリットは確かに大きいけど
ハンガリアンのような型情報を重視するやつでなく、
スコープ(通用範囲)を明確にするやつを検討したほうがいいような。
グローバルならgではじめるとか、
ローカルならtheではじめる(笑)とか、
メンバならmとか

140 :仕様書無しさん:02/03/17 02:19
>>139
間に受けるやついるから、変なこと言うのやめてくれ。

141 :ショパーン:02/03/17 02:21
グローバルならtheで始まる
というところもあるらしいけどな

142 :仕様書無しさん:02/03/17 02:22
>>107
Visual Studioだよ。

143 :仕様書無しさん:02/03/17 02:29
>>139
Javaだといらんべさ、そんなのも。


144 :仕様書無しさん:02/03/17 02:33
Javaだとメンバ変数の頭に_をつけるというのが一部で信仰されてます。
this.を省略し、かつ、ローカル変数(主に引数)との重複ミスを防ぐ
という目的でつかわれるですね。
それはどうなんでしょ?

145 :仕様書無しさん:02/03/17 02:41
>>140
/* あいだに受けるって何 */
いや別にいいんじゃない?そんなに変だとも思わないけど。

146 :仕様書無しさん:02/03/17 02:48
つーか、設計が悪いとスコープが1画面に入りきってない
コードを書くやつがでてくるのでリファクタリングしろよ)
ハンガリアンとか、>>144みたいのがでてくるのかな?


147 :んだども:02/03/17 03:11
144ので思い出したけど
メンバ変数を使うときは「this.メンバ変数」と書け
という命名規則を採用している会社もあるらしいな。
げげっと思ったが。それに比べれば、頭に_をつける
ほうが、まだマシだと思われ

148 :仕様書無しさん:02/03/17 03:52
getter とか setter はどうするの?
名前がかぶるのが当たり前だと思うんだけど

149 :144:02/03/17 04:52
>>148
私は、thisもしくは_等のプリフィクスをつけるってことには賛成です。
設計云々といいますが、仮に数十ラインくらいのメソッドでも、
メンバなのかローカルなのかはぱっと見ですぐに判別できたほうがいい。
つけないほうがいいという理由がよくわかんないです。

150 :仕様書無しさん:02/03/17 05:11
>>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
>>119
御意


155 :仕様書無しさん:02/03/17 11:31
遅レスで恐縮だが、変数名の頭に「the」を付けるのはK仲川がやってた。

156 :うーぷ:02/03/17 11:51
>>155
違うよん。PowerPlantというクラスライブラリでの命名規則が元祖よん。


157 :仕様書無しさん:02/03/17 13:01
>>156
「やってた」と書いてあるだけで「元祖」とは言ってないと思うが、どうよ?

158 :仕様書無しさん:02/03/17 14:48
頭に_をついてるのはコンパイラの予約語だぼけ。
とっととやめとけ、そんなやつのいる会社。


159 :仕様書無しさん:02/03/17 14:58
>>158
それはC/C++じゃないの?
一連の話はJavaなはずだが、Javaでも _ は駄目なんすか? (Javaよく知らないので)

160 :仕様書無しさん:02/03/17 17:13
「頭に _ をついている」

すげぇニホンゴ


161 :仕様書無しさん:02/03/17 17:23
ニホンゴムツカシイデフ

162 :仕様書無しさん:02/03/17 17:40
>>158
「予約語」の意味を分かって使ってるか?

163 :仕様書無しさん:02/03/17 19:42
ケツに_を付けるべし。

164 :仕様書無しさん:02/03/17 20:46
>> 158
C++で、頭に_を付けちゃいかんのはグローバルスコープとnamespace stdだけだ
と思ったが?
クラスのメンバはクラスのスコープ内にあるから問題ないのでは?

165 :仕様書無しさん:02/03/17 20:52
http://isweb34.infoseek.co.jp/play/gbcgbaus/god.html

166 :仕様書無しさん:02/03/17 20:56
>>157
 シーッ。言いたかったんだよ。

167 :158:02/03/17 22:12
正直、Javaの話題だとはすらんかった。
すまぬ。


168 :仕様書無しさん:02/03/17 23:28
スレにCとJavaの話題が混在してるからね。

169 :仕様書無しさん:02/03/18 10:03
>>144を見てJavaの話だと思わん奴もすごいが

170 :仕様書無しさん:02/03/19 21:40
DB設計で部門テーブルと個人テーブルを
部門コードで関連を持たせているのですが

・部門テーブル(部門コード ABC2)
・個人テーブル(個人コード 123456、部門コード ABC)

部門テーブルの部門コードのケツにそのレコードの修正回数を付加するという
暴挙に出たんですが、こういうのって実際あるんですか?

部門テーブルの部門コード上3桁と
個人テーブルの部門コード上とで関連を持たせています。

これって最悪のシナリオが待ち構えているような気がするんですが・・・


171 :仕様書無しさん:02/03/19 21:46
お前のとこの糞システム程度の規模では別に暴挙でもなんでもないが?

172 :仕様書無しさん:02/03/19 21:49
>部門テーブルの部門コードのケツにそのレコードの修正回数を付加するという

よく見てワラタ。

やってもよいし、部分文字列でキーを作っていれば影響はすくない。
しかも、おもろい。

そして、お前のとこの糞システム程度では、本来よりチョビット無駄がでるだけで
別に暴挙でもなんでもないだろう。

だがしかし、きっとお前は仕様の把握ミスをしてる。


173 :仕様書無しさん:02/03/19 21:57
>>170です。
>>172
糞業務をシステムするという話しなんで・・・
うちの会社って一つの部門に5回以上変更が入った場合
部門名を変えるという変な慣例があるんです。


174 :仕様書無しさん:02/03/19 22:02
>173
で?部門名を変えるのにシステム的に何か問題でも?(w

確かに変な会社と思うが(w

175 :仕様書無しさん:02/03/19 22:08
>>174
これを基盤に勤怠管理システムや旅費申請システム、
メール、ワークフローと発展させていく計画なので・・・
このレベルでこんな設計されたんじゃこの先
どうなるかわからん。
設計者はプライドが高くて聞く耳もたず。


176 :仕様書無しさん:02/03/19 22:23
>>175
理論上おかしいです。
テーブルの項目というものはそれだけでただひとつの意味を持たせる必要があります。
だからやるのならこうなります。
┌──────┐
│部門コード │
├──────┤
│部門名   │
│部門修正回数│
└──────┘
こうしておけばその5回の修正で部門名を変えるときも困りません。
そもそも
>部門テーブルの部門コード上3桁と
>個人テーブルの部門コード上とで関連を持たせています。
このリレーションですとインデックスが利用されず、検索のボトルネックになります。

ですのでやってはだめです。
絶対だめ。

177 :174:02/03/19 22:27
>175
ああ、>170をちゃんと理解していなかった(誤解していた)部分もあったけど、
>172の言うとおり仕様を完全に把握していないような気もする。
だからと言って、そのシステム設計がクソであることは否定しない(w

178 :仕様書無しさん:02/03/19 22:30
175です。
>>176
それは重々承知なんですが設計者が
なぜする必要があるのかと会議で喧嘩ごしなのです。
説明してもだめ。聞く耳もたず。
年下の俺が指摘したのでつっぱっているのかも。


179 :176:02/03/19 22:37
>>178
わかってたのなら余計なおせっかいでした。スマソ。
論より証拠。1000件ぐらいのテストデータで単純な結合演算の実測結果をたたきつけてやりましょう。
1000件で差が出なかったら10000件ぐらいで。

>>177
あの文章のどの変で仕様を完全に把握していないような気がするのか教えてくれ。

180 :仕様書無しさん:02/03/19 22:47
>>175です。
>>179
いえいえ。ご丁寧にありがとう!



181 :仕様書無しさん:02/03/19 22:57
そんなクソ会社、DB更新するほど仕事ねえから平気だよ。
言われたとおり作れ。

そしていつかお前が設計するときには「そんなバカはするな」。


182 :176:02/03/19 23:09
>>181
・設計者が嫌いなとき
・設計者の聞き分けが悪いとき
・どうでもいいシステムのとき
・終わりが決まっているとき

言われたとおり作ったときはあるな。
冗長&プロセス指向の塊のすばらしいDBデシタ。

183 :仕様書無しさん:02/03/19 23:48
170の職場のは、仕様をガッチガチに固めた後で、DBレイアウトの
修正が効かない状態で無理やりヤリクリした結果じゃないの?

184 :仕様書無しさん:02/03/19 23:58
段階的に納品とかしててさ、
客「もうDBレイアウト変更はありませんね」
SE「はい、もうないです」
とかやりとりしてるんだよ、きっと。

レイアウト買えようと思っても、びびって言い出せないだけ。


185 :仕様書無しさん:02/03/19 23:59
>>170
男なら戦って逝け。

186 :◆kaRMAJ7. :02/03/20 10:21
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
とりあえず動けばいいよ。動けば。
あほらし。

188 :仕様書無しさん:02/03/20 12:55
それはソースコード見た程度で会社を辞めたくなったことはないという意味か…
悟りの境地ですな

189 :現実逃避派:02/03/20 15:12
>>186

自社のソースは見ないに限る。
なぜって?
士気に関るから。(W

190 :仕様書無しさん:02/03/20 15:21
>>184
汎用項目作っておけばよかったのにね

191 :仕様書無しさん:02/03/20 15:37
>>186

変数の先頭に
intとかstrとか、vctとかつけるのは、
VB厨ってことだったのか・・・



192 :◆kaRMAJ7. :02/03/20 16:10
>189
『バグ修正』で作った当人が居ないと、同じプロジェクトの人に回ってくるでしょ・・・
それで、初めてソースを見たんですよ・・・脱力しました。

>191
いや、よく知らないけど、変数の型を知るために付けといたほうが良いとは思う。
一応、『マイクロソフト推奨プリフィクス』とか資料には書いてあるが、詳しくは分かりません。

193 :仕様書無しさん:02/03/20 16:12
ついてたから、バグの発見が早かったんでないの?

OOでなんか作ってるんでない限り、ハンガリアンやその派生はべつにわるくないとおもうよ。
このバグ治すときに型だけ治したりしてたら、あとでもっとくそみそに言われるだろうがね。


194 :仕様書無しさん:02/03/20 16:25
>186
String型でIniファイルから取得か。
最初から32ビット数値で受け取るよう、
GetPrivateProfileInt()に書き換えちまえ。

195 :仕様書無しさん:02/03/20 16:29
きっと後から倍精度型とかに仕様変更されることを見越してのコードに違いない。
きっとそうだ。


196 :仕様書無しさん:02/03/20 16:51
レコード件数に小数がはいってくる糞な仕様か。
おれならすぐ逃げる。

197 :仕様書無しさん:02/03/20 17:08
レコードの更新回数を小数部にいれとくんだよ、きっと。
5回更新すると、そいつの名前が変るの。
会社の決まりで。

198 :仕様書無しさん:02/03/20 22:49
>186
きっとそういった矛盾を修正する前に入院してしまったんでしょう…
きっと(w

199 :◆kaRMAJ7. :02/03/21 11:56
>194
モジュールの中には、数値で取得する関数もあるんですけどね。

>198
もうその矛盾した状態でシステムが4ヶ月は動いてましたよ。

ある意味、尊敬しますよ。
こんな書き方で動かしてたって・・・
凄いわ・・・ハァ

200 :仕様書無しさん:02/03/21 15:06
いまら!200げっとぉぉぉなのれす!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄(´´
  ∋oノハヽo∈   )      (´⌒(´
  ⊂(´D`⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

・・・・・・・・・・・・・・・・・・
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄
  ∋oノハヽo∈      (´;;
  ⊂(´D`⊂⌒`つ (´⌒(´

・・・・・・・そういえば・・・・・・
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
  ∋oノハヽo∈
  ⊂(´D`⊂⌒`つ; (´⌒(´

マ板で200はキリ番じゃなかったのれす・・・
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
  ∋oノハヽo∈
    (;´D`; )⌒ヽ
     U‐U^(,,⊃'〜... (´⌒;;

201 :仕様書無しさん:02/03/21 16:11
>>200
256でお待ちいたしております。がんばってね。

202 :仕様書無しさん:02/03/21 17:06
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という数字に注目

エンディアンが違うマシンに移植するとあぼーん



203 :仕様書無しさん:02/03/21 17:12
なぜこんなことをしているかというと、
サブルーチンの引数の型をフラグで判別する仕様になっている為。

誰だ、こんなコーディングをしたのは!


204 :仕様書無しさん:02/03/21 17:19
他にも、'i 'と 'l' ・'O' と '0' のタイプミスや、2000年問題(現在進行形で発生)や
文字列の長さが1足りない、変数初期化無しなど、問題山積み

既存のバイナリには、各種デバッグオプションがやたらつけてコンパイルされている。


205 :仕様書無しさん:02/03/21 19:14
>>202
よく知らんのだが、FORTRANってアプリ系?
汎用系なら、エンディアンが違うマシンに・・・なんてのは
想定されてないほうが普通のような


206 :仕様書無しさん:02/03/21 19:30
ガイシュツかも知れないが、

if ((x == 1)|(y == 1)) {

論理演算とビット演算は違うよって教えたら「でも動いてるし」だって。
ちなみにみかか系。

207 :仕様書無しさん:02/03/21 19:58
>>206
'|' なら、あんまし問題ないかも。'&' は、この場合なら良いけど、
イヤーンなケースが多々ありそう。

208 :仕様書無しさん:02/03/21 20:10
どっかのマクロが

IS_ERROR(errcode) (errcode)

とかやってて
if (IS_ERROR(err) | (y == 1)) {
みたいなのキボンヌ。

おまいらの電話料金の計算なんて、この程度のプログラムで
やってるわけだ。


209 :仕様書無しさん:02/03/21 20:10
| じゃだめだな & だ。


210 :仕様書無しさん:02/03/21 22:33
そういや モナー板(だったか?)で
引数が90個のソースに出会った...と
言うすげぇ書き込みを見た。
このスレにぴったりだと思った(w

211 :仕様書無しさん:02/03/21 22:36
>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
そのソースは痛いな。見る気が失せる!
それを作った奴も変数把握してるか疑問だ。

214 :仕様書無しさん:02/03/21 22:47
たぶん一太郎で書いた変数表があるから大丈夫だ。
罫線できちっと囲んだやつがな。


215 :仕様書無しさん:02/03/21 22:55
自分の限界に挑戦してたんじゃないの

216 :仕様書無しさん:02/03/21 23:12
>211
DBがオーバーフローするぐらいの貯金が欲しいですが(w

217 : :02/03/21 23:33
>>212
VBのグローバル変数が千個以上あるやつ見たことあるぞ。
で、iとかがグローバル宣言してあったので、
プライベート変数宣言を忘れた場合は謎の動作をしたな〜。

あと、測定器が吐くテキストファイルで、
・9999以外は測定値、
・9999測定不可
ってのがあったが、測定不可なのに数値つかうな面倒だぞ、ゴルァ!
多分、Cobolerが設計したんだろうな・・・・・

218 :仕様書無しさん:02/03/21 23:36
>>217
計測器は寿命が長いからそんな機械でも現役でいたりするんだよな。
でも数値以外を返すと受け側が面倒な気もするが。

219 :仕様書無しさん:02/03/21 23:41
でもマジックナンバーってMSのヘッダーにもあるしな。

220 :仕様書無しさん:02/03/21 23:42
>>218
テキストファイルなんだから、sokuteidekinainnja,gruxa!!とか出力してればよろし。

221 :仕様書無しさん:02/03/22 00:35
register int ri;
int *p = &ri;

酷かった・・・ほんと。

222 :仕様書無しさん:02/03/22 01:42
それだけじゃひどいとは言い切れないな


223 :仕様書無しさん:02/03/22 02:14
registerヒントが無視されるだけだ。


224 :仕様書無しさん:02/03/22 02:20
まあ、実力も知識もないくせに一丁前に愚痴だけ言えるやつもいるってことで >>222-223

225 :仕様書無しさん:02/03/22 09:18
ひどいも何もまともなコンパイラならコンパイラエラーになるはずだが

226 :仕様書無しさん:02/03/22 11:41
ナラネエヨ

227 :仕様書無しさん:02/03/22 12:17
register変数のアドレスを取ることはできないと仕様書に明記されていますが

228 :仕様書無しさん:02/03/22 13:28
いつの仕様書よ?

229 :仕様書無しさん:02/03/22 13:28
>>206
JAVAだったら結果はいっしょ。
boolean | boolean っていう構文ありだyo!
|と||の違いだけど、||はショートカットで、
左辺の結果によって右辺を実行しない。
(a == 1) | (method(parameter)) みたいな場合もあるので、
||で普段書いているとメンテナンスの時に右辺のメソッドが
実行されないようなバグを生んだりすることがある。

みかか系なら安全性重視じゃないの?


230 :仕様書無しさん:02/03/22 13:32
ミカカ系は納期重視・開発規約重視です。


231 :仕様書無しさん:02/03/22 18:40
if((name == null)|(name.length() == 0)){
というコードを書いた本人いわく
『Javaのバグっすかねぇ?』

232 :仕様書無しさん:02/03/22 18:56
安全性から言ったら229の||だとmethodが実行されないっていうコードはどうかと。

233 :仕様書無しさん:02/03/22 21:58
>>228
227じゃないけど、K&R第2版二回照るよ

234 :ヽ( ´〜`;)ノやれやれ:02/03/23 00:16
register宣言された変数に&を適用するヤツもどーかと思うけどねぇ。

235 :仕様書無しさん:02/03/23 00:19
俺去年入ったばかりの新人なんだけど
今やってる設計用のプログラムが

mainが5000行。
さらにほとんどの関数が3000行を軽く超える。
マクロを異常に多用。
作成者逃亡→アメリカへ。

どうすりゃいいんだよ…。毎日鬱だ氏脳…。

236 :仕様書無しさん:02/03/23 00:38
>>235
カナダに逃亡しろ

237 :仕様書無しさん:02/03/23 01:29
>>236
Σ(゚д゚lll)ガーン
な、何故にカナダ


238 :仕様書無しさん:02/03/23 01:31
>>237
いい国だよ。

239 :仕様書無しさん:02/03/23 01:49
C++ならregister宣言された変数でもアドレスを取れる。

240 :仕様書無しさん:02/03/23 03:04
235は、遥かカナダに逃亡しました。

241 :仕様書無しさん:02/03/23 03:16
>>235
新人をそこまで放置したのが問題では?
細かいレビューしないの?

242 :241:02/03/23 03:21
スマソ、間違った。
>>235が新人なわけね。ご愁傷様です。

243 :仕様書無しさん:02/03/23 03:45
>>235
リファクタリングすべし。


244 :仕様書無しさん:02/03/23 03:58
>>235
1からつくりなおしたほうが早い

245 :仕様書無しさん:02/03/23 13:08
>>244
Cなら0から、だな。

246 :仕様書無しさん:02/03/23 13:36
どんなだか見せて。

247 :仕様書無しさん :02/03/23 14:44
インデントとか凄そうだね。

248 :235:02/03/23 18:24
>>243
>>244
そうしたいけど設計にプログラムを使ってるだけなんで
上司も同僚もそんなことは必要ないと考えてる。
ひたすら問題が出たらお前は機能追加しろと。

>>247
インデントは割とまとも
なぜなら作成者のソースをほかの社員はコピペしてるだけなんで
だから中身について聞いても答えられる人もいない。

毎日辞めようかと考える。
でもまだ一年目。
どうしたらいいのか…。

249 :仕様書無しさん:02/03/23 19:22
>248
とりあえずmainをやっつけろ。
それでライブラリとか適正に作成してチカラを見せ付けてやれ。
その後で、他のコピペ元のソースを吊るし上げて
「こんなソースのままでは保守に金がかかって仕方ない」とアピールすべし。

しかし、「綺麗なソース」=「見通しの良いプログラム」と解っていない
連中にこれをしてしまうと干されるという諸刃の剣。
1が牛鮭定食好きならオススメしない。

250 :235:02/03/23 20:30
>249
ありがとう。
でも

>しかし、「綺麗なソース」=「見通しの良いプログラム」と解っていない
>連中にこれをしてしまうと干されるという諸刃の剣。

この可能性がかなり高いです。
当方一人常駐なんであぼーんされるかもしれんけどそれ覚悟でやってみます。


251 :仕様書無しさん:02/03/23 21:07
>>248
やめるなら、早めにな。漏れも同じような理由で3月一杯で辞めます。

252 :仕様書無しさん:02/03/24 01:40
サーバー系アプリなんだけど、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年間も面倒を見ています。
むりやり条件文で逃げ回った形跡もあります。
もう模様にしか見えません。
辛いです。
プログラマ自体やめようかな・・・


256 :252:02/03/24 10:35
>>253
いや、違います。
もう完成したのでこれ以上増えることはないみたいだけど・・・。

257 :仕様書無しさん:02/03/24 11:41
CWnd* m_hFoo;


258 :仕様書無しさん:02/03/24 14:06
>>253-254
TCSかー
あそこの社員5名ぐらいと一緒に仕事したことがあったけど
凄かったぞえ
サーバー系しか経験ないのにアプリ系の開発に加わってきた5名を
教育するのは大変だったべさ
全員4つ以上年上だったしのう


259 :仕様書無しさん:02/03/24 18:31
>256
あまいな。3〜5年後に新システムに移行する可能性があって、
安定稼動・経費削減のために流用することなんてザラ。
こうして伝統的なクソプログラムは引き継がれていくのだよ。

260 :TCS社員:02/03/24 21:02
>>258
社員ド貧乏で、会社も研修とか一切させてくれないんで無茶言わんでくれ
yahooとgoogleだけで仕事してるんだから。


261 :252=256:02/03/25 08:53
おいお前ら!
とりあえずmainを800行まで減らしてみました。
が、ここからどう減らせばいいか分からない俺も
ひょっとしてダメ人間ですか?
ていうか鬼のようなエラートラップが執拗すぎ…。

何気に0x100ゲットしてたワショーイ

262 :仕様書無しさん:02/03/25 20:07
>>261
関数として処理をきりだしてみたか?
縦横無尽にはしるフラグや、意味不明の状態変数の壁には気をつけろ!

263 :仕様書無しさん:02/03/25 20:16
場所によって意味の違うグローバル変数とかキボンヌ。

264 :261:02/03/25 21:05
>>262
変数は殆どスペルから意味が分かるのが不幸中の幸い。
つーか数えたらエラーチェックだけで300行あるよ…。

265 :仕様書無しさん:02/03/25 21:31
構造化例外とかつかってエラー処理簡略化したら綺麗になったりして。

266 :仕様書無しさん:02/03/25 22:44
>>264
>変数は殆どスペルから意味が分かる
罠かもしれんぞ。気をつけろ!!

267 :仕様書無しさん:02/03/26 10:36
>TCSは、動いてるからいいでしょ? ってなバカなことほざくし…

それが奴らの習性。


268 :Uppyon:02/03/26 10:48
TCSってチンピラみたいな主任を1人知っている

仕事はできないが恫喝するのだけはムネオなみにうまかったが(w

269 :仕様書無しさん:02/03/26 16:29
>>268
れっついにしゃるとーく!(笑)

270 :仕様書無しさん:02/03/26 19:59
>268
基本的に声とか態度が必要以上にでかい奴は使えない。これ定説。

271 :仕様書無しさん:02/03/26 20:34
>>270
禿堂age

272 :仕様書無しさん:02/03/26 20:45
声がぼそぼそしていて態度が必要以上におどおどしているヤツも使えねー
ストレス解消には使えるが。

273 :仕様書無しさん:02/03/26 22:55
仕事中に口がうるさい奴は役立たずが多い。

考えないで行き当たりばったり発言をする癖がついている。
=考えないで行き当たりばったり行動する癖がついている。

プライベートならどうでもよいが、仕事中の脳内がそんな状態の
奴は、プログラミングなんか出来ないよな。コンサルか営業でも
やってろよ。出来れば、俺の視界に入らないところで。

274 :仕様書無しさん:02/03/27 09:53
>>273
おれ思うにB型に多い気がする。
本人は、その時点でいい方法と思っているが、
毎回言うことが違うので、周りは、困惑。
B型人間イッテヨシ!

275 :仕様書無しさん:02/03/27 19:36
ぷログラマはA型かO型がベスト
SEはA型で。

過去出会ったSEは全員B型で揉め事おこしてた

276 :仕様書無しさん:02/03/27 19:41
血液型気にするやつは技術者にむかない。

277 :仕様書無しさん:02/03/27 19:46
>>274
お前、B型だろ?(w

> 考えないで行き当たりばったり発言をする癖がついている。

まさにそのまんじゃんか。血液型を云々してるあたりで、PGと
しては三流確定だがな。

278 :仕様書無しさん:02/03/27 22:00
ポインタ、WINAPI関数禁止なんてのは、まだまだ甘いな。世の中には、もっと
凄まじい規則の会社がイパーイあることがわかったよ。

279 :仕様書無しさん:02/03/27 22:08
コンパイラ禁止!

280 :Dream ★:02/03/27 22:17
この板だっけ?誰かいたよね
コンパイル申請書類があって、その書類持って別のフロアいって、
いちいちお願いしないとコンパイルできない会社の社員さんの話。

あれは衝撃だったなぁ・・・

281 :仕様書無しさん:02/03/27 22:20
ん?漏れん所はスケジュール表が埋まってたら駄目だたよ。

282 :仕様書無しさん:02/03/27 22:40
コンパイルは5回まで、それ以上すると給料ナシ

283 :仕様書無しさん:02/03/27 23:12
>278
Windows環境で?

284 :仕様書無しさん:02/03/27 23:19
MFCラッパー使うとか…

285 :仕様書無しさん:02/03/28 01:06
>>280 これのことね
http://pc.2ch.net/test/read.cgi/prog/1003497181/170


286 :Dream ★:02/03/28 06:27
>>285
そうそう。それです。世の中にはあり得ないと思うようなことがあるよね

287 :仕様書無しさん:02/03/28 14:35
>>278
昔とんでもない会社入ってしまった。
みんなAccessしか使えないのよ200人以上居るのに
SolarisやらUNIXwareいじる時、NTServer上げる時新人の俺が担当なのよ。
社内のサーバーもほとんど俺の担当になってしまって仕事中いっつも呼び出され
他の課でレクチャー・・・
その年俺ソフトウェア業界初めてなのに(趣味では色々アプリ多言語でやってた
C、アセンブラ68K、VB、Perl等)
即効辞めた
大企業のコンピュータ部門があれじゃ困るよね・・・


288 :仕様書無しさん:02/03/28 15:47
>287
そりゃあ、とんでもない会社にはとんでもない奴しかいないだろうさ。

289 :仕様書無しさん:02/03/28 16:00
>>288
今はフリーで開発やってる・・・

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
それ大丈夫か?
見落としてる処理ない?

292 :仕様書無しさん:02/03/28 16:10
>>290
中略が非常に重要な気がするかも

293 :288:02/03/28 16:21
>289
で、客先がとんでもないところとか。

>290
コボラーが作ったな、さては。
JOINを知らないってやつだろ。
いや、SELECT以外のSQL文を知らないってことも。

>291
Closeしてないとか。

294 :仕様書無しさん:02/03/28 19:57
>>283

そうだよ。悲しくなっちゃうよね。

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

という処理なら見たことあるな・・




296 :仕様書無しさん:02/03/28 21:19
>>295
それもコボラーだな。


297 :295:02/03/28 21:33
そいつに一言「あのー、レコードセットって何か知ってます?」と聞いたら

 「あたりまえだろ」

とけなすように言われた。だったら、SQL一文でアップデートしろよ・・・とおもた

298 :仕様書無しさん:02/03/28 21:40
>>295
もうバカすぎ…
count_hoge が数万件になったらどうすんだろ。
「なんだ遅い DB だな」とかぬかすんだろうか…

299 :仕様書無しさん:02/03/28 21:52
ストアドプロシージャならやりそうだな、それ。

300 :ななし:02/03/28 22:16
>>298

バカすぎ、には同感なんだけど、もしかして、コンピュータの計算量で報酬が決まる
(=アルゴリズムの性能が悪いほど、仕事を沢山したと見なされて評価が高くなる)
会社なんじゃないかな?

・・・んな訳ねぇか。

301 :仕様書無しさん:02/03/28 23:21
>>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
>>302
SEがコーディング?

305 :仕様書無しさん:02/03/29 01:08
>>303
開発ステップで決まる場合、コメント入れまくり。
まだコメントをステップに入れる甘々だった昔の話。

306 :仕様書無しさん:02/03/29 01:13
>>304
昔とった杵柄で
「サンプルあったほうがわかりやすいだろ!」とかいって送ってくる。

で、目に見えないところで客に納品してるし。

307 :仕様書無しさん:02/03/29 01:19
>>304
というかあくまで「自称」

設計のレベルは全然SEじゃない。

308 :295:02/03/29 02:58
>>298
ぬかしてたよ(w

60万件データの更新に15分以上かかってて、上司に「なんとかならんのかね」と言われたのに対して
「データが多すぎます、処理速度はこれが限界です」と言ってたので、
作り直して、さくっと数秒で終了する処理に直してやったさ(Ww

309 :仕様書無しさん:02/03/29 07:00
で、どうなった?
続きが聞きたいage。

310 :仕様書無しさん:02/03/29 08:08
部長にまで上り詰めた元コボラーに目をつけられて
窓際に転落。

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件づつプロパティに代入。

動きゃいいってもんじゃねえよぅ

315 :仕様書無しさん:02/03/29 10:51
>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


322 :仕様書無しさん:02/03/29 14:32
>320
どこの話だかわかっちゃうじゃんよ>三行間の
日立はともかく客先に迷惑かけるようなカキコの
コピペはやめれ。

323 :仕様書無しさん:02/03/29 14:58
>「データが増えてきたら遅くなってきました。どうしましょう?」と客に泣きつかれて

>「じゃあ、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週間で辞めた。

326 :325:02/03/29 16:38
追記

コボルの研修は当時より20年前の教科書のコピーだった。
VB5.0の開発でVB2.0のマニュアルを読めと言われたり…。

1週間しかいなかったけどもりだくさんだよ。
ハァ…。

327 :仕様書無しさん:02/03/29 19:30
>>311
スケジュール的に厳しいものとか、作業分担狂ってるってものに対しては
動くけどちょっとバカ(遅い、など)なもので客の要求を満たしてはいるがもうちょっと・・・のものを作り、
客があーだこーだ仕様変更や改善要求を出してくるのを待ち、営業に相談し¥↑させて、さくっと
改善したことなら何度かある


328 :仕様書無しさん:02/03/29 22:02
コメントに
/* 分からなかったら誰それに聞け */
と書いてあった。
誰それは既に辞めていた。

329 :仕様書無しさん:02/03/29 23:35
>>324
そのままペイオフに突入

>>327
意図的にセキュリティホールを仕込み、サービスファックで…

330 :仕様書無しさん:02/03/30 00:11
サービスファックか…

331 :仕様書無しさん:02/03/30 00:13
(´д`;)ハァハァ

332 :仕様書無しさん:02/03/30 07:42
>323
> >「データが増えてきたら遅くなってきました。どうしましょう?」と客に泣きつかれて
>
> >「じゃあ、PcAnywareでサーバにログインしてサーバ上でAccess使いましょう」
> ツッコミどころ満載でワラタ

AccessのリンクテーブルはテーブルまるごとAccessに持ってくる。
よってデータが増えてくると通信量が増えてしまう。

PcAnywereでつなぐ。サーバ上でAccess立ち上げて使う。PcAnywhereの場合は
画面の書き換え情報と入力情報だけをやりとりする。ISDNだとちょっともたつく
けれども、それはDBのデータが増えても関係無い。ほぼ一定している。

作り直すのもいいが、仕様書も書かねばならんし、工数も掛かる。
当然テストもしなければならない。客はお金は出せない、と言っているなら
こちらもお金が掛からないように解決策を考えた。

もっとスマートな解決策はあるだろうか?

333 :仕様書無しさん:02/03/30 08:00
とりあえずADO+パススルークエリーでお茶を濁せ

334 :仕様書無しさん:02/03/30 09:18

パススルーはAccess以外のDB開発経験があれば、どうってことないと思いますけど、
Access + DAO + MDB だけでやってる人はほとんど一から勉強し直しに近いのでは?


335 :仕様書無しさん:02/03/31 01:28
聞いたらSE全員がSQL知らないんで、DB系業務一切やったことすらない漏れに
おはちが回ってきたよ。
SQL2Kサーバがやたらメモリ食ってるそうな。エソタープライズマネージャ見たよ。



は ぁ 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜

た だ プ ロ パ テ ィ を 見 る 。 そ ん な 基 本 も 無 い ん で す か


336 :仕様書無しさん:02/03/31 16:12
>333
アドバイスありがとう。

お客さんがお金を出す気になったら検討してみますです。

337 :仕様書無しさん:02/04/04 02:05
初期化関数で、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なんて使われてたらどうします?

エディタでやるにしても、一発ではなく、
人の目で確認しながら変更する(大抵のエディタにはそういう機能がある)ほうが結局は近道
というのが私の結論です。

341 :339:02/04/04 04:50
>>340
> 実際にやってみたことあります?
 % grep crear *
で確認
 % perl -pi.bak -e 's/crear/clear/g'
で置換、てな感じで。

grep の結果によっては
 % perl -pi.bak -e 's/crear\(/clear(/g'
などなど。

> 人の目で確認しながら変更する(大抵のエディタにはそういう機能がある)
> ほうが結局は近道というのが私の結論です。

まぁそうだけど、全て手で修正するのはあほらしいなぁ。
おとしどころは「基本は機械。人間が補佐」あたりで手を打たんかね?

リファクタリングエディタがもっと普及すればいいのにね。


342 :ねこ:02/04/04 06:04
俺の場合は、ソースコードの構造が頭に入るから、
エディターでちまちま(y/n)ってやってます。

意外とお勧め。

343 :仕様書無しさん:02/04/04 06:36
>>340
その程度ならスクリプト書けば済む。
> ソフトウェア工学における通常の立場です。
大げさ。

344 :仕様書無しさん:02/04/04 08:12
>>340
修正できるだけまだマシだと思え。
共通クラスのメンバ関数名がスペルミスだらけ(他社が作成)で、そのシステムは運用中。
そんなシステムの機能追加なんてやってられん。

345 :仕様書無しさん:02/04/04 08:19
>>340
VC、秀丸程度しかさわったことないんだろうなあ。
emacsのquery-replace-regexpとか使ってミロや。
windowsしかつかえんだろうからxxyzzyでもmeadowでもいいぞ。

mac使いだったらごめん。


346 :仕様書無しさん:02/04/04 11:25
>>345
俺は、>>340擁護派だけど、
やはり人間の目で確認しながらやるのが正解だと思う。

あなたは、客先からソースの提示求められたことありますか?

スレと関係ないのでsage

347 :仕様書無しさん:02/04/04 11:49
なんかずれてないか?

348 :仕様書無しさん:02/04/04 12:59
>>347
ずれてても嵐じゃないから良い思ふよ。

349 :仕様書無しさん:02/04/04 13:24
make -> create とかなら問題があるが、
crear -> clear で問題がおきるとは思えん。
文字数まで一緒なんだし…。

crear -> clear
Crear -> Clear
で置き換えればいいじゃん。

>>345
VCにも秀丸にも正規表現はあるが、それよりすごいの?

350 :仕様書無しさん:02/04/04 18:43
>>346
> やはり人間の目で確認しながらやるのが正解だと思う。

なんでこんな機械向きのことをわざわざ人間がやらなきゃいかんの?
君はログファイルなんかも目 grep したりするタイプと見た。


たしかに >>340 はちょっと大げさだけど、言ってることは正しいよ。
確実にリスクを減らしたいなら、まじめに構文解析しないと。

将来は IDE にリファクタリング支援機能が標準装備になってるでそ。

今は過渡期だから、query-replace-regexp とか言ってる奴もいるけど。
性器表現を知らない人間でも、リスクなしでリファクタリングできる。
これが理想だよね。


351 :346:02/04/04 19:30
>>350
やっぱ目で確認したほうがいいよ。

性器→正規

でしょ?
変換なんて普段よく変換されるものから優先的に出てくるから、
あまり信用しない方がいいよ。

352 :Dream ★:02/04/04 19:42
>>351
そこはかとない悪意と善意にワラタ。

353 :仕様書無しさん:02/04/04 19:45
キャップ乱用厨ウザイ

354 :仕様書無しさん:02/04/04 20:18
コンパイラという名の高機能な構文解析器がすでに目の前に。
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
たとえスペルミスといえどもソースを直したら再テストせにゃならん。
再テストする覚悟が無ければ我慢したほうが言いと思う。

358 : :02/04/04 23:35
どうせまだ開発中だからソースの中見ているんだし、次のテストフェーズで
再テスト、再テスト

359 :仕様書無しさん:02/04/04 23:47
つーか、「先輩の作った関数名を勝手に直すわけにもいかず・・・。 」という 337 の
根本的な性格異常に対して、誰もコメントしないのが物凄く笑えるな >>338-358

おまえら、自分の知識披露したいだけとちゃうんかい。


360 :仕様書無しさん:02/04/04 23:56
関数呼び出しなんだから案外crear(で検索すれば案外さっくり行くかもなんて
crear (hoge);なんて制御文のように呼び出す変態的な
スタイルの人が居ると撃沈だが

361 :仕様書無しさん:02/04/04 23:57
>>359
深層心理的に、自分の知識をひけらかしたいとか
自分と同程度の知識を持った人と話をしたいとか、
自己顕示欲を満たしたいとか、

そういうことを思わずに、掲示板で見ず知らずの人間の物を教える人って、

ニルヴァーナの境地だよね。

362 :360:02/04/04 23:57
↑スマソ。なんか日本語変

363 :仕様書無しさん:02/04/05 00:53
今改修してるソース、
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

365 :337:02/04/05 02:37
>359
わはは、確かに話しがあらぬ方向に(^^ シンプルなソースだから、直してよそが
ヘンになるようなものでもないんですよ。

勝手に直せないのは、
1.指示された部分以外の修正・追加は、一応お伺いを立てなければならない
2.ワタシは新人なので、先輩のスペルを正すような真似をすると、生意気に思われてしまう。

というわけで、今の今は、だまってcrearと呼び出してますわ(笑 ま、そのうち・・・ね。

366 :仕様書無しさん:02/04/05 03:52
crear を呼び出す clear って関数を書けば良いだけじゃん・・・

367 :ねこ:02/04/05 04:20
>>365
知ってて直さない、嫌味な奴と受け取られる。
諸刃の剣。ならば直してしまうのも手。

>>364
publicとprivateなら大丈夫?な気もするが。
いちおー修正前後でバイナリの比較しませんか?

368 :仕様書無しさん:02/04/05 06:24
DIM A AS Boolean ’ブーリアン型

369 :仕様書無しさん:02/04/05 08:11
わざと誤字を入れて、相手の出方をうかがうテストだったりして。


370 :仕様書無しさん:02/04/05 08:12
つか CR + EAR の造語だったりして。


371 :359:02/04/05 08:28
>>365
>1.指示された部分以外の修正・追加は、一応お伺いを立てなければならない
当たり前の環境すぎて、笑う気にもなれんわ。
愚痴スレなら無視するけど、それで辞めようと思う奴なんてこっちから願い下げだな

>2.ワタシは新人なので、先輩のスペルを正すような真似をすると、生意気に思われてしまう。
つまり、過去に先輩にそういう指摘をして生意気に思われたということか?
そうじゃないかなあ・・と思っているだけなら逝ってよし。

372 :仕様書無しさん:02/04/05 09:26
creat を思い出して余韻にひたる会

373 :仕様書無しさん:02/04/05 10:19
互換性のために「e」は取りました。

374 :仕様書無しさん :02/04/05 10:33
Message が Massage で萎えた。 マッサージカヨ!

375 :仕様書無しさん:02/04/05 11:45
注釈からラベルから全部massageって書いたのが活字になっちゃった。
指摘されて欝になったよ。

376 :仕様書無しさん:02/04/05 13:46
>crear を呼び出す clear って関数を書けば良いだけじゃん・・・

それは痛烈なイヤミだな(藁


377 :仕様書無しさん:02/04/05 21:48
>374
initial -> initailってのもある。(initializeの略らしい)
打ち間違えてるけど、作ったやつがコピペしてソース書いたみたいで動いてる。

素直に*_initにしとけば一目瞭然なものを半端に略すなって気がする。

378 :仕様書無しさん:02/04/05 22:21
void uwarite

に勝てるものなどない

379 :仕様書無しさん:02/04/05 22:34
上書き?

380 :仕様書無しさん:02/04/05 22:40
なんかtrableとかいうディレクトリができていたので、
ln -s trable trouble
としておきました。

381 :378:02/04/06 01:19
>>379
そ。5年前の4月に入った会社、3年上の先輩のソース見て唖然。

漏れ「これ、なんですか?uwarite??」
浅敗「ああ、それなあ・・いや、上書きの上ってのがわからなかったんだよ」
漏れ「OVER・・・ですよね」
浅敗「あ、そうかそうか!まあ、それでも意味わかるからいいだろ」
漏れ「riteって何ですか?」
浅敗「書く、って意味だろ」
漏れ「・・・wは?」
浅敗「え?」
漏れ「write・・・ですよね。。」
浅敗「そうなのか?まあ、いいだろ読めるし」
漏れ「はあ・・・」

というのが最初に入ったプロジェクトの共通関数の1つ。
他にも deta_load や retarn_vale とかあって爆笑。



382 :仕様書無しさん:02/04/06 01:38
>>381
小熊ちゃん思い出したよ…て、何のことかわからんか、スマソ。
ローマ字と英単語がごっちゃになっててすさまじいね。(w

383 :仕様書無しさん:02/04/06 01:42
>>381
こそっと一括痴漢しとけ

384 :仕様書無しさん:02/04/06 02:04
まあtypoも勝手に作った言葉もまだいい。
海外向けにローカライズして「datas sended」つー表示はねーだろ!
しかも仕様書にまで、ご丁寧にメッセージ一覧で載ってるぞ。ハヅカシー

385 :仕様書無しさん:02/04/06 02:20
正直、俺もtypeも関しては人の事笑えないんだよな、はぁ。


386 :仕様書無しさん:02/04/06 08:20
>>385
ここでtypeって打ったのはtypoの間違いだよな?

387 :仕様書無しさん:02/04/06 09:30
〜out って書きたいところを 〜put ってtypoしました。
しかもそれが社内のライブラリに残ってます。

恥ずかしくて辞めたい...

388 :仕様書無しさん:02/04/06 13:40
>>387
>〜out って書きたいところを 〜put ってtypoしました。
>しかもそれが社内のライブラリに残ってます。

それはそれでいいんじゃないか?
どういう動作するかにもよるけど、少なくともPG連中には通じると思うぞ。


389 :仕様書無しさん:02/04/06 14:25
>388
'〜out' で一つの単語なんだよ ヽ(`д´)ノ ウワァァァァン

390 :仕様書無しさん:02/04/06 15:02
おおもりよしはる=ロリペドオタ、アニオタ、モツオタ、ベトオタ、ブルオタ、セガ信者
ひまわりと幼女のすじまんこに異様な執着心を燃やしているロリペド絵描き
2浪して九州大学歯学科に進むがプロのイラストレーターになるために大学を中退、
同人活動とUOに専念する日々を送るが、その生活は苦しいらしい(藁
自らを画家と呼び、ともすれば不真面目なものと見られかねないアニメ絵を「芸術」
の域にまで高めようとしている(らしい)。   
氏は近所のょぅι゙ょにまんこ見せてもらって模写してるらしい。
こいつ、私が小学の時、私のまんこにちんちんこすりつけて精液を顔にぶっかけやがった奴。
当時は意味が分からなかったが。もう、死ねよ…と。
UOではKanaeというテイマーと、SASAWOという斧戦士(赤キャラ)を持っている。@Izumo
【すじ】 おおもりよしはる先生 【すじ】
http://yasai.2ch.net/test/read.cgi/doujin/1016199359/
オリジナルキャラ七瀬香奈恵抱き枕(すじ丸出し抱き枕)
http://www.p80.co.jp/p/k_sinki/yoshiharu/kanae2002.html

おおもりよしはるとくらべると
↓こちらの絵のなんと上手いことか…。
http://www83.sakura.ne.jp/~aniero/file/gs_bluelad.jpg

391 :仕様書無しさん:02/04/06 15:22
 とある業務メール。
 関数名を仮名にした以外は、ほぼマンマ



件名 : 【【【重要:確認依頼】】】ソースコードへのコメント記入について

(略)
ソースコード中のコメント記入についての
確認依頼です。

【依頼の背景】
納入ソースファイルの内容を確認したところ
下記のコメント記入があり、非常に問題となって
おります。(現時点では社内レベルですが)

(社名)として各担当者殿が日々の努力の結果として
納入したソースファイル中に心ない一部のコメントにより
全体の品位を疑われるような記述がありました。
(顧客名)さんには未だ認識されていないようですが
この様なものが発見された場合に(社名)としての
責任問題まで行きかねません。

(略)

*** 以下、問題のコメントです。 ***

///////////////////////////////////////////////////////
// 関数名:信号打ち出し試験関数(func1)
// 機能概要:だから試験用だって
// パラメータ:だからないって
// リターン値:そんなもん期待すんな
////////////////////////////////////////////////////////
void func1()
{
func2("失敗だよーん やり直しだぴょーん");

〜中略〜

//////////////////////////////////////////////////////
// 関数名:****試験関数(func3)
// 機能概要:しつこいぞ
// パラメータ:だからないんだよ
// 戻り値:いいかげんにしろよ
//////////////////////////////////////////////////////
void func3()
{
func2("だめだったねー よかったらもう一回あそんでね ");


392 :仕様書無しさん:02/04/06 15:58
>>391
そいえば、昔、ショッピングサイトの構築の際、
振り込み請求画面のHTML中に
「とっと金払ってね」
とか、書かれてて大問題になったっけ。
主任が平に降格されてたような。

393 :仕様書無しさん:02/04/06 16:25
>>151
激ワロタ、訳わからないソースだろうね。

394 :仕様書無しさん:02/04/06 21:18
391
コードレビューはしないのか?

395 :仕様書無しさん:02/04/07 08:07
>>391
コードレビューで
自分のテスト用関数のコメントが
コーディング規則に従ってないとか文句つれられた
プロクラマーさん きれちゃったのね


396 :仕様書無しさん:02/04/07 09:19
>>391
うわぁ・・・

397 :仕様書無しさん:02/04/07 09:27
ごめん、俺も>>391の件みたいなことやった経験があります。
愚痴を書き連ねました。

398 :仕様書無しさん:02/04/07 10:12
「このソース、最後までレビューされないだろうなぁ」
ってときは、あらぬことを書き連ねることがあります。

/*
仕様が曖昧なまま実装しました。
もちろん再三問い合わせましたが
SEは「もうすぐ決まるから」と逝ったまま
納期が迫って来てます。。。

お前仕様一つも決められないで
SEなんてやってんなと。

一家四人で詳細設計か?おめでてーな。
「よーしパパ、共通関数仕様書まとめちゃうぞー」
とか逝ってんの。もう見てらんない。
俺が持ってる「はじめてのC」やるからその席空けろと。

「もうちょっと待って、もうちょっと」
なんて3回も待たされて、そこでまたブチ切れですよ。
もうね、アフォかと、ヴァカかと。
*/

399 :仕様書無しさん:02/04/07 10:20
セクハラ系関数名 fuck();
どうもフック関数のつもりだったらし。


400 :仕様書無しさん:02/04/07 12:37
俺も1年目に>>391に近いことをやって、リーダーから怒られた経験あり(w

でも、先輩の大半が全ての関数のヘッダで
 関数名:(その名前)
 概要:?
 用途:?
 引数:?
 備考:?
 作成日:?

とやってたから、「ああ、ここはそういうとこなんだー」と思い

 関数名:(その名前)
 概要:(ここはきちんと書いた)
 用途:さあ?
 引数:見てのとおり
 備考:特にないです
 作成日:タイムスタンプ見てちょ

とやったら、何故か俺だけ叱られた・・・





401 :仕様書無しさん:02/04/07 14:58
関数のコメントから、ドキュメントを生成するために決めた規約
ということがあるからね。

プログラム作成者名の入力欄があるコメントには注意しましょう。


402 :仕様書無しさん:02/04/07 15:09
/**
うっかりJavadocで関数票に炙り出される罠。
**/

403 :仕様書無しさん:02/04/07 15:14
>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

ばーか。ばーか。ばーか。

405 :仕様書無しさん:02/04/07 15:34
>>404
宣言してあるだけマシだと思った私はかなり毒されてますか?

406 :仕様書無しさん:02/04/07 15:34
>405
真のVB厨は配列にできる変数を個別に宣言する。コレ最悪。

Dim a1 As Integer
Dim a2 As Integer
Dim a3 As Integer
Dim a4 As Integer


407 :仕様書無しさん:02/04/07 15:37
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

409 :仕様書無しさん:02/04/07 16:30
>>406
それ、VC++でやられた…
後輩だったので、会社辞めようというより辞めさせようだったけど。
連鎖的に、ループにできる部分がコピぺで200行くらいになってた。

410 :仕様書無しさん:02/04/07 17:15
VBで

Public i(20000)

となってて、使い方が

i(1) = i(30)

とかで、配列の意味はまったく残ってないソース解析したことあるぞ
作ったやつ曰く「配列の意味は別のファイルに書いてましたけど、完成したから
いらないと思って消しちゃったんですよ」だった。

411 :仕様書無しさん:02/04/07 17:23
>410
よっぽどその会社に居るのがイヤだったんだろうなぁ(w

412 :仕様書無しさん:02/04/07 18:34
>411
その手があったか!

413 :410:02/04/07 20:23
>>411
最初はそう思ったけど、単なるアホでした。
テスト終了後に問題発生、テストデータを残してあるもんと思い聞いたら

「テスト終わったのでデータはもう消しましたよ」

テスト仕様書見せろっていったら

「テストでは問題なかったので全部消しましたよ」


414 :仕様書無しさん:02/04/07 23:02
関数内で何箇所もある他関数コール。
その戻り値格納用に、すべて違う変数を使用。
しかも、値を格納だけして参照しないものも多数。

もうね、アホかと。バカかと。

415 :仕様書無しさん:02/04/07 23:09
↓コメントだけで、逃げてる人を見たことあるっす。
void hoge(char* p) {
//pにはNULLを絶対に渡さないこと
}
あと
void iikanji() {
//いい感じな処理をします
}
どんな処理やねん!

416 :仕様書無しさん:02/04/07 23:19
>>415

|void iikanji() {
|//いい感じな処理をします

 藁タ

417 :仕様書無しさん:02/04/07 23:27
>415
ワラタ
ファジー搭載の頭のいい関数だったら尊敬できるな。

418 :仕様書無しさん:02/04/08 01:07
>>414
格納だけで参照しないのは、デバッグ時に必要だった可能性あり。
たまに、デバッグ→完成!さあ、無駄な返り値を消そう・・・と思ったら
「格納する処理があったから動いているかもしれないのに、消して動かなくなったら」どうするんです!!」
と謎の注意をする人もいるからな

419 :MZ:02/04/08 03:07

CommPtr->Finished = TRUE;
CommPtr->Finished = TRUE; // 念のため

‥あほかい。

420 :仕様書無しさん:02/04/08 03:26
>>419
いや、念には念を。これ大切です。

421 :仕様書無しさん:02/04/08 05:37

1メソッドが5キロほどある。


422 :仕様書無しさん:02/04/08 07:11
>>419
ワラタ

423 :仕様書無しさん:02/04/08 07:34
>>419
連続は見たことねーな
VBで標準イベントをコールしまくるアホなメソッドで、
その標準イベント内で同変数を書き換えまくるというのが理由で
メソッドの頭と最後で419みたいなのを書いてたソースなら知ってる

424 :仕様書無しさん:02/04/08 08:29
>>423
もしかして同じ職場か?
俺のソースを見たことがあるとは・・・。

425 :n4nc:02/04/08 09:00
>>414
参照しないのに格納は賛成しないけど,
各戻り値を違う変数に格納は賛成.
それぞれの戻り値をどういう用途で使うかを
示すわかりやすい名前を付けるべきだ.
同じ変数を使いまわしされたりすると
その変数がどこでセットされたか追うのめんどいし.

426 :仕様書無しさん:02/04/08 09:42
VBだろうがPerlだろうがCだろうが、
とにかく「変数は全部グローバル変数」
が一番萎える。

427 :ななし:02/04/08 12:09
>>426

たぶん、メンテ者に対するイヤがらせ(藁

428 :仕様書無しさん:02/04/08 12:48
時効だから告白するが...
C++で書いた交換機制御のコード中に

int i,c,b,m = 0; // 大陸間弾道弾(カウンタだよん)

って埋め込んだ記憶がある。規約で変数は処理の先頭で
まとめて宣言、ってのがあったんで遊んだのだが。


429 :仕様書無しさん:02/04/08 12:50
>>428
おちゃめさん

430 :仕様書無しさん:02/04/08 14:26
>419
組み込み系で、トリガたたくときに
*video_init = 0;
wait(10); //10u wait
とか書いて信号の立ち上がりを待たなきゃいけないもの
だったとか?

昔、ハードのことよくわからなくて、ドツボにはまったことあったな。

431 :仕様書無しさん:02/04/08 18:32
うちなんか、変数はできるだけグローバルに。

だぞ。

432 :仕様書無しさん:02/04/08 18:35
>>431
そのこと自体が悪い訳じゃない。
それに起因するトラブルが怖いだけ。

433 :仕様書無しさん:02/04/08 19:35
>431
グローバル変数だと機械語に落ちたときにデバッガで追いやすい、
という理由なら納得しなくもないが。
コーディングするほうとしてはせめてスタティックなローカル変数程度で
勘弁して欲しいところではある。

434 :仕様書無しさん:02/04/08 19:45
>>426
全部ではないが、関数の戻り値やループ用変数は全部グローバルって人を
見たことがある。その人がそういうことを行った理由が、また爆笑モノ。(C言語)

「えっ、だって関数の中で何個も変数宣言するよりも、外で1つにするほうが
 メモリの使用量少なくてすむでしょ」

おっさん、あんた・・・・

435 :ななし:02/04/08 20:13
>>426-434

(少なくともVB使いの場合は)愚弄罵る変数を多用する人たちは、引数の使い方を
知らない場合が多く、ほとんどのサブルーチンが引数なし。(藁

結局、引数の渡し方も、戻り値の取り方もよくわかってないから、愚弄罵る変数
を多用せざるを得ないという構図・・・。(鬱

436 :仕様書無しさん:02/04/08 21:37
しかも型が馬離暗吐ばかりなんだよな。

437 :仕様書無しさん:02/04/09 00:22
それでもそれなりに動くVBってすばらしい!


438 :仕様書無しさん:02/04/09 04:07
ソースコード納品になってて、引継ぎして完全実行したらエラー出まくり。
おいおい、これコンパイルしたことあるんかい!と作者(別の部署に異動済み)に聞いたら

「ソースコード納品でよかったのでそんなことやってませんよ」

つまり、テストもしてないんだね・・・

439 :MZ:02/04/09 16:10
>>430
そう (^^; 通信ポート内での書き込み終了フラグを立てる処理。一行目の後で
割り込むとバグとなるんだが、時間的に2行目でやれば再現しなくなる。

割り込みマスクとか排他処理とか知らんヤツがSEやってる制御系ソフト
ハウス、ってのは、辞めようと思いましたです。はい。

440 :MZ:02/04/09 16:18
ついでに、同じ会社での出来事。
サブシステムとの間をベーシック手順もどきで通信しているんだが、
初めての結合試験、メイン側のプロトコルモニタ見ていた私。
「はい、それでは開始電文を送信します」
メイン→サブ:<SOH> 1 <STX> S T <ETX> = 01 31 02 53 54 03
「受け取りました〜」「応答返します」
サブ→メイン:A C K 0 = 41 43 4B 30
「‥」

‥もう、バカかと。アフォかと。

441 :仕様書無しさん:02/04/09 22:20
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

意味ワカラン

444 :仕様書無しさん:02/04/10 18:43
わかるよー

445 :仕様書無しさん:02/04/10 19:00
>>443
ソースだけコピペして「意味ワカラン」

キミ、普段から「日本語を喋れるように努力しなさい」って言われてるよね

446 :ななし:02/04/10 21:48
>>443

コメントがないので、作成者以外の人にはちょっとわかりにくいかも。
それから、個人的には、スプレッド?を使ったことがないので、SetTextメソッドというのが
どんなメソッドなのかがよくワカラソ(指定座標にデータ出力・・・かな?)

# インデントなしでループのネストは読みにくいですね。PREタグが使えないからしゃーないけど。

447 :無有:02/04/10 21:49
ふと、今日会社で雑談してる時にサイテーなコードの話になったので書いてみる

・NORTi(リアルタイムOS)使用のソース(もしかしたら勘違いだったかもしれないが一応C)
 関数テーブルで飛びまくりの上、飛んだ中でセマフォ乱立
 加えて、同じ領域の変数をかなりてきとーに別名で設定
 作った奴も把握できなくなっているようで、
 領域乗り越え&同時アクセス起こりまくり
 しかも、あらゆる変数がすべてメモリエリア上に固定されている

・組込み系(一応C)
 変更履歴や変更箇所をコメントアウトして残すという規約
 まあ、これ自体はそう問題でもないのだろうが
 十年以上の使用実績と、細かい改変とパッチの山
 おかげで、全ソースの六割が無意味なコメント
(変更箇所にコメントったって、
 /* 01/14 Suzuki */
では、誰がいつ何のためになおしたのかすらわからんわい)

・ 某制御系補助プログラム(VB)
 頼むからRedimで次元を変えるな
配列を構造体代わりに使うな
 関数の入り口と出口で引数の次元と
 各内容の意味
(配列を構造体代わりにしているので添え字ごとに違う意味になる)
が変わった日にはデバッグしようもないぞ
 

448 :MZ:02/04/10 22:57
> セマフォ乱立
私なら捨てます、そのコード。(^^;

449 :仕様書無しさん:02/04/10 23:48
Cのプログラム。

関数はただ一つ、main()のみ。wcでみると2400行とちょっとだけど、
1行中に;がいっぱいある…。

なんか妙に左側がそろってるなと思ったら
分岐は if (...) goto hoge; else goto fuga; のみ!
while (...) {}とか do { ... } while (...) とか for (..;..;..) {...} とかが
一つもないのだ。


早速コードを書いた奴を呼び出してせめる。

「あんた、Cの他は何の言語知ってるのさ」
「N-BASIC...」
「...」
「...」
「だったらここはループ使えや」
「...........ループって?」
「Basicだったら、えーと(Basicなんかもう忘却の彼方だよ).....FOR〜NEXTだ」
「ふぉあねくすとってぇ?」

こ、こいつ…FOR〜NEXTしらねーよぉ。今までなにやってきたんだ?????

450 :仕様書無しさん:02/04/10 23:56
1Kステップ越えるBAT

451 :449:02/04/11 00:00
しかもこいつ、「Cってgosubがないから不便だね」とか言い出したんよ。
で、コード見たら

gp = 7; goto sub4080; ret007:
...
sub4080:
...
if (gp == 4) goto ret004;
if (gp == 7) goto ret007;
以下if()gotoが延々と続く

こんなコードをオレに渡して、いったいどうしろと。

452 :仕様書無しさん:02/04/11 00:10
ごめん、バイト学生にはネタにしか見えない。

453 :仕様書無しさん:02/04/11 00:12
SQLServer や Access を使えばいいのに、
魔がさして、INIファイルをDBにしてしまった。
今でも正常に動いているけど、
作ったころは64KBの制限があるなんて
考えもしなかった。

454 :仕様書無しさん:02/04/11 00:22
>>451
gosub先でclearしてから変数を全部再宣言して、gotoで戻りますが何か?


455 :仕様書無しさん:02/04/11 00:54
>>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塁に走り出すよなもんじゃん。

458 :仕様書無しさん:02/04/11 07:11
>449
処理速度だったらそれが一番早いぞ。

459 :仕様書無しさん:02/04/11 08:16
とある汎用機用のソフトで
hogeとhoge2というのがある。2の方が新しいバージョンだな。
そして、メーカーはhoge2のみソースパッチをリリースした。
しかしこっちで使っているのはhogeだ。

汎用機部隊は何をしたか?

hoge2のソースパッチをhogeに無条件に適用後、動かしてみて
バグを取ろうとしたらしいんだ。

hogeとhoge2ではハナから内容が違うのにどうやってパッチが
適用できたんだろー? とか、ウチ独自の仕様変更も加わって
るのにそこはどうしたんだろー? とか今でも疑問は尽きない。


460 :ななし:02/04/11 08:37
>>443-446

もしかして、443氏は「アルゴリズム的にタコ」ということが言いたいのかな?
二次元配列を使えば、一括処理できる、とか?(試してないけど)

そのあたりの「趣旨」を書いて欲しいところ。

461 :仕様書無しさん:02/04/11 11:03
>>433
つか解放してねえな>>配列

462 :仕様書無しさん:02/04/11 11:31
゚Д゚  !!

463 :仕様書無しさん:02/04/11 12:24
いいんじゃない? 最近はメモリたくさん積んでるし。

昔いた会社で、開発主任が
「メモリにゴミがたまるから半日に一回再起動してください」
って客に言ってたよ。マジで。

464 :仕様書無しさん:02/04/11 13:06
Windowsだとあながち嘘ではない。

465 :仕様書無しさん:02/04/11 16:40
>>460
With frmMenu.sprBihin で別フォーム上のコントロールをいじってる
部分からして、俺的には糞コード

466 :仕様書無しさん:02/04/11 16:56
>>465
じゃあどうするの?

つーかフォームもスプレッドもPublic宣言されてるんだから
構わんと思うが。

467 :仕様書無しさん:02/04/11 17:09
別フォームに関数作ってそれを呼ぶかなぁ。

468 :仕様書無しさん:02/04/11 17:31
>>467
モジュールじゃなくてフォーム?

わけわかめ

469 :仕様書無しさん:02/04/11 17:33
暗黙のコードでpublic宣言すっからVBは糞なんだよ

470 :仕様書無しさん:02/04/11 17:40
某パソコン屋さんのオンラインショッピングのソース。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
さよなら言うまで終われないのか。
買うまで返さない店なのか。(嫌な店だ)


473 :仕様書無しさん:02/04/11 18:04
if(a>0){a+=1}else{a=(a!=0)?(a-a):(0)}
やりたいことが判らん

474 :仕様書無しさん:02/04/11 18:10
>>473
わかりはするけど…素直にえるしふ使えと。
そういや以前、==使える局面なのにやたら!=で判定したがる人がいた。
わかりづらいんだよなー。

475 :仕様書無しさん:02/04/11 18:14
>>473
if(a > 0)
   ++a;
else
   a = 0;
まとめると、こうか?
何をどうしたらそんな糞コードが書けるんだ‥‥‥

476 :仕様書無しさん:02/04/11 18:16
a=(a!=0)?(a-a):(0);
恒等式じゃないか?

477 :仕様書無しさん:02/04/11 18:31
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 ;
}
----

478 :ななし:02/04/11 19:58
>>477
禿藁。(小学生の作文なみのレベル)

479 :仕様書無しさん:02/04/11 20:00
>>477
あー

3年前に入ってきた新卒に、能力テストということで

 課題 「うるう年を求めるプログラムをCでかけ」

を出したら、一人だけそういうソースを出してきて「よくできてるでしょ?」と
嬉しそうに言ってたのを覚えている。

部長に糞呼ばわりされて、実際仕事させたら糞で、半年で自主退社してもらったっけなあ

480 :仕様書無しさん:02/04/11 20:15
2099年まで利用可能ってコメント書いて、

leap_flag=0; if((year%4)=0) leap_flag=1;

て書いてあったソースだったらまだ頭つかってるなコイツって思えるけどね、
実際に漏れが2000年でソースチェックしまくったときには
そういうの見つけたことあったよ。

でも元ソース作成時に、477のコード書いたその部長とやらはアホすぎ(w

481 :ななし:02/04/11 20:36
>>477

せめて、forループで回して欲しい。(違

482 :仕様書無しさん:02/04/11 20:51
>>477
西暦99年までですよね。
埴輪と一緒に埋まっててください。

483 :_:02/04/11 20:55
if(条件式){
 長〜い長〜い通常処理
}else{
 1行の異常処理 exitとかreturnとか
]

なぜ逆にしない?

484 :ななし:02/04/11 21:02
>>483

事実上同等アルゴリズムなのに、ちょっとの配慮で可読性が大差、という例ですね。
(「大差」はちょっと大袈裟ですが)

485 :仕様書無しさん:02/04/11 21:05
ああ、俺もうるう年の対応で、テーブル作ってまわしたタイプだ。
ごめんよ、馬鹿で・・・。

486 :仕様書無しさん:02/04/11 21:06
>>483
その、長〜い長〜い通常処理  をなんで関数にしないんだろ?


487 :ななし:02/04/11 21:07
>>486
そのご指摘も、ごもっとも。

488 :仕様書無しさん:02/04/11 21:13
なが〜く書くのもどうかと思うが、
長いからというだけで関数にするのもどうかと
(いや、ちゃんと意味のある単位で切り分けろってことね)

489 :483:02/04/11 21:20
>>486
PGに技術がなくてうまく関数に切り分けられないからだなぁ(苦笑)。
もう何がなんだか。

if文周りの欝なプログラムはたくさんあるはず。
入れ子が深かったり、{}の中がやたらと長かったりと
もうメンテナンスしたくないと言いたくなるものが
どれだけあることか。

490 :ななし:02/04/11 21:21
>>488

SQL文をベタに書くと、アルゴリズム的に特に冗長でなく、妥当な内容でも、
たちまち数百行になってしまいますね。

491 :ななし:02/04/11 21:26
>>489

VB6.0以前の仕様だと、論理AND / OR 演算子が短絡しない(常に右辺も評価されてしまう)
ので、意に染まないIf文のネストをせざるを得ないケースもままあるのですが、それでも、
センスのいい人なら、3段を超える条件分岐のネストはやりませんね。

492 :仕様書無しさん:02/04/11 21:32
>>483
別に逆にしなくてもいいと思われ
仕様を理解した上でソース読んだらすぐわかることだろ?
ま、そのソースにコメント一切なしというなら同情はするが。

493 :仕様書無しさん:02/04/11 21:50
html吐いたりするのも、無意味に長くなるからいやだなぁ。

494 :仕様書無しさん:02/04/11 21:53
>>457
ボールの概念ナシ、1ストライクアウトって言ったらバッターもそうなるだろうに

495 :ななし:02/04/11 21:56
>>469

遅レスですが、クラスのイニシャライズ/ターミネートイベントに細工をして、
「暗黙の」インスタンスを使えなくする(使うとエラーになる)Tipをどこかで
見た記憶があります。

496 :ななし:02/04/11 22:04
>>

これです。↓

ttp://www.gj.il24.net/~nakasima/vb/tips/index.htm#VBTIPS16


497 :仕様書無しさん:02/04/11 22:11
>>450
AUTOEXEC.BATが5Kありましたが、何か?

498 :仕様書無しさん:02/04/11 22:12
>>495
Tipも何も、あったりめーじゃんよって感じの知識だぜ、そりゃ。
たまにいるよな〜 常識並の知識をありがたがるやつって。

499 :ななし:02/04/11 22:17
>>498

VBは内部の仕組みがわからんでも使えてしまう言語だから、常識並みとは言えない。
(VBオンリーの人間にとっては)

500 :仕様書無しさん ◆vbchu7bg :02/04/12 01:39
>>498
Tipsなんだから、この程度の内容がふさわしいんじゃない?
動作解ってなかったら気づけないだろうし。

LBound/UBoundが同列なのはどうかと思うけど。(ワラ

501 :仕様書無しさん:02/04/12 01:52
>>489
世の中には「関数」という概念すら持たないプログラマもいるのです。
いやマジで…

502 :名無し:02/04/12 02:01
>>501
うん・・・そうだね
泣けてくるけど

503 :仕様書無しさん:02/04/12 02:08
COBOLerが使う「サブルーチン」の意味がよくわからない
ソフト会社も疲れたので企業の情報システムに入社したはいいが
基幹システム(COBOL)をやらされるはめに・・・

DHW構築って話はどこいったのやら。

504 :_:02/04/12 02:27
コメントに顔文字が。。。 笑いが止まらなかった。

'さあ表示しよう○(^o^)。
 Form1.show

505 :仕様書無しさん:02/04/12 02:28
>>504
いいな、それ(w

バグってたらむかつくけど

506 :MZ:02/04/12 03:38
> 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の方がヤバいと思う。

508 :MZ:02/04/12 05:27
まあ、一行 ? : で繋げてもいいけどねー。
で、2099年までではなく、2100年超えても、これ有効でそ?
計算の基礎になっている、天文学には詳しくないっすけど。

509 :507:02/04/12 07:16
言葉が足りんかった。スマソ。
>>507 の“それ”は
> leap_flag=0; if((year%4)=0) leap_flag=1;
↑これを指してるです。

510 :仕様書無しさん:02/04/12 11:53
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はよくわからんけど、これはちょっとな〜




511 :ななし:02/04/12 12:28
>>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行は必要ないやね。
むしろ可読性を下げるだけの駄目コード。
あとコントロール名に日本語ってどうなんだ

514 :480:02/04/12 13:49
わりい、虫はいってたわ

>2099年まで利用可能ってコメント書いて、

>leap_flag=0; if((year%4)=0) leap_flag=1;

leap_flag=0; if((year%4)==0) leap_flag=1;

FORTRANnerな漏れってバカまるだチンポね

515 :仕様書無しさん:02/04/12 14:00
まぁ、なんだ。あまり人を笑えないってことだな。

516 :ななし:02/04/12 14:07
>>513

> コントロール名に日本語

それも、ウィザード自動生成のデフォルト。(W
(俺も、日本語識別子は嫌い。トラブル原因になりやすいから)

517 :MZ:02/04/12 15:34
もういっちょ。

strcpy( s.sin_addr.s_addr, "www.yahoo.co.jp" );

‥勉強やりなおせ。

518 :仕様書無しさん:02/04/12 16:30
ずうっと昔だけど
-----
main(){
char *s;
strcpy(s,"test string");
printf ("%s\n",s);
}
これを実行したらエラーが出力されました。
コンパイラの問題だと思いますので、いずれ改修されると思います。
--------------
とか書いてある教科書が売られていたと記憶する。





519 :512:02/04/12 16:32
>513
状況がよくわからんからなんとも胃炎が、

出口を1つにする、というポリシーがあれば(もしあれば)
それなりに意味があるコードだと考える。「必ず Exit_ のラベルのところに飛ぶ」
そうしておけば修了処理をExit_ のところに書いておけばいい。

日本語を使う件についてもそれでヨシとするなら書くほうの勝手だ。
個人的にはアルファベットの方がいいが、あれはあれで問題が発生しやすい。
わけわかめなスペルで書いてしまう奴も多いからな。

意味の無いエラー処理とやらも
後でエラー処理を追加する可能性もあるだろう。

そう考えると、そう酷いコードでは無い、と思うがな。



520 :仕様書無しさん:02/04/12 16:35
>518

char c;
c = getchar();

としてある本は結構あったりする。

521 :ななし:02/04/12 17:29
>>519
正論なんですが、ウィザード自動生成のスケルトン(みたいなモン?)をそのまま
手直しせずに使っちゃう人が多いのよね・・・。
ま、エラー処理がないよりは、いいんですが。

522 :高橋:02/04/12 17:58
>519
同意。ポリシーがあればね。

523 :仕様書無しさん:02/04/13 00:32
>>483
あー、それ、俺もよくやります。
後から気づいてこっそり条件式を裏返します。
しかもそのelse節の1行がreturnとかthrowとかだったりして、
「長〜い長〜い通常処理」のインデントがそっくり一段浅くなるというおまけつき。


524 :仕様書無しさん:02/04/13 01:14
>>518
マジか?


525 :仕様書無しさん:02/04/13 01:18
>>523
最初から気づけよ。そんなの修正する羽目になって何度泣いたことか・・・

526 :仕様書無しさん:02/04/13 01:32
社内のサーバの中を整理するためいらない物を削除してた時のこと
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
何も知らないお姉ちゃん相手に説いている時点で終わってるな。

529 :235:02/04/13 03:29
235で書き込んだmain5000行です。
会議で同じ部署の全員がプログラムなど殆ど理解してないと判明した。
なので月曜から一人で好き勝手にやる予定。

一部上場の超大企業ってもこんなもんか。
全部俺色のソースに変えてから辞めるかな。
俺まだ就職して二年目なんだけどなぁ。

530 :仕様書無しさん:02/04/13 12:09
>527 >Cのソースでセミコロンが全て80桁目
似たような事を「ソースの標準化」とかいって吹聴してる教科書があったよ。



531 :_:02/04/13 13:08
>>507
うるう年問題で入れ子が深くなるようではちょっと問題ありですよね。

if (year % 400 == 0) return true;
if (year % 100 == 0) return false;
if (year % 4 == 0) return true;
return false;

ひょっとしてうるう年問題はプログラマの質を見る
いいバロメータになるのではなかろうか?

>>527
1行1命令を厳密に守っているプログラムなのね…

532 :449:02/04/13 13:32
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);

533 :MZ:02/04/13 13:33
>>531
うるう年の100年、400年は「うるう年における除外規定」ですので、
「定義通り」なら入れ子、「論理通り」なら入れ子にしない、が正解でしょう。

可読性をどっちで取るかってのは賛否両論ありそうです。

534 :507:02/04/13 13:52
ふつー、>>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);

...
}


536 :仕様書無しさん:02/04/13 15:33
ネタくさいなぁ。

537 :仕様書無しさん:02/04/13 16:19
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
逝ってよし♥

539 :仕様書無しさん:02/04/13 16:38
>534

自分たちでメンテができないから、とかいう理由で
一つの式の中に&&と||を混在させちゃダメっていう
縛りをつけられたことがある。

540 :仕様書無しさん:02/04/13 17:42
F通でファームの開発した時にはCでポインタ禁止って言われたよ。
氏ね!



541 :仕様書無しさん:02/04/13 17:55
>>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
>>542 他の人が読めないから、だってさ。
>>544 と同じところかな?

546 :仕様書無しさん:02/04/13 19:00
>>543
メモリリークは見つかりにくいから、分からないでもないな。

547 :仕様書無しさん:02/04/13 19:07
おまえらの会社のクラスライブラリの中で,
最大何段継承しているクラスを見かけましたか?
漏れは4段.しかもprotect変数使いまくりで癒着クラス(鬱)
俺の立場がもう少し上だったら,全員説教だったんだがなぁ

548 :Pukiki:02/04/13 19:36
public変数使いまくりなら結構見るけどな(w >547

549 :仕様書無しさん:02/04/13 19:43
>544
ポインタ禁止で全部グローバルって、つまり構造体を全部
外側で static に確保するってこと ?
initialization でこけたら、エラーが返せないんじゃ ?


550 :仕様書無しさん:02/04/13 19:43
うちのは5段かな。
VCLをパクって機能を減らしC++で書き直したような感じのライブラリ。

551 :仕様書無しさん:02/04/13 19:58
>>540
>>543
S社でポインタ禁止、変数は全部グローバル(ループ関係、関数の戻り値取得時のみ許可)、
標準関数一切使用禁止、という経験あり。

552 :543:02/04/13 21:50
で、どうよ? 俺は本当に辞めちゃったよ。

553 :仕様書無しさん:02/04/14 00:20
>>551
> S社でポインタ禁止、変数は全部グローバル(ループ関係、関数の戻り値取得時のみ許可)、
> 標準関数一切使用禁止、という経験あり。
なんでそういうルールなのか背景かかにゃ。

554 :仕様書無しさん:02/04/14 00:59
>>553
他の人が読めないから

555 :_:02/04/14 01:15
配列=ポインタだと思うんだが?

556 :仕様書無しさん:02/04/14 01:31
>>555
全然違うものだ


557 :仕様書無しさん:02/04/14 01:32
>>555みたいな勘違いがいるので、仕方なくポインタ禁止、変数全部グローバル
社内ライブラリ以外禁止のルールを作ったんだろうな。

同情するよ。


558 :仕様書無しさん:02/04/14 01:33
「ポインタを使うの禁止!」
「ファイルポインタはいいんですね?」
「ファイルポインタって何?」

という会話をしたことがある。


ポインタ禁止の理由:設計者がポインタ理解してないから


559 :仕様書無しさん:02/04/14 01:33
日本語ypsコンパイラがifのネスト14段で落ちると怒る奴と
ネスト14段程度で落ちるコンパイラ作る奴
あと日本語ypsなんか採用する奴と日本語ypsなんか作った奴
誰が一番の抜け作だと思いますか?


560 :仕様書無しさん:02/04/14 01:59
日本語ypsを作ったやつ以外

561 :仕様書無しさん:02/04/14 02:37
C言語で文字列使うのってポインタが絡むんじゃねーの?
たいていの関数じゃ引数はポインタで宣言してあるぜ?

562 :仕様書無しさん:02/04/14 02:39
参照
アド

563 :MZ:02/04/14 03:38
>>556
まあ、一般的に配列、特に文字列とポインタが、ポインタ定数とポインタ変数の違いで
しかないので「まったく違う」「勘違い」は言い過ぎであるとも思うが、
この違いをわからずに濫用して書くヤツも多いので、「表現としてポインタを使うな」
という規約はわからんでもないが‥。

賛成もでけん。

FILE 構造体も使えんし、もちろん malloc なぞもってのほか、そもそも char * で
受け渡すのが全部ダメとなると。(^^;

564 :仕様書無しさん ◆vbchu7bg :02/04/14 04:50
>>559
IFが14段もネストしている、そのソースを書いたヤツでなくて?(w

565 :540:02/04/14 06:58
ファーム系でファイル関連は専用の別タスクが
いるからファイルポインタはいいとしても
キューとかも使えない。ほんと今思うとスキルの無いプロジェクトでした。
新人だったから混乱してて。

あと1関数、1ファイルでしかも関数名が番号だから
もう訳が分からなくなってました。

566 :仕様書無しさん:02/04/14 11:09
>>564
ASPで作られたシステムでそんな感じのコードをみたことがある。
言語仕様上仕方ないのかなぁと思って見なかったことにしたけどね。

567 :仕様書無しさん:02/04/14 11:18
>ポインタ禁止の理由:設計者がポインタ理解してないから

ナイス!

ローカル変数禁止の理由:設計者がコボラーでローカル変数を理解してないから

に通じる香りが。

568 :535:02/04/14 11:42
>>536
ネタなら幸せなんだが・・・
こいつは日本語文章もまともに書けん。
お前は日系何世だと聞きたくなる・・・


569 :仕様書無しさん:02/04/14 12:03
switch文知らない上司がいたな。10年以上前の話だけど。

570 :仕様書無しさん:02/04/14 12:08
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年前の作品。

571 :仕様書無しさん:02/04/14 12:14
ヘタクソなコードジェネレタが吐いたコードみたいやね

572 :仕様書無しさん:02/04/14 13:12
>571 ちょうどYPSがそんな感じ。

573 :仕様書無しさん:02/04/14 13:16
戻り値の代わりにグローバル変数使ってるソースコード。
リリース済み...を、見つけてしまった。
戻り値の使い方を知らない人間が作ったものらしく、
同じことをあちこちでやってる。
わかんなきゃ誰かに聞けよ。
だれかリリース前にチェックしてやれよ。
は〜

574 :仕様書無しさん:02/04/14 13:21
Yet Pain Sourceの略ですから


575 :仕様書無しさん:02/04/14 13:24
>>573
改変が度重なると、応急処置のつもりでグローバル
かませることがあるよ。
その分、コードの老化が進むんで、やりたかあないんだが、
なんせ納期が・・

576 :仕様書無しさん:02/04/14 13:26
>>570
飛び先の関数がループごとに異なるのなら、別にそれでもいいと思うが?

577 :574:02/04/14 13:27
・・・と思ったが、よく見るとループの意味ねーじゃん(鬱

578 :仕様書無しさん:02/04/14 14:06
>>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
ソースでなくてすまんが

「仕様を予測しろ」と言葉でハッキリ言われてしまった時

581 :仕様書無しさん:02/04/14 14:49
>>580
http://pc.2ch.net/test/read.cgi/prog/1003497181/

582 :仕様書無しさん:02/04/14 14:50
「ここはどうすればいいですか?」「いい感じに」
という会話は日常的に行われてます。

583 :仕様書無しさん:02/04/14 14:57
>>582
http://pc.2ch.net/test/read.cgi/prog/1016504915/

お前ら、そうやっていつもお客様の要望とズレた会話ばっかり
してんじゃねえの? そのくせ愚痴ってばかり、とか?
もちっと、主旨というものをしっかり理解できる頭を持てよ。

584 :仕様書無しさん:02/04/14 15:03
>>582
「いい感じに」イイ!(・∀・)ワロタ!

585 :仕様書無しさん:02/04/14 15:31
>>583
お客様が「いい感じに」と仰るのです。

586 :仕様書無しさん:02/04/14 15:57
「どうすればいいですか?」なんて聞かれるほうがかわいそう。
普通は「こういう風でいいですか?」とか、「コレとコレならどっちがいいですか?」
とか。
「前髪はどうしますか?」
「どうって...じゃぁ、短めで」
「短めというのは何センチのことですか?」
「...」
こんな床屋いたらどうする?

587 :仕様書無しさん:02/04/14 16:32
>>586
前髪はどうしますか?って普通に聞かれるけど・・・。
どういう美容院行ってるの?俺が行くところが変?

588 :仕様書無しさん:02/04/14 16:34
自分が考えてることを言葉に出来ない人は、選択することを好む。

589 :仕様書無しさん:02/04/14 16:48
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の嵐

593 :仕様書無しさん:02/04/14 17:52
>>586
立場を逆転するなよ。
その場合、俺らが床屋でユーザーが客だぞ。

つまり、
「前髪はどうしますか?」
「てきとーに」
「もみあげはどうしましょうか?」
「かっこよく」
「頭は洗いますか?」
「そんな感じで」

という受け答えをされているようなもんだぞ

594 :仕様書無しさん:02/04/14 17:58
客の要望をはっきりさせるのも仕事のうちです。

595 :仕様書無しさん:02/04/14 18:00
客の要望をハッキリさせるのが仕事に含まれる場合と、
そうでない場合があるけどな。
要求仕様の洗い出しも含む場合は、別途見積もりさせて頂きます。

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
なんかと同じで、却って危険な「安全策」だよ。

599 :仕様書無しさん:02/04/14 19:28
>>596
今のコンパイラなら、警告レベル上げたほうがはやい。

600 :仕様書無しさん:02/04/14 19:28
>>568 確かにな(ワラ
    って藁えんわー。タイムリーすぎて

601 :仕様書無しさん:02/04/14 19:30
文句言わなきゃいいんじゃないかなぁ。
完成直前になって想像してたのと違うとゴネだして、
やり直せって言い出すのが嫌な客。

602 :仕様書無しさん:02/04/14 19:31
おまかせなのにストレートパーマかけなかったとかモヒカンが良かったとか
カットのみなのに洗髪して無いとかそんなんばっかり
その上\1500程度をゴネて値切ろうとするんだよ



603 :仕様書無しさん:02/04/14 20:39
>>597
よく「どんな風になっても文句は言わない。お前の好きなようにやれ」と
命令出しておきながら、後になって好き勝手やっただの、人の意見を
(出してもいねーのに)聞かないだの愚痴る部長や課長がいるが・・・

つまりは、そういう人間ってこと?

604 :仕様書無しさん:02/04/14 20:59
>>597
後になって文句を言わなければそれで良い。
後で文句を言ったらDQN。


605 :仕様書無しさん:02/04/15 01:53
>>598
>alias rm rm -i

ファイル名が正しいかどうかなんかいちいち確認してないけど、
rm *~ とかやろうとして rm * でまちがって return 押してしまった時なんかには
有効だと思うけどどうよ?

606 :仕様書無しさん:02/04/15 02:35
>>605
他のマシンを使ったときにうっかり全て消してしまう罠。


607 :仕様書無しさん:02/04/15 02:41
玄人はとりあえず alias/which rm で確認。
rmの前に echo rm -i xxx
で確認。
最後にrm。

体が覚えてるからどこに行こうが問題ない。


608 :仕様書無しさん:02/04/15 03:35
いちいち確認するなんて、うざくて早晩条件反射で
yを押すようになるのは必定。
 「rmをundoできるようにする」が真っ当な方法。
その意味で、「Win/Macの漁れるゴミ箱」は、ベターな方法。



609 :仕様書無しさん:02/04/15 03:48
脊髄反射で y を押す前に体が固まるようになれば、君も一人前だ。

それまではrootあげない。

610 :仕様書無しさん:02/04/15 04:11
`y'キーを他のキーより重くすればいいのでは?
PC-98x1のSTOPキーみたく

611 :仕様書無しさん:02/04/15 05:57
亀レスですが・・・

>>596
昔のCマガの記事にあったと思います。

612 :仕様書無しさん:02/04/15 20:50
>>596

私自身は、Cはよくわかりません(仕事で使わないし)が、「枝葉末節的な小細工を
弄する人は、本質的な部分でより大きなミスを犯す」という意見もあるようです。
(確か、別板、別スレで、過去複数回上がっているかと・・・)


613 :仕様書無しさん:02/04/15 21:00
>>596
そんなプログラマが俺のとこに外注で来たら
即座に帰らせるか単価切り下げ交渉だな。
そいつが書いたソースコードの確認と書き直しの手間を考えれば当然だ。

614 :仕様書無しさん:02/04/15 21:23
>>613
コーディング規約に含めてなければ文句言う筋合いでもないような。

615 :仕様書無しさん:02/04/15 21:38
>>614
プログラマを時間単価で使う時は値切る理由を常に考えているものだよ。
コードが変なのは格好の理由になるよ。たとえ運良く動いていたとしてもね


616 :仕様書無しさん:02/04/15 21:40
rm *~は ~を打とうとして手が滑り、Enterしてしまうという罠。

617 :仕様書無しさん:02/04/15 21:43
>>615
そんな貧乏くさい会社聞いたことない。
おれが幸せなだけか?

618 :仕様書無しさん:02/04/15 21:48
if( a==1)とかfunc( arg)のように
"("の後ろにスペースを置くコーディングスタイルって
なにかいいことあるの?

619 :仕様書無しさん:02/04/15 21:54
617は幸せかもしれない
と言ってみるテスト

620 :仕様書無しさん:02/04/15 21:57
>618 その方が()の中がよみ易いと感じているのでは。
俺は、その手のコード見つけたら整形しちゃうけど。

621 :仕様書無しさん:02/04/15 22:01
そういえば Berkley版のコーディング規約の和訳はどこかに
ありませんか?

622 :仕様書無しさん:02/04/15 22:17
>>618
いるよな、たまに
漏れは
if( a == 1 )とかfunc( arg )
と、常にスペースを空けるように心がけているが。

623 :622:02/04/15 22:19
あと、最初の職場の先輩に叩き込まれた癖で、

a = -1;

というコードは

 a = (-1);

と括弧でくくり、マイナスであることを(見る人にとって)明確に伝わるように、と
されて・・・9年目だが未だに守っていたりする

624 :仕様書無しさん:02/04/15 22:22
>>622
プロポーショナルフォントでソース表示している環境では
スペースを入れないと()が見えにくくなるという罠

625 :仕様書無しさん:02/04/15 22:23
>>623
それは可読性を高める上で正しい判断です。

626 :仕様書無しさん:02/04/15 22:23
a =- 1が今のa -= 1 意味だった古代の名残?

627 :仕様書無しさん:02/04/15 22:25
なんのためにびすとろがなくなったのかいみがわからないの

628 :仕様書無しさん:02/04/15 22:30
>>627
月刊PC-DIYのビストロDIYなら継続中ですが何か?


629 :仕様書無しさん:02/04/15 22:40
俺は制御文の場合は
if (a == b) ;
の様にして、括弧の前にスペース入れてる。
関数の場合はスペース無しだが、コンマの次にスペース入れてる
hoge(a, b);


630 :仕様書無しさん:02/04/15 22:41
スマの事じゃねえのか?

631 :仕様書無しさん:02/04/15 22:45
>601
そう言わせないように画面イメージや帳票イメージ作って客の
承認もらっとくんでは?

632 :仕様書無しさん:02/04/15 22:48
>>630
須磨学園の理事長がどうかしましたか?

633 :仕様書無しさん:02/04/15 22:59
>>601
外部設計書の承認はちゃんといただきましたか?
ぷろじぇくとかんりのきほんですよ。

634 :仕様書無しさん:02/04/15 23:21
#define BLANK1 " "
#define BLANK2 " "
#define BLANK3 "  "

...

#define BLANK60 "                              "

#define ZERO1 "0"
#define ZERO2 "00"
#define ZERO3 "000"

...


初期化のためにmemcpy()したり、ゼロパディングしてるんです。
もうね、アホかと。バカかと。

金融系ももう終いだね。

635 :仕様書無しさん:02/04/15 23:35
承認や契約を守ってくれるような客だけだと楽でいいよなぁ。

636 :仕様書無しさん:02/04/15 23:48
無理を聞いてやらないと契約切られてしまうと。
現場はぜひ切ってくれと考えている罠。

637 :名無しさん:02/04/16 00:19
自分で関数作っちゃダメって言われた…。つまり、 main() のみ


638 :_:02/04/16 00:31
>>637
ぎゃー(氏

639 :仕様書無しさん:02/04/16 00:41
>>635
ソンナやつらは居ない。もしそうだとしてもあとからクレームの山。



640 :仕様書無しさん:02/04/16 00:42
>>637
30行くらいで終わるなら・・・・・・

641 :仕様書無しさん:02/04/16 01:34
void main(void)
{
  real_main();
}

void real_main(void)
{
  int a,b;
   :
   :
 (以下略)



 なぜこんな事をしている・・・意味不明

642 :仕様書無しさん:02/04/16 02:00

ギャハハ。笑った。

643 :救助:02/04/16 02:00
実話です。D社委託会社C社は女の家を盗聴しろと指示し、
その盗聴テープを現場でばらまいた。その他にM社委託Mシステム会社
は、女風呂の盗撮写真を現場に貼りつけて仕事
をしている。生保。

644 :仕様書無しさん:02/04/16 02:13
端末エミュとUnixサーバの相性で仕方なく80桁キープしてると8タブつらすぎ。

645 :644:02/04/16 02:16
げ、百年前の書き込みにレスしてしまった。鬱。

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);

っていうプロトタイプ宣言をしょっちゅう見かけます。

648 :仕様書無しさん ◆vbchu7bg :02/04/16 02:38
>>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()の一つだけだった?

652 :仕様書無しさん:02/04/16 02:47
>>646
コンストラクタで例外を投げるとやっかいなのでそうすることはままある

653 :仕様書無しさん:02/04/16 02:50
>>651

あい〜。
オブジェクト生成に必要な情報が集まってないのに、newしたがる
馬鹿がいるんですよ…

メンバフィールドの整合性維持(インスタンスがあれば、そのメンバ
フィールドは必ず整合性が取れている状態のうちのいずれかである事
を保証するようにコーディングすべき)が、クラスの存在理由の一つ
だと思っているんですが…

654 :646:02/04/16 02:54
>>652
それはどういうことですか?おいらが無知?

655 :仕様書無しさん:02/04/16 02:59
http://www.cmagazine.jp/src/kinjite/cpp/exception.html

656 :622:02/04/16 03:00
>>625
あ、Cではそうだな。実はVBでも守っているという罠(W

657 :646:02/04/16 03:01
>>655
あー、C++ですか。りょうかい。

このコードはJavaです。Javaはコンストラクタ起動前にインスタンス
生成自体は終わっているので、整合性崩壊なんかおきないっす。

658 :仕様書無しさん:02/04/16 07:54
exceptional c++よんだか?

659 :仕様書無しさん:02/04/16 09:10
>>655

>このコンストラクタ内で例外をさせない,という筆者の方針ですが,
>わりあい反発を食らうことがあります。
なんて書いてるよ。C++の意味が半減するじゃん

メモリリーク作成言語のC++は、早く消えてほしい


660 :仕様書無しさん:02/04/16 09:49
new Hoge[100]、の時とか。

661 :仕様書無しさん:02/04/16 16:12
Cでソース書いてたんです。そしたら先輩が「新しくスタックに積めろ」とか言うんですよ。
何のことかと思ったら、変数宣言のことを「スタックに積む」と言ってるんです。
もう、馬鹿かとあほかと…と思ったのですが、もしかして、英語では変数宣言をスタックに積むとか言うのでしょうか?

教えてサミアドン!

662 :仕様書無しさん:02/04/16 16:31
>661
auto 変数つう意味なら、確かにスタック上に確保される。
けど、普通Cのコーディングでそうは言わない。

663 :仕様書無しさん :02/04/16 16:46
>661
その先輩は関数呼び出しも「スタックに積む」だな。


664 :スタック:02/04/16 16:57
機械語に落ちたコードを見て「自動変数はスタックにつむんだ」
って判断しているだけだね。しかしC言語の規格では
自動変数はスタックにつまねばならない、という規定はない。

665 :ななし:02/04/16 17:02
>>661

「積む」の命令形は「積めろ」ではない。
その先輩、日本人なのか?


666 :仕様書無しさん:02/04/16 17:09
>664
まぁそうだね。
ただ単にそれが実装し易いというだけだ。

667 :仕様書無しさん:02/04/16 17:20
スタックを詰めろ、なら、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=行間を読めないプログラマ


672 :仕様書無しさん:02/04/17 08:19
>670-671
gccで行間を有効にするオプションスイッチは何ですか?

673 :仕様書無しさん:02/04/17 08:22
>>670-671
噂の先輩登場(w

674 :へんたい:02/04/17 11:32
行間さんの行動は読めません

675 :仕様書無しさん:02/04/17 12:15
「アセンブラレベルでみて正しければいいんだ!
オレはちゃんとアセンブラレベルでちゃんとなっているのを
確認しながら組んでいるんだ!」

アセンブラレベルで正しければどんなソースを書いてもいいわけ?
そもそもそれならなんでC言語なんか使うわけ?最初からアセンブラで書けよ。


676 :仕様書無しさん:02/04/17 12:45
行間を読んだら「そんなことは言ってない」と蹴られる罠
どうあがいても最終的には責任を押し付けられるのです

677 :仕様書無しさん:02/04/17 15:09
>676
光景が目に浮かびすぎる……(涙

678 :うひょ:02/04/17 15:18
>アセンブラレベルでみて正しければ

コンパイラやOSを変えれば、たちまち破綻する(w

679 :661:02/04/17 15:54
たくさんレス、ありがとうございまふ。

さりげなく確かめてみたら、単なる変数宣言をスタックといっているようです。
「このスタック、使ってないから削除ね」「この、int hogeのことですか?」「そう」

おまけに、それが新人にも伝染してたんです。
「スタックはこれでいいんですか?」(訳:変数はこれでいいんですか?)

あと、CVSを完成したソースを納めるものだと思っていて、ソース完成後にしかコミットしないんです。お前本当に10年選手かと。

ちなみにその先輩の関数は5000行以上あります。入社一ヶ月ですが、テックビーイング買ってきます。


680 :仕様書無しさん:02/04/17 16:18
>>675
アセンブラレベルで正しくて、Cレベルで間違ってるって事?
それとも、アセンブラレベルを考慮して、Cレベルで変な書き方してるって事?

前者ならコンパイラのバグだと思うが、後者だとありえないでもない。
初心者にはお勧めできないが、特定のハード限定で、そんな汚い書き方をする場合もある。

681 :仕様書無しさん:02/04/17 16:48
>>679
> あと、CVSを完成したソースを納めるものだと思っていて、
> ソース完成後にしかコミットしないんです。お前本当に10年選手かと。
え?俺のとこは完成していないソースをコミットした奴は死刑だぞ


682 :仕様書無しさん:02/04/17 16:49
必要性の問題ですな。
意味もなくインラインアセンブラを使いたがる人はいます。
何してるのかと思えば、memcpyでいいじゃないかと言いたくなるようなことだったり。

683 :675:02/04/17 16:51
>680
徳に必要もないのに
特定のアーキテクチャに依存した書き方をしてある。

しかし、特定のハード限定で汚い書き方をするにしても、
#asm使えばいいんでないかいとかせめてコメントしとけよとか思う。

684 :仕様書無しさん:02/04/17 17:01
>>680
>前者ならコンパイラのバグだと思うが
そうとも限らないだろ。動作未定義なコードをどうするかはコンパイラの勝手だよ。
a[i]=i++; とか。

685 :仕様書無しさん:02/04/17 17:15
>>681
バージョン管理ソフトを知らないということだと思われ。

686 :仕様書無しさん:02/04/17 17:36
>>681は、「コンパイルも通らないような未完成品」と言うことが言いたいのでは?
製品としての最終版と言う意味ではなくて。

687 :仕様書無しさん:02/04/17 19:07
自動変数を宣言=スタックに積まれる
は意識しておいた方がいいと思うな。

世の中には巨大構造体(しかも配列)を自動変数で宣言する
大馬鹿者がいるくらいだし・・・

688 :仕様書無しさん:02/04/17 19:34
>>687
それと「自動変数をスタックと呼ぶ」とは全然かんケー無いぢゃん。


689 :仕様書無しさん:02/04/17 19:43
>>686
コンパイルとおらないのを収めるアフォがいるのか?
それだったらVersion管理というか日々の業務管理だな。

690 :仕様書無しさん:02/04/17 20:45
>>689
だから、そんなアフォは死刑だと>>681が言ってるんでしょうが。。

691 :仕様書無しさん:02/04/17 22:37
>>690
コンパイルに通るくらいで「完成したソース」とか言っちゃうのか?
そういう感覚があってもいいけど一般的ではないと思いたい。

692 :仕様書無しさん:02/04/18 00:20
 C言語のプログラムで、構造体をファイルに出力。
 そのファイルを、Javaのプログラムで読みこむ。

 そこまではいい。

 読みこみ側のJavaプログラムでは、1レコードを全てひとつの文字列フィールドに読みこむ。
 値の参照は、substringで「何文字目から何文字目」で読み出す。

 おかげで、フィールド1箇所の桁数が変わっただけで、プログラム全域に渡って修正が。

もうね、アホかと。バカかと。


693 :仕様書無しさん:02/04/18 00:22
>>692 セパレータ決めとけよ。

694 :仕様書無しさん:02/04/18 00:31
>>692
>そこまではいい。

良くない。XMLとかそういう類の構造化フォーマット
使っとけ。でないと後で死ぬ。

695 :仕様書無しさん:02/04/18 01:05
>>692
何でソンナ仕様なの?
どんなアプリかサラッとおしえて

696 :仕様書無しさん:02/04/18 01:08
>>687
> 自動変数を宣言=スタックに積まれる
> は意識しておいた方がいいと思うな。

「スタックに積む」というと、「この自動変数はサイズでかいから、
このブロックに入るたびに積むためにコストがかかる」と思って
しまう人がいるね。

もちっとビシっとくる表現ないかなぁと思う。


697 :仕様書無しさん:02/04/18 01:13
>>695
設計者がCOBOL屋、なのでは。
なんかそんな気がする




698 :仕様書無しさん:02/04/18 01:13
>>681
> え?俺のとこは完成していないソースをコミットした奴は死刑だぞ

うちでは、
 ソースいじる → なんとなく動いている → commit →
 cvsweb で side by side で diff とって印刷 → レビュー →
 指摘された点を修正(*1) → 単体テスト → commit → cvsweb を見てレビュー
 → 必要があれば *1 へ戻る
だな。

commit log には「未レビュー」とか、「レビュー指摘事項反映」とか書く。

別に開発中 branch 切ってもいいんだけど、なんとなくこれでうまくいってる。

これってどうかね?


699 :仕様書無しさん:02/04/18 01:16
>>698
少人数ならそれでよいかも。
って漏れのとこもそんな感じ。少人数だからね。

う〜む、よく考えると、人を選ぶかもしれない。

700 :698:02/04/18 01:16
>>698
ちなみに単体テスト前にレビューするのは、レビューの指摘を
確実に反映させるため。単体テスト後のレビューで大きな
修正を要求すると「もう単体テスト終わってるので…」と言われ
ちゃうから。


701 :仕様書無しさん:02/04/18 01:20
>関数は5000行以上あります。

100行以内に書けないやつは、たいてい無能だな。
5000行なんて論外。おそらく、そいつ、5000行も書けることを
自慢に思っているんだろうな。それって借金が何億もあるのを
自慢している自己破産一歩手前の芸人なんかと変わらないね


702 :仕様書無しさん:02/04/18 01:22
>>701
case by case

703 : :02/04/18 01:23
>>701
おれもそうおもう。
あと同じような処理を繰り返してコピペしてあって10000行とか
勘弁してくれ。


704 :仕様書無しさん:02/04/18 01:25
うちの上司、あ、VBなんですけど、関数が50行以上あったら
怒るんです。長すぎって・・・・


705 :仕様書無しさん:02/04/18 01:26
>>704
上司の脳容量が2画面分までなんだヨ

706 :それも極端な:02/04/18 01:30
5行の関数をたくさん作ってあげれば?
そっちのほうが理解しにくくなる。

707 :仕様書無しさん:02/04/18 01:30
VBなんですけど。

If文のネストが多すぎ。
7つもネストしてるって… ( TдT)

708 :仕様書無しさん:02/04/18 01:34
>>705
あ〜、俺も関数は1画面以内って決めてるよ。ほとんどの関数は20ステップ以内。
一見して処理内容が把握できない関数を作ると、自分が後で苦労するから。

709 :仕様書無しさん:02/04/18 01:40
>>707
CASE使うかLogic逆さまにしろよ

710 :仕様書無しさん:02/04/18 01:41
>>697
ナル(・∀・)ホド!!なっとく。

711 :仕様書無しさん:02/04/18 01:43
>>707
まあ、VBには continue がないし、条件式の短絡評価もないから、ボーっと組んでるとネストしがちではあるな。

712 :仕様書無しさん:02/04/18 01:45
>>692
設計がアホなのは確かだけど、なんで桁数を定数で持たない?
それも相当間抜けだ。

713 :仕様書無しさん:02/04/18 01:49
>>712 君も根本的に間違っている。

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は書き込んだんだと思うけどね。

717 :仕様書無しさん:02/04/18 02:00
>691
「コンパイル通るくらい」っていう程度にもよると思うけど、
プロジェクト期間が1年あったら、最終段階まで一度もcommitしないんですか?
私は日々の作業の区切りでcommitしていくのが普通だと思ってたんですが。

718 :仕様書無しさん:02/04/18 03:11
>>717
つーか、他モジュールに影響するかどうかによるんじゃない?

そこがちゃんと動いてくれないと他の部分がテストできない部分だったら、ちゃんと
単体レベル通した物をcommitしてくれないと困る。逆にモジュールとして独立して
いるとか新規の場合は、とりあえずコンパイル通った時点でcommitしちゃう事もある。

キリが悪くても、コンパイルすら通らないbrokenな状態でcommitして帰っちゃうのは
他のメンバーが困るので勘弁。(つか、それやったら強制backoutだ)

ちなみにJavaだとクラス構造依存が無いので、本当に時間がない時はガワ(メソッド
定義)だけ作ってcommit、「後でちゃんと動く奴出し直すから、今回はこれでコンパ
イル通るまでって事で勘弁してちょ!」とかやってた。


719 :仕様書無しさん:02/04/18 22:54
>703
同じ処理をコピペして200個くらいの同じ処理がある場合はどうですか?
本体をひとつにして引数参照型にしよう、と提案したら却下されたYO!

720 :仕様書無しさん:02/04/18 23:23
>719
 その却下した奴を徹底的に罵倒するな。殴るかもしれん。

 というか、どういう理由で却下したんだ、そいつは。

721 :仕様書無しさん:02/04/19 00:29
>720
719ではないが

・動いてるからいーぢゃん
・参照型が理解できない
・実はその200あまりの処理が全部びみょ〜に違う

722 :仕様書無しさん:02/04/19 00:49
全部微妙に違うのを一般化できないのは無能の証


723 :仕様書無しさん:02/04/19 03:52
>動作未定義なコードをどうするかはコンパイラの勝手だよ。
> a[i]=i++; とか。
なぜ誰もこれに突っ込まないのだ



724 :ななし:02/04/19 10:35
>>722

正論。
しかも、苦しむのは、大抵、無能な人間本人ではなく、周囲の別の人間。(とばっちり)

725 :仕様書無しさん:02/04/19 11:01
>>721
実は全部同じ仕様なんだけど、
200人で手分けして作ったから、微妙に違ってしまった。
というのが真実だったりして

726 :仕様書無しさん:02/04/19 11:59
すでにgotoとかグローバルの状態変数とかが入り乱れてて
一般化するのが不可能、もしくは、かえって可読性を落とす罠。




727 :仕様書無しさん:02/04/19 12:22
作った本人をソースコードに添付して保存しておきましょう。

728 :仕様書無しさん:02/04/19 16:15
「実はコードジェネレータで200の関数つくっているんですよ。
ほら、うちって行数で計るじゃないですか」という罠

729 :仕様書無しさん:02/04/19 20:13
先輩の自信作
ttp://members3.tsukaeru.net/kazuu/soft/soft/kaito.lzh

・・・・俺この人の後輩じゃないはず


730 :仕様書無しさん:02/04/20 00:05
>729
ディモールト!!
"動けばよい"の見本のような処理だな(w

731 :仕様書無しさん:02/04/20 00:31
>>723
え?どこをつっこむの?
a[i]=i++;
だと未定義で正しいと思うが。

732 :仕様書無しさん:02/04/20 00:37
>>729
商用のPGでもっとひどいコード見たことあるぞ。
うちの会社の先輩だけど。(藁

733 : :02/04/20 00:45
うちの辞めた先輩。
コード書きかけでコンパイルすら通らなかった…。

元気かな。

734 :仕様書無しさん:02/04/20 00:52
昔、組み込み系の営業やってて、客先でROM交換することになった。
で、本社から宅急便でROMもらって、高速で1時間のところにある客先に
逝ってROM交換したら、電源投入してもうんともすんともいわなかった。
ドアホが、電源投入チェックせずにROMだけ送りやがった。
>>729のソースの10^15倍程度は、ひどいソースだろーなと思ったよ。

735 :仕様書無しさん:02/04/20 01:05
End Select
'オープンしたファイルを閉じる
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Else
萌え


736 :734:02/04/20 01:55
思い出しても腹が立つから、言葉がおかしかった。
スマソ

737 :仕様書無しさん:02/04/20 04:28
むしょうに気になったんだけどさあ、
コドモの絵文字って指定方法間違ってねえか?

http://www.nttdocomo.co.jp/p_s/imode/tag/emoji/
&#10進数字;ってやつ。Unicode番地指定するとこにSJIS_iコード(藁


738 :仕様書無しさん:02/04/20 06:47
だから、あれは、w3cのhtmlじゃねーから、実体参照も、
キャラクタセットも、UNICODEではないんだよ、きっと。
たぶん、「Shift-JIS似のnttコドモ独自コード」が指定されてる。


739 :_:02/04/20 09:02
>>737
ああ、それは悪名高いよ(藁

これでは数値文字参照をしたときにどういう文字が出てくるのかわからない。
誰かテストした人はいないのでしょうか?(藁

740 :仕様書無しさん:02/04/20 12:21
コドモが間違えたのかアクセクが間違えたのか...。
誰も指摘しなかったんかのぅ。

ところでなんでK帯屋ってShift_JIS好きなんだろ。
WebじゃShift_JISを毛嫌いする人もいるでしょ。
漏れも最近じゃUTF-8しか使ってないなぁ...。


741 :仕様書無しさん:02/04/20 12:55
多分カナが 1byte で送れて、データ量を圧縮できるからと思われ。
そりゃまあ、1page あたりが 2KB とかだからなあ。

もともと i-mode では Shift-JIS 以外は認めない、んじゃなかったっけ。

742 :仕様書無しさん:02/04/20 13:55
Shift_JISもGIFも嫌いなんだけどなあ。
WAP化に期待するか。



743 :仕様書無しさん:02/04/21 23:38
UNIXとかMac屋の曲がった根性が嫌いなんで、むしろEUCが滅んで欲すぃ
あいつら紅茶紅茶ってうるせーから戦術で勝って戦略で負けるんだよ


744 :仕様書無しさん:02/04/22 00:20
>>743
紅茶ってなに?

745 :仕様書無しさん:02/04/22 02:43
道具としてMacは秀逸だと思うがなあ。


746 :仕様書無しさん:02/04/22 02:47
俺はウニコードが滅んで欲しい。
何が悲しくて更に混乱を巻き起こそうというのだ・・・。
全面移行できるという話はどこへ・・・。

747 :仕様書無しさん:02/04/22 02:55
>>743
紅茶って・・・もしかして、Java?
ほら、JavaTeaってあったし。


748 :仕様書無しさん:02/04/22 07:18
漏れはウニ好きだ。
多国語ドキュメントを書けるという点でウニの存在は認めたいな。
日本のアプリで日本語とハングルを混ぜて打てたりするのはウニのおかげ。
EUCはいらんと思う。JISは打てる文字種がウニに遠く及ばないのに
KI/KOの問題があるからいや。SJISはM$のニホイがするからいや。

漏れのデフォはUTF-8に改行コードはLF、BOM無しだな。みんな道南?

>>747
漏れは紅茶紅茶を「ゴチャゴチャ」と読んだが。


749 :_:02/04/22 08:54
>>748
漢字コードを語る前に日本語を(略

750 :仕様書無しさん:02/04/22 09:04
>>731

751 :仕様書無しさん:02/04/22 09:16
>>748
超漢字使ってます。

752 :仕様書無しさん:02/04/22 09:25
>>748
たしかにUnicodeは便利だと思うけど、
「横棒」文字だけで何種類もあるとか
「空白」文字だけで何種類もあるのを見るにつけて、
これらを正しく区別して入力する方法は果たしてあるのかと。

FULLWIDTH TILDE と WAVE DASH とかなー。


753 :仕様書無しさん:02/04/22 12:18
転職先が決まってからだけど。

CTRL_ID = 1
CNTL_PHASE = 2
CNTRL_TYPE = 3

Controlの省略形がバラバラ
上記3つは同一人物のコード内にある
…でもこのスレ見てると、藁って許せるような気がしてくる罠。

754 :仕様書無しさん:02/04/22 12:39
>>731
無知ですまぬが、a[i]= i++; って、
ほんとに a[i]=i, i++; だとは保証されてないの ?
ANSI のどこに書いてあるの ?


755 :仕様書無しさん:02/04/22 15:47
>>752
たしかになー。
横棒はハイフンorマイナス、ハイフン、ノンブレークハイフン、マイナスを、
空白はスペースとノンブレークスペースくらいは使い分けてるつもりだけど。
おかげでディスプレイにコード番号書いた付箋が貼り付けてある(藁

Unicodeには他の文字コード体系との互換性のためだけにある文字とかもある
から、それらは極力使わない。富士通系の「1.」とかいう文字とか。

改行までUnicodeラインセパレータ(U+2028)とかUnicodeパラグラフセパレータ(U+2029)とか
厄介なものが出てきてんだよな。


756 :仕様書無しさん:02/04/22 16:01
>>755に追記。
Unicodeには半角の円(¥)記号に独立した番地(U+00A5)が与えられてるから、
円記号がバックスラッシュに「化け」たりしなくてイイ。
円記号のつもりでバックスラッシュを使うなってことやね。きっと。
バックスラッシュが円記号に化けるのは当面避けられそうもないが。


757 :仕様書無しさん:02/04/22 16:19
さらに追記。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) はもっとうにょうにょしてはるが、出典がわからへん・・・。


758 :仕様書無しさん:02/04/22 18:24
>756
ところで、現在Shift_JISでの'\'をUNICODEの
何にコンバートすべきか決まりましたか?

759 :仕様書無しさん:02/04/22 18:24
>>754
http://www.catnet.ne.jp/kouno/c_faq/c3.html

760 :仕様書無しさん:02/04/23 03:53
>>758
Shift_JIS の '\' は、バックスラッシュの意味で使ってる可能性も高いので
Unicodeに変換するときは U+005C にしないとトラブると思う。


761 :仕様書無しさん:02/04/23 10:27
Javaの話になるんだけど…
HttpServletRequestからJISAutoDetectで「£」とか「¢」とかを拾って
EUCなDBに格納すると化けるんだヨ!

MS932コードページを使うかららしいんだが、ホント勘弁してくれって感じ…


762 :仕様書無しさん:02/04/23 11:34
ツヅキはこちらで(ム板のUNIOCODEスレ)
http://pc.2ch.net/test/read.cgi/tech/1012821170/l50


763 :仕様書無しさん:02/04/23 14:19
スレ違いすまんかった。


764 :754:02/04/23 22:38
>>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 の話は一応別として


765 :仕様書無しさん:02/04/24 00:22
*(a + i)も
*(i + a)もおなじで、
a[i] は i[a]と同じ。

んでもって

a[i] = xx;
における a も i も(共に配列名ではないとして)、共に左辺値を構成する
式の要素。

というのをおいといて、

ANSI C 3.3で言いたいのは、「modifyが二回以上だとだめだ」じゃなくて
「副作用を伴ったオブジェクトを、シーケンスポイントをまたがずに、
左辺値を構成する式でも使用すると、その動作は未定義」といってるんでないかね?

modifyが二回は、もちろん、どっちのmodiyも左辺値となりうるのでだめ。


766 :仕様書無しさん:02/04/24 00:48
議論用スレ新規作成またはプログラム板移動を提案。
読んでて楽しくなくはないんだが、ここは「この会社辞めようと思ったソースコード」スレだし。

767 :仕様書無しさん:02/04/24 02:05
>>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は帰ってこないの?

770 :仕様書無しさん:02/04/25 02:42
その上のネストに飛ばされるんだろ
お前大丈夫か?


771 :仕様書無しさん:02/04/25 02:46
リソース後始末がうまくいけばね

772 :仕様書無しさん:02/04/25 02:56
まぁ、馬鹿みたいに例外飛ばしまくるなということだね。

773 :仕様書無しさん:02/04/25 05:08
>>772
同意。例外の濫用はバグの元。

774 :名無しさん@お腹いっぱい。:02/04/25 07:04
例外飛ばすのは重い処理だからの。ただ、例外をコンソールにはきまくっている
○-○(以下省略)も問題だが(藁

775 :仕様書無しさん:02/04/25 08:20
CGIが重いのでちょっとみてくれと言われた。
送られてきたソースコードの先頭には、こう書かれていた。

#!/bin/sh

wc -l してみると、11000超えていた.......。

    :
    :
    :

あのなーっ!!!!!!!!

776 :仕様書無しさん:02/04/26 00:14
>>769
つーか
catch (Exception e)
を安易に使うやつの気が知れん。

777 :仕様書無しさん:02/04/26 00:28
>>776
つーか、普通
try {
} catch (Exception e) {
throw new RuntimeException();
}
こんなことするの?

778 :仕様書無しさん:02/04/26 09:45
>>777同意。
自分のバグをランタイムのせいにしてるみたいね。

779 :仕様書無しさん:02/04/26 23:59
メソッドが投げる例外を定義したくないから?
どちらにしてもクズコードだな。

780 :飛ばす:02/04/27 03:32
精液と例外はめったやたらに飛ばさないこと

781 :仕様書無しさん:02/04/27 03:40
でも、あほみたいに例外定義されると泣ける。

782 :仕様書無しさん:02/04/27 04:00
とりあえず俺ルールでは、設計上、実装上、
継続不可能などうしようもないエラーの場合にだけthrowすることにしている。

だからといって他人が、たいしたことでもないのにらい外をthrowしているのを
みても、とりあえずまあ、wrapするかそこだけcatchすりゃあいいんだ、と思ってる。

あくまで俺ルール。


783 :仕様書無しさん:02/04/27 05:35
古い記事だが
http://www-6.ibm.com/jp/developerworks/java/javahipr1.html
にJavaの例外について興味深い記述が有るよ。
(毎回境界チェックをする普通のforループよりArrayOutOfBoundsException
に頼る無限ループの方が高速、とかなんとか)


784 :仕様書無しさん:02/04/27 06:33
>>783
トリッキーなコードだね。
少々早くてもそんなコード書くヤシとは仕事したくないな。

785 :仕様書無しさん:02/04/27 07:45
>783
つか、そういうコード、Effective Javaで思いっきり
けなされてた記憶があるが。。。

786 :仕様書無しさん:02/04/27 08:20
>>782
俺ルール作らずにEffective Java読め。

787 :782:02/04/27 13:32
javaみたいな糞言語使ってネエヨ

788 :仕様書無しさん:02/04/27 21:31
>>783
だめだYO!
ArrayOutOfBoundsExceptionが起こる前に
違う例外が発生したとしたら・・・。
少なくとも、単にループを例外処理に置き換えるだけだとアウト。

実際にそういう処理を使って記述されていた
フレームワーク使わされていてバグが出てひどい目にあったことがある。

789 :仕様書無しさん:02/04/27 21:32
>>783
だめだYO!
ArrayOutOfBoundsExceptionが起こる前に
違う例外が発生したとしたら・・・。
少なくとも、単にループを例外処理に置き換えるだけだとアウト。

実際にそういう処理を使って記述されていた
フレームワーク使わされていてバグが出てひどい目にあったことがある。


790 :仕様書無しさん:02/04/28 00:37
>>788
どういうコードを想定してる?
「違う例外」が発生したとしても対処することは可能では。
「違う例外が発生する可能性があるのに、ArrayOutOfBoundsException
にしか対処していなかった」としたら、その「フレームワーク」とやら
の作者が単にまぬけなのであって、
ループを例外処理に置き換える云々の話とは独立では。


791 :仕様書無しさん:02/04/28 00:40
JavaScriptで、件数の一定しない明細のチェックボックスを調べるのに
そういうコード書いたことはあるけどね。

792 :んグ:02/05/02 10:09
まぬけのほうが多いと思う >>790


793 :仕様書無しさん:02/05/02 11:37
動きゃいいよ

794 :仕様書無しさん:02/05/02 11:42
動かねーだろが。

795 :仕様書無しさん:02/05/02 12:37
人の名前を騙ってソース書くのヤメレ
後から保守依頼回ってくんだよ!!


796 :仕様書無しさん:02/05/02 12:42
>>795
おれの書いたコードはPGP署名が入ってるよ。

797 :仕様書無しさん:02/05/02 15:21
「変数名は全て大文字、アンダーバー使用禁止。」

ほーう。

798 :仕様書無しさん:02/05/02 15:23
>>797
「文字数は8文字まで」

だったりして(藁。

799 :797:02/05/02 15:32
あ、書き忘れてたが>>798で思い出した。

「変数名は16文字まで」

800 :798:02/05/02 15:39
う〜ん。
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 ) {
(略
}

803 :仕様書無しさん:02/05/02 17:32
型名長いのはかまわんから、せめてインスタンス名くらい短くしろと言いたい

804 :仕様書無しさん:02/05/02 18:23
処理の内容が全部書いてある関数名とか。


805 :仕様書無しさん:02/05/02 18:28
伝統に忠実に変数名は5文字が基本でしょう。

806 :アセンブラ屋:02/05/02 18:48
ラベル名や変数名6文字まで、というのが昔はよくあったな。
8バイトで1つの変数、ラベルを表現していて、
アドレス2バイトを取ると6バイトしか名前の領域がない、と。

807 :仕様書無しさん:02/05/03 00:16
creat()

808 :組み込み屋:02/05/03 03:20
とある番地がどのファイルなのか調べようと、
久しぶりにシンボルファイルを見て仰天。

hoge 0068030
入力された数値の範囲確認 0068032
hoge_001 0068040
ここに来たらエラー!! 0068048
:
以下、ところどころにアドレスが振られた日本語が…

慌ててアセンブラのマニュアルを見ると「ラベル名は半角256文字まで
記述できます。英数字、記号、漢字が使用できます」とあった。

;ちなみに日本語ラベルは意図してつけたのではなく、
;外注オヤジがコメント記号つけ忘れたものと判明…


809 :仕様書無しさん:02/05/03 04:38
ちょっと仕事を休んでいたんで、前の勤め先からの依頼で
Servletの小さな修正を1週間くらいで引き受けたんだが、
国に帰ってしまった中国人プログラマの書いたコードに愕然。
1メソッドが300行を越え、
開いたデータベースコネクションはほったらかし、
使ったストリームも開きっぱなし、
例外処理のcatch節の中は空っぽ、
変数のスコープがが大間違いでリクエストが集中したら
ユーザーごとの処理が混ざる、
等々。
今まで苦情もなく動いてたのが奇跡としか思えない駄目っぷり。
納期を大幅に延ばしてもらって修正にあたることになったけど、
腐った残飯からまともな料理を作れと言われてるような気分で、
吐き気をこらえながら仕事をしてる。
でも、このコードが問題にならない会社だってのが
一番の問題なんだよな、ここ。
辞めてよかった。
これ終わったらもう二度とちかづかねえ。

810 :仕様書無しさん:02/05/03 05:13
>809
てゆーか、仕様書が甘かったんじゃ?

どっちにせよそーゆー会社とはお付き合いしたくないが。

811 :仕様書無しさん:02/05/03 05:42
できましたー。といってコミットしてきたのが。
#include "/usr/home/bakamono/proj/module/include/xxxx.h"
というコード山盛り。

812 :仕様書無しさん:02/05/03 05:56
>>811
それはすごいなぁ。うん。
htmlにローカルのpathで指定してるのを思い出したよ。

813 :809:02/05/03 06:23
>>810
ああ?
仕様書?
ある訳無いじゃん、そんなの。
本人は仕様書だって言い張ってる画面イメージだけだよ。
あんなのが仕様書ならこの世の中にSEはいらんな。

814 :仕様書無しさん:02/05/03 07:14
>>809
> 腐った残飯からまともな料理
この例えいただき

815 :仕様書無しさん:02/05/03 11:12
>できましたー。といってコミットしてきたのが。
>#include "/usr/home/bakamono/proj/module/include/xxxx.h"
>というコード山盛り。

まだマシです。
#include <xxxx.h>
つまりstdio.hやstdlib.hとかをほうりこむディレクトリに
自分だけ使うファイルをいれてるのを見たことあるよ。
よそにもちこめねーじゃねえの。ぷんぷん。


816 :仕様書無しさん:02/05/03 11:22
>>815
大概のコンパイラは、インクルードファイルのディレクトリ指定できるか
>>811 よりは、マシだよ。

817 :仕様書無しさん:02/05/03 11:22
>>815
4年程前、stdio.h等を自分専用に書き換えて使っている
自称C言語が一番得意なプログラマーを見かけましたが、何か?

818 :仕様書無しさん:02/05/03 11:25
>815
「つまり」の前後の話がつながっておりません。

819 :仕様書無しさん:02/05/03 11:30
>>817
強烈ですね。私も昔、ベンダー配布のヘッダファイル
書き換えてましたが、何か?

820 :仕様書無しさん:02/05/03 11:40
ごめん、俺もSTLのバグ修正して使ってる・・・。

821 :仕様書無しさん:02/05/03 12:05
会社辞めたきゃさっさと辞めろ

822 :仕様書無しさん:02/05/03 12:22
内部設計ですが

書籍DBから書籍の在庫を探す文字列検索ソフトを作るとき

小さい文字(なんていうんだ、知らないけど)'っ'や'ゃ'を
検索できるようにしていない
濁音を専用に1バイト確保させる

おかげで"トッパン印刷"や"ソフトバンク"が検索できません
仕様だから問題ないようです

823 :仕様書無しさん:02/05/03 12:25
>>822
そういえば、漢字は検索できないね。
トッパンインサツ
で探してくれ、クライアントさんよ

824 :815:02/05/03 12:30
>>817
そういや、そういう人もいましたね。公開ファイルや
標準ファイルを自分で勝手に修正している人。
あとでまとめるときに苦労しました。

825 :仕様書無しさん:02/05/03 12:39
#define TRUE 0
ってのは流石にいないのかな、もう。

826 :仕様書無しさん:02/05/03 13:52
>>825
こういうことやりたい場合はどうすんのかな。

typedef enum {
  False, True,
} _Bool;

こうやって勝手に真偽値型を作るのって趣味以外だとだめだめ?



827 :782:02/05/03 14:31
うん

828 :仕様書無しさん:02/05/03 14:36
>>827
じゃあどうすんの? 単に int で 0,1 を返すと仕様に明記すれば
オーケー?

829 :仕様書無しさん:02/05/03 18:02
>822
拗音(ようおん)



830 :仕様書無しさん:02/05/03 18:03
忘れ物
吃音(きつおん)


照準固定(ろっくおん)

831 :817:02/05/03 23:15
>>824
修正ならいいんだけどね。
memmoveという関数名は嫌だからmmvという関数にしたい

・・・・って、それはそれでまぁ悪いけどいいとして、その宣言をstdio.hに書くなっての。


832 :809:02/05/03 23:30
駄目コードを書き直してまともなコードに直す、というのを
「腐った残飯からまともな料理」と書いたが、
もっと良い表現が浮かんだけど話す相手がいないので書き込ませてくれ。
「ウンコをせめてウンコ味のカレーにする」
材料がウンコじゃまともな料理は無理だが、
せめて食べ物を、という意味で。

833 :仕様書無しさん:02/05/03 23:36
>>832
話す相手がいないとこ悪いんだけど前のがよかった。

834 :名無しさん@お腹いっぱい:02/05/03 23:37
Spike様のコードを思い出す・・・まさに>>832

835 :仕様書無しさん:02/05/04 12:13
>817
ふ。
printfをマクロで独自関数に置き換えてるコードを拝んだことあるぜ。


836 :仕様書無しさん:02/05/04 12:14
>826
enumってswitch文のcaseに使えなかったなー。
あれは漏れの勘違いだったんだろーか?

837 :仕様書無しさん:02/05/04 13:48
>>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;
}

838 :仕様書無しさん:02/05/04 14:47
>835
よくある、あとsprintf,strcpyなどの、string.h系。


839 :仕様書無しさん:02/05/04 18:14
>837
あ、使えるね。
漏れの勘違いみたい。スマソ

MS-Cの頃だったかな...いや、VBだっけかなー。10年ぐらい前の話なんだわ。

840 :仕様書無しさん:02/05/04 18:17
>838
こういうときはドキュメントの必要性をひしひし感じるね。

そういうことをへーきでする奴はドキュメントなんか残さないんだよなー。

独自ISAMライブラリとか独自packedBCDライブラリとかもあったけど
これまた内部仕様無し。Windows版にするときにえらい苦労したよ......

841 :仕様書無しさん:02/05/05 12:36
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行以上…
卒倒しそうになったよ。

844 :仕様書無しさん:02/05/07 06:32
ひそかにワラタ>>837

845 :仕様書無しさん:02/05/07 08:14
>>844
何が変?

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
いんじゃないの?

そのかわり、真偽判定にそれを使わないやつは鏖殺しとけ。

848 :スレとは全く関係ないが:02/05/08 20:04
http://www.nifty.com/fumi/templet/t990707.htm
仕事中にこんなページを発見して、URLを自分宛てにメールした。

はずだった。

後輩の女の子に届いていた。なんてベタなんだ。なんてお約束なんだ。

849 :仕様書無しさん:02/05/08 20:09
>>847
だめだろ。
&& とか || とかは整数型に対する演算子であって、
列挙型に対する演算子ではないんだから。

850 :仕様書無しさん:02/05/08 21:17
>>848
その後輩の女の子が経理や社長秘書なら最高なんだけど、、、

どう?

851 :亞保留 ◆AHORU68E :02/05/08 23:12
>>843
それすごいな。
見てみたいや。

852 :仕様書無しさん:02/05/08 23:16
VBで、ステップ400行といったら「かなり多いですね」と言われた・・・

853 :仕様書無しさん:02/05/08 23:54
>852
1プロシージャのステップ数と思ったトカ

854 :スレ間違えた:02/05/09 01:06
int func1(/* char *arg1, char *arg2, int *arg3 */)
{
/* 高速化のため、引数はレジスタで渡す */
register char *arg1, char *arg2, int *arg3;

おい・・・


855 :仕様書無しさん:02/05/09 03:25
>>848
エロ関係のURLでなくて良かったと胸をなでおろしとけ
ちなみに漏れはそんな事したことない
・・・と聞かれもしないのに激しく断言してみるテスト


856 :852:02/05/09 09:49
>>853
いや、「この画面って処理からするとかなりステップ数多そうだけど、、、ソース見せて?」と
頼まれてソースを見せつつ説明した時の返答がそれだから、違うと思う。
てゆかその人、ちょっとした文字列変換を目的としたツールをVBで作るにも
ごちゃごちゃ繰り返し同じこと書いて、すぐ1000ステップぐらいいくからなあ。
400を4000と聞き間違えたのかもしれん。

857 :仕様書無しさん:02/05/09 11:41
同じ処理を繰り返すのにループ使ったら「読みにくいからやめて」って言われた事が...
あと、コントロール配列も「そんな裏技使わないでください」とか(笑

858 :仕様書無しさん:02/05/09 12:15
Dim a(30000) as string
とかやっているから、Redimを使えといったら
「そんな高度なテクニックがあったとは・・・」と尊敬の目で見られたことがある。

859 :仕様書無しさん:02/05/09 12:20
>846
せめてgotoのあて先はラベルにしてほすいー。

860 :仕様書無しさん:02/05/09 12:25
>854
一時期#asmがはやったなー。

861 :仕様書無しさん:02/05/09 17:16
マルチスレッドプログラムにて、複数のスレッドからとある関数を同時に呼ぶのがまずいのが発覚(約100箇所)。

責任者「排他かけるように修正しておいたから〜」

その修正ソース↓
#flgはグローバル変数

if(flg == 1){
  while(1){
    if(flg == 0){
      break;
    }
    sleep(1);
  }
}
flg = 1;
int ret = func();
flg = 0;

・・・このまま納品されましたとさ。


862 :仕様書無しさん:02/05/09 19:01
flg がグローバルじゃなかったら、それはそれでオモシロイかも。

# それはそれでイヤだけど

863 :仕様書無しさん:02/05/09 20:18
えーと、
flg に対する操作がatomic じゃないからダメなんだよな?

864 :仕様書無しさん:02/05/09 21:16
>>849
でもでも。列挙型といっても値は int だよね?

865 :仕様書無しさん:02/05/09 21:57
スレッドセーフじゃないよぅ。>>861

866 :仕様書無しさん:02/05/09 22:25
>>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つ宣言・・・
意味のある変数はこの順番で並んでいる。というか規則みたい。
馬鹿。


868 :仕様書無しさん:02/05/10 00:37
>861 バグが発覚する確率は下がっているとみていいんだよね?

例えれば、あー、あれか、死体をそのまま山林に埋めるんじゃなくて、
砕石機で粉々にして吹き飛ばしてみました、と。だけど、殺人には
変わりないよ、と。

# このコードをメンテするのはごめんこうむる

869 :仕様書無しさん:02/05/10 00:40
C言語だけど、変数は全て

英字1文字
  か
英字1文字+数字1文字

というソース。「なんで?」って聞いたら
「その方がコンパイルが早いから」だってさ。

>867 はなんでそんな宣言にしたか聞いてみた?

870 :名無しさん@お腹いっぱい。:02/05/10 00:59
うまくいえないけどセンスのないコードやオブジェクト指向な
プログラミングをするやついるよな。リファクタリングしてるんだけど、
それ以前におかしい、っていうやつ。

871 :仕様書無しさん:02/05/10 01:04
ホントうまく言えてないな。


872 :名無しさん@お腹いっぱい。:02/05/10 01:25
すまん。ありとあらゆる意味でセンスがないんだよ。ほんとソース見ていて
なんでこんなコードが書けるかな、こんな理解不能なことするかな、っていうのが
多すぎるんだよ。もちろん虫はぶんぶんとんでいるんでいくらとってもとりきれない。


873 :仕様書無しさん:02/05/10 01:34
そいつにとっては理解可能なことなんだろう?
君も、もうちょっと表現力と国語を勉強したほうがいいぞ

874 :仕様書無しさん:02/05/10 01:46
>>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

比較で副作用起こすんじゃねーよ、ヴォケが。

877 :仕様書無しさん:02/05/10 05:03
>>876
それ、、、おかしいのか?

2番目のは副作用というか、数値による比較命令にかけたから、
$xが数値に自動変換されただけでしょ。

むしろ、1番目の動作の方が不思議。
perlって、文字列のままインクリメント出来るんだ、すごい。
知らなかったYO!(・∀・) perl(・∀・)イイ!!

単に、>>876が言語仕様を理解する能力がなかっただけじゃん。

878 :876:02/05/10 05:16
>2番目のは副作用というか、数値による比較命令にかけたから、
>$xが数値に自動変換されただけでしょ。

はあ?
自動変換するなら式の評価中だけでいいじゃん。
なんで変数の中身まで変化させる必要あんの。

ちなみに

$ perl -e '$x="000";$x<10;print"$x\n";'
000

なんですけど。ふつう比較だけでは変数の内容は変わらないよ。
なぜかインクリメントが後に続いたときだけ変わるの。

>perlって、文字列のままインクリメント出来るんだ、すごい。

馬鹿まるだし。

879 :仕様書無しさん:02/05/10 05:21
perl触らなくてよかった・・・

880 :仕様書無しさん:02/05/10 06:01
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

文字列と数値をごちゃまぜにして扱うのが悪い。
馬鹿まるだし

881 :876:02/05/10 07:07
> 文字列と数値をごちゃまぜにして扱うのが悪い。

それは正しいご意見ですが、
Perl は意図的に文字列も数字もごちゃまぜにできるようにしてあるのです。

評価したときに型が合わないからといって、勝手に変数の内容を
変えたり変えなかったりするのはどう考えてもおかしいと思うんだけど。
そんなことするくらいならエラー出すべきでは?

> 馬鹿まるだし

苦しい煽りだね(w

882 :仕様書無しさん:02/05/10 07:31
>>876
で、それで会社を辞めたくなったわけ?

883 :仕様書無しさん:02/05/10 08:09
なんか、朝っぱらから変な雰囲気だねぇ。

>評価したときに型が合わないからといって、勝手に変数の内容を
>変えたり変えなかったりするのはどう考えてもおかしいと思うんだけど。

変数の内容は変えてないでしょ。型は変わったけど。

>Perl は意図的に文字列も数字もごちゃまぜにできるようにしてあるのです

そうですよ。
数値用の比較演算子を使ったということは、
その変数を数値として扱うという意思表示をしたのと同じです。
だから、それ以降は変数の型が変わったんでしょ?
あなたの書いた構文通りにperlは動いてると思いますよ。
プログラム中で変数をどう扱うか、
明確な設計思想が無いままコーディングする方が問題。
「変数の内容を変えたり変えなかったり」というのは、
あなたの言いがかりとも取れますが?

>そんなことするくらいならエラー出すべきでは?

その動作が「仕様」どおりなら、エラーを出す必要ないのでは?

スレ違いなのでsage

884 :仕様書無しさん:02/05/10 08:10
>>881
>Perl は意図的に文字列も数字もごちゃまぜにできるようにしてあるのです。
そういう言語なのをわかっていて、その上で
>$ perl -e '$x="000";$x<10;$x++;print"$x\n";'
というノラリクラリな書き方を(判りやすい例示ではあるにせよ)したんだったら、
>副作用
って、Perlに対する揚げ足取りじゃない?
まあ、
>私はこれでPerlが大嫌いになりました。
は理解できるけど、それが何か?
どっちかっていうとPerlの方から
「そんなソースを書くプログラマが大嫌いになりました。」
って言いだしそう…。

885 :884:02/05/10 08:13
うひゃ、書いてたら1分違いで似たようなレスが(w

886 :仕様書無しさん:02/05/10 10:03
まぁ結論としては
Perlってそういうもんです。いやなら使うな。
ってことです

887 :仕様書無しさん:02/05/10 10:25
>869
コンパイル速度にどのくらい差があったのか知りたいですね。

888 :876:02/05/10 11:59
> その変数を数値として扱うという意思表示をしたのと同じです。
> だから、それ以降は変数の型が変わったんでしょ?

「だから」になってませんね。
式の中ではたしかに値は数値として扱うという意思表示をしている。
でもふつうの言語では、評価するときの型と変数自身の静的な型は分離すると思いますが。

もちろん Perl はそういう「ふつうの言語」じゃなくて、
こういう特殊な仕様なのはわかってますよ。ソースも読んだしね(その付近だけだが)。
そのうえでぐちたれてるだけです。

> 明確な設計思想が無いままコーディングする方が問題。

Perlでワンライナーかくのに設計思想ですか。はあ。
すばらしい才能をおもちのようで。

> どっちかっていうとPerlの方から
> 「そんなソースを書くプログラマが大嫌いになりました。」
> って言いだしそう…。

自分の感情とPerlの感情をごっちゃまぜになさっていますよ。
型の不一致は危険ですね。

889 :仕様書無しさん:02/05/10 12:37
>888
Perlは馬鹿防止機能付き(;俗に言うバカチョン)じゃねーんだ。意味があって文字列と数値が混在できるようになってるんだ。
 ラクダ本、ちゃんと読んだか?


890 :仕様書無しさん:02/05/10 12:42
>>876
つか、Perl のワンライナーごときしくじった程度で、会社やめたくなったので?
つうか、この程度でぐちぐち書きたれたあげく、あおりに乗っかってるような
人はやめたほうがその会社にとってもいいような気がするけど。

891 :仕様書無しさん:02/05/10 13:13
>>864
>でもでも。列挙型といっても値は int だよね?
大抵のコンパイラが列挙型を整数型として実装しているので、大抵のコンパイラでは問題ありませんが、
C言語の規約で決まっているわけではありません。

列挙子は整数値として利用できますが、整数を列挙子に変換した結果は未定義です。
つまり、>>826のように_Bool型を定義した場合、
_Bool b;
b = (_Bool)(1 > 0);
の結果は未定義です。

892 :仕様書無しさん:02/05/10 13:55
>>888
>Perlでワンライナーかくのに設計思想ですか。はあ。
>すばらしい才能をおもちのようで。

ワンライナー程度にすら設計思想をもてない奴が、
プロジェクトレベルに設計思想を反映させてるとは思えないけどね。

893 :仕様書無しさん:02/05/10 17:16
いつから言語の好き嫌いを語るスレになったの?

894 :仕様書無しさん:02/05/10 18:25
そうだよ。ソースコード見てこの会社やめようと思おうよ〜 (←莫迦)

895 :仕様書無しさん:02/05/10 19:17
>>894
たぶん、>>876みたいなアホが書いたソースを見たときに
会社辞めようと思うんじゃない?

896 :仕様書無しさん:02/05/10 20:35
自分が会社辞めようと思ったことはないけど、
外注の納品してきたソースを見て、二度と仕事を頼むのはやめよう、と
思ったことは何度もあるよ。

897 :仕様書無しさん:02/05/10 21:32
だから〜、>>876は「へーそうなんだ。知らなかたよ。貴重な情報かりがとう」
って言ってもらいたかっただけだってば。

898 :仕様書無しさん:02/05/10 21:43
>887
差は全く無し。というのは、当時使っていたコンパイラが2パス構成で:
パス1:字句解析・構文解析の後、quadrupleをディスクへ出力
パス2:quadrupleを読み込み、オブジェクトを出力
という構成になっていたのさ。当然、字句解析よりディスクへの出力の方が
はるかに時間がかかるんで、測定しても全く差は出なかった。

/* というデータを出しても、ヤツのコードは相変わらずだった */

899 :仕様書無しさん:02/05/10 22:50
まだ、働いてないんで、質問なんですが、
ふざけたコード書く奴と一緒に仕事をせざるを得ないときは、
どういう風に対処してるんですか?
徹底的にそいつに注意して直させる? 放置?

900 :仕様書無しさん:02/05/10 23:19
>>898
タイプ量が減る分、書くのが速くなります。
プログラム作成がグンと速くなります。

もちろん、情報量に乏しいため人が読むのにやさしくありません。
あとから解析してなおすひとが泣き叫びます。

「ヨシ、一から作り直そう」

そしてまた、少ないタイプ量で、プログラムが作り直されてゆきます。


901 :仕様書無しさん:02/05/11 00:12
>899
そういう奴は淘汰されそうな所に行くべし。
SMGとか(藁

902 :仕様書無しさん:02/05/11 02:07
bit演算子の|を見て「パイプ」と。
恐る恐る説明したら「それじゃアンドじゃないですか?」と。
bit演算子をまるっきり知らなかったようなので放置。
それから数ヶ月後の今、ヤツが入院してしまい俺がソースを引き継いでます。。。



903 :仕様書無しさん:02/05/11 08:13
>>899
年下・経験が自分より下
 同じ会社の後輩なら、徹底的に指導する。
 別の会社の人間なら、仕事に支障がない程度に教育する。

それ以外
 時と場合によるが、自分に影響がない程度に(その人の行動に)注意する。
 


904 :仕様書無しさん:02/05/11 08:32
SQL文が一つの処理で300行あったとき…


905 :仕様書無しさん:02/05/11 10:25
項目が150あるテーブルに対して
項目ごとに改行してINSERT文書けば
300行になりますが、何か?

906 :仕様書無しさん:02/05/11 11:35
処理の内容も見ずに行数が多いとか変数が多いとか
騒いでいる中途がきた時、その中途を辞めさせたくなるな


907 :809:02/05/11 11:36
それ、テーブル設計する方も問題じゃないの?
前の勤め先でカラム名が
○○1、○○2、○○3、ってのが延々50個続いてるってのがあったよ。


908 :仕様書無しさん:02/05/11 12:31
>898
ありがとうございます。

昔のBASICはソースの格納容量が小さくて変数名が短い方が
長いプログラムが入ったけど、そのへんから来てるんじゃないかなー。

909 :仕様書無しさん:02/05/11 12:33
>899
テストをきっちりやらせて正常に動いているなら良しとします。
そのかわり後のメンテも全てそいつにやらせようと心の中で誓います。


910 :仕様書無しさん:02/05/11 19:50
郷に入っては郷に従え

911 :仕様書無しさん:02/05/12 14:05

 char buff[10];
 ……
 strcpy(buff,&buff[2]);

久しぶりにこんなコーディングを見た。
書いたのは馬鹿っ高い金を取るので有名な会社のヤツ。


912 :仕様書無しさん:02/05/12 14:47
馬鹿っ高い金を取るので有名な会社
が下請けに出した先のやつだろ


913 :仕様書無しさん:02/05/12 15:39
>>910
それはわかるけど、バカの巣窟に入ってバカの巣窟に従うのは
人間として耐えれません。

914 :仕様書無しさん:02/05/12 22:53
ではそこから立ち去りましょう

915 :仕様書無しさん:02/05/13 09:59
>>911
NE●?
富士○?
◎SK?

916 :仕様書無しさん:02/05/14 08:23
>>911
あいちゃん?
昔「遅くて遅くて使い物にならないんだけど・・」ととあるお客さんに相談を
受けてあいちゃんの作ったソースを見たことがあるんだが・・・
「なんじゃこりゃ?」ってな糞ソースだった。
・・でもすっごくお金はとられたらしい・・

917 :仕様書無しさん:02/05/14 08:50
誰か>>911のプログラムの問題点を可能な限り挙げてみて下さい。


918 :仕様書無しさん:02/05/14 08:56
いくつ思いつけばPG合格なのかな。俺3つしか思い浮かばないや。

919 :仕様書無しさん:02/05/14 11:20
でも、まあ、動くだろうなあ。ふつうの環境なら。

920 :仕様書無しさん:02/05/14 19:24
>>907
うちのは500超えてますが何か?
INSERT文が1万行を超えますが何か?

まじめに辞めようと思います・・・

921 :仕様書無しさん:02/05/14 19:51
あれ?今まで出てなかったのか。switch case で、こんなん。
見つけた時は、倒れそうになったけど。

switch(i)
{
 case 0:
 {
  . . . // なんか0
  break;
 }
 case 1:
 {
  . . . // なんか1
  break;
 }
 . . .
 default:
 {
  なんか
 }
}

922 :仕様書無しさん:02/05/14 20:03
何が倒れそうなのかイマイチ分からん
caseラベルのところにもブロックを作ってるところ?

caseラベルにブロックをつけるのは別に倒れそうにはならんでしょ

923 :仕様書無しさん:02/05/14 20:21
>>922
完全に同意

924 :仕様書無しさん:02/05/14 21:19
>>922,923
アホ発見

breakでswitchブロックから出れないのが
わからんのか?

925 :仕様書無しさん:02/05/14 21:37
>>924
ごめん、最近Cの勉強はじめたばかりなんだけど正直分からん

構文と見比べた限りじゃ間違ってないように思うが・・・

926 :仕様書無しさん:02/05/14 21:45
>>924
break文はあくまでも一番内側のfor,while,do,switchを抜けるだけなのでは?
不安になって試してみたけど,gcc 2.95 では問題なく動いたよ。
コンパイラによって違うのかもね。何で試した?

脳内コンパイラは論外ね。

927 :仕様書無しさん:02/05/14 21:49
>>924
んん?6行目のbreak文で8行目に抜けちゃうってこと?
それは有りえないはずだが・・・。
それとも何か別のこと言ってる?

928 :仕様書無しさん:02/05/14 21:52
921==924を叩く事で1000に到達の予感…

929 :924:02/05/14 21:56
すまん、俺がアホだった。
ちなみに924!=921ね。
俺の理論で行くと関数のブロックからもbreakで出れることになる。
もう寝るか・・・

930 :仕様書無しさん:02/05/14 22:00
>>929
正直なので罵声は勘弁してあげましょう。

931 :仕様書無しさん:02/05/14 22:05
>>921の書き込みの意図も同じ勘違い?
それとも何か気が付かないところがあるのかなぁ

932 :仕様書無しさん:02/05/14 22:06
921出てこいよ。
このどアホ。。。あ、そうか。

switch〜case文の存在を知らなくて「今まで全部IFでやってたよ!こんな方法が!!!」
と思って倒れそうになったってことだね。

933 :仕様書無しさん:02/05/14 22:16
関係ないが、ちょっと上のほうで出てた
switchを関数ポインタの配列に置き換えるのは時と場合による。

添え字がどうのって話もあるが、それ以上にcaseラベルの部分を関数として切り出すのが
適当かどうかってことを考えないといけない。
ただ連続してる部分だから関数にってのはいかがなものか。
(ちゃんと一つの関数で意味をなしてないと関数として切り出すべきではない)

934 :仕様書無しさん:02/05/14 22:23
>>924
おしいな〜。天然で美味しそうな生餌だったのに。これでもう少しいきが良ければ・・・。

935 :921:02/05/14 23:01
スマン!俺の勘違いだった!
やっぱプログラマ向いてない。辞めようと思った!

936 :仕様書無しさん:02/05/14 23:03
>>935
名乗り出たので許す。
精進せよ。

937 :仕様書無しさん:02/05/14 23:31
お前等、いつから寛容になりやがりましたか?

938 :仕様書無しさん:02/05/15 00:44
まぁ921はgoto使ってろってこった


939 :仕様書無しさん :02/05/15 01:16
ここ数年Cをかいていないので一瞬びびってしまった。だけど最近C,C++を書かんな。

940 :仕様書無しさん:02/05/15 01:18
>>937
派遣とCOBOLer以外には寛容なのがマ板です。

941 :仕様書無しさん:02/05/15 01:22
先輩の作ったプログラムを修正する事になりました。

void hoge(void)
{
  int amark;
  int bmark;
  int cmark;
  int aflg;
  int bflg;
  int cflg;

    :


氏のうとおもいました。

942 :仕様書無しさん:02/05/15 01:42
>>941
単に変数名がドキュソなのを言ってるの?

943 :仕様書無しさん:02/05/15 01:49
>>942
クサカベ某が2人も出てきそうだからだろ

944 :仕様書無しさん:02/05/15 01:50
>>940
VB厨、Del厨も付け足しといて。

945 :仕様書無しさん:02/05/15 01:51
static/外部変数じゃないだけましか。


946 :仕様書無しさん:02/05/15 02:53
>>942
フラグが6個もある関数、俺は見たくないぞ。
プログラムしたことあるの?

947 :組み込み屋:02/05/15 03:27
>>933
そうなんだよなー。後々のメンテや拡張を考えると、
caseラベル羅列しといた方が正しく思えることもあるんだけど、
タイミングクリティカルな部分なんかだとほぼ実行時間が揃う
関数ポインタ配列も魅力的で、いつも悩むんだよね。


948 :884:02/05/15 03:42
>>947
コンパイラや最適化オプションにもよるけど、
switch( enum )だと、勝手にジャンプテーブル化してやがることもある。

949 :仕様書無しさん:02/05/15 05:38
>>932
以前、他社で作ったソースのメンテをしてたら、こんなコードが。

if( j == 0 ) {
 /* なにか0 */
}
else {
 if( j == 1 ) {
  /* なにか */
 }
 else {
  if( j == 3 ) {
   /* 以下延々と9まで続く... */
  }
 }
}

無理して switch を使えとは言わないが、せめて if 〜 else if 〜 else if 〜
ぐらいで書いて欲しかった...
段々インデントが深くなり、最後に } が階段状に並ぶところはもう芸術(w

あまりに脱力したので、その箇所(似たようなのが他にも多々...)は
そのまんま放っておきました

950 :仕様書無しさん:02/05/15 07:13
950!! (。・_・。)ノ

>>949
そういや、どっかのサイトで「VBの優良サンプルです」とかいって
その手の書式で20階層ぐらい下げてるソースを自慢気に配布していたのを見たよ。
すっげぇDQNだなあと思って感心してしまった。
VB歴2年とか書いてあったような。

951 :仕様書無しさん:02/05/15 09:00
VB使いにダメなヤツの多いのをおしえてくれる最良サンプルなんだろ。

# 全員がダメと言ってるわけではない。

952 :仕様書無しさん:02/05/15 09:28
>>950
else ifを連続してかくとVBの昔のバージョンだときちんと判定されなかったから、
ある程度まではしょうがないんだけどね。
ただ、優良サンプルというほどのもんじゃない。
むしろそこまで行かないようにするテクニックを紹介すべきだと漏れは思う。

953 :会社名無しさん:02/05/15 13:18
 あるお客様より、客先製作プログラムの機能追加依頼が来る。
 .BASファイル内に、数十個のDBアクセス関数があった。
 DBアクセス関数の成功・失敗を示す戻り値が、見事なほどにばらばら…

Func1: 成功の場合 1、 失敗の場合 0
Func2: 成功の場合 0、 失敗の場合 -1
Func1: 成功の場合 0、 失敗の場合 1
Func1: 成功の場合 True、 失敗の場合 False
 ...


954 :仕様書無しさん:02/05/15 15:07
以前どっかのシステムのメンテしたとき、そんなのあったな。 >>953

しかしFunc2以降は・・・コピペ後の編集忘れだよな?

955 :仕様書無しさん:02/05/15 19:02
>>952
DQN疑惑発生。

956 :仕様書無しさん:02/05/15 20:24
>>952
昔、っていつのバージョンよ。
V2とか言うなよ

957 :組み込み屋:02/05/15 22:13
>>948
switch 〜 case 文って、コンパイラでクセがあるよな。
組み込みって、命令フェッチが死ぬほど遅かったり。
ROM より早い RAM とか、メモリ上とか、
あるいは直接キャッシュ上とかに展開したり。
僅か数ステップの命令数の違いやらでも、時としては動かなかったり。

958 :仕様書無しさん:02/05/16 04:50
>957
case文が少ないと直接分岐命令に展開するけど、
case文の数が増えるとジャンプテーブルにになったりとか。

なんかいろいろあるらしい。

959 :仕様書無しさん:02/05/16 06:57
>911
>
>  char buff[10];
>  ……
>  strcpy(buff,&buff[2]);
>
> 久しぶりにこんなコーディングを見た。
> 書いたのは馬鹿っ高い金を取るので有名な会社のヤツ。
>

 strcpy(buff,buff+2)

と同じで先頭の2文字を詰めてる、普通だと思うが。

960 :仕様書無しさん:02/05/16 07:05
>>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);
}

動くよ。

962 :仕様書無しさん:02/05/16 08:06
>>959
そのCソースのアセンブル展開をみないと、動くかどうかわからんだろ

963 :仕様書無しさん:02/05/16 08:21
コピー元とコピー先が重なる場合の動作は保証されてるのかされてないのか。
俺はされてないに一票。

964 :仕様書無しさん:02/05/16 08:29
memcpyとmemmoveがあるのは何故だろう。

965 :仕様書無しさん:02/05/16 08:53
以前、ある新人にmemcpyとmemmoveの2つの存在理由を考えてみ、と言ったら
「作った人が違うんじゃないんですか。」とのたまいやがった。
先輩組は笑う気にもなれなかった。(一部の新人組は爆笑してた)

966 :仕様書無しさん:02/05/16 09:00
まぁ、大抵エイリアスだからどっちでも構わないんだけどね。

967 :仕様書無しさん:02/05/16 09:32
>>959
晒しage

968 :無知:02/05/16 09:39
>>959
って動くんじゃないの?
バカにもわかりやすくおせーてくださいおながいします!

969 :仕様書無しさん:02/05/16 09:41
>>968
いいんだよ。動くんなら。

970 :無知:02/05/16 09:50
結局は誰も俺なんかには教えてくれないわけか・・・・・
マ板は不親切じゃのう(´┏┓`#)

971 :仕様書無しさん:02/05/16 09:52
MSDN読めば?

972 :仕様書無しさん:02/05/16 12:24
>971
なぜMSDNなのか教えてください。

C言語の仕様ならC言語の本を読むべきだし、
CPU依存の話ならCPUの解説書を見るべきだとおもう。
コンパイラの動作の詳細ならMSDNに載っているとは思えない。いや、ひょっとしてそーゆー情報もMSDNにあるのかしら?


973 :仕様書無しさん:02/05/16 12:43
memcpy、memmoveは関数の仕様であって
CPU依存ではないだろ?
memcpyとmemmoveの動作が違うのがコンパイラのせい?
初耳だな

974 :仕様書無しさん:02/05/16 12:47
>>968
つーか>>963読め

975 :仕様書無しさん:02/05/16 12:54
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strcpy.3.html
> strcpy()関数は src(終端文字`\0'を含む)をポインタとする文字列を
> destをポインタとする配列にコピーする。二つの文字列は重ならない。
                    ^^^^^^^^^^^^^^^^^^^^^^^^
> 受け側の文字列であるdestはコピーを受け取るのに十分な程度に大きく
> なければならない。


976 :仕様書無しさん:02/05/16 12:56
>コピー元とコピー先の文字列が重なり合っているときの
>strcpy 関数の動作は未定義です。

MSDNのも書いておいてあげよう。

977 :仕様書無しさん:02/05/16 14:02
MSDNライブラリ Visual Studio 6.0から

解説
memmove 関数は src から dest に count バイト数をコピーします。コピー元とコピー先の領域が一部重なっている場合は、memmove は、重なっている部分の内容をコピーしてから、上書きします。

解説
memcpy 関数は src から dest に count バイト数をコピーします。コピー元とコピー先が重なり合っていると、この関数は、重なっているコピー元のバイトをコピーしてから、上書きするとは限りません。重なり合っている領域を扱うときは memmove 関数を使ってください。


978 :仕様書無しさん:02/05/16 15:33
関数の仕様って完全に決まってたのか?
知らん買った。

979 :仕様書無しさん:02/05/16 17:55
>>978
いやいや、うちの会社には絶対にきて欲しくないタイプの人だね

980 :仕様書無しさん:02/05/16 18:10
そういえば、こういう書き方するやつがいたな。
sprintf( a, "%s%s", a, b );

981 :仕様書無しさん:02/05/16 18:43
こういうのあった。

char *buf;
char size[1024];

buf = malloc(sizeof(size));

この配列は sizeof でしか使われていない。

別の関数にも、size[] の中身の数字だけ違って同じのがいっぱいあった。


982 :仕様書無しさん:02/05/16 18:50
>>978
> 関数の仕様って完全に決まってたのか?
少なくともC言語の標準関数の仕様は決まっている。

君の作った関数の仕様は決まってないかも知れないが


983 :仕様書無しさん:02/05/16 18:54
char buff[10];の時
strcpy(buff+2,buff);はまずいが
strcpy(buff,buff+2);はいいと思う。

984 :仕様書無しさん:02/05/16 19:07
今動くからって理由で本来未定義の動作をあてにすんなよ...
コンパイラ(付属の標準Cライブラリの実装)変わったら一発で意図通り動かなくなる可能性大。

985 :仕様書無しさん:02/05/16 19:35
>>981
defineが嫌いなんじゃない?

986 :仕様書無しさん:02/05/16 19:46
>>983
strcpyが必ず1バイトずつ順番にコピーしてくれるとか決め付けてないか?

987 :仕様書無しさん:02/05/16 20:05
>>981
sizeofの使い方を小一時間教えてください。

>>983
後ろからコピーって可能性もあるし。

988 :仕様書無しさん:02/05/16 20:43
誰しもプログラムをはじめた頃は
strcpyとかには一度ははまった経験があると思うんだが・・・。
学習能力のないやつが多いのか?

989 :仕様書無しさん:02/05/16 21:00
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
なるほど、そうか、しかしだな、今まで書いた
コードを考えると、信じたくないぞ!

992 :仕様書無しさん:02/05/16 21:28
>>973
おえおえ、そのコンパイラがDMAとか使ってたらどうする?
めったにないとは思うがCPU依存じゃん・・。

993 :仕様書無しさん:02/05/16 21:56
>>989
その通りなんだけど、これくらいの事頭の隅に入れとけよ、と言いたい。

994 :仕様書無しさん:02/05/16 22:00
Z80でメモリ転送するときにハマった覚えがあるよ〜

995 :仕様書無しさん:02/05/16 22:11
次スレあるの?

996 :仕様書無しさん:02/05/16 22:11
1000

997 :仕様書無しさん:02/05/16 22:11


998 :仕様書無しさん:02/05/16 22:12
while(1){

999 :仕様書無しさん:02/05/16 22:12
return 0;
}

1000 :仕様書無しさん:02/05/16 22:12
1000!!!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

224 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)