1 :
仕様書無しさん :
01/09/21 21:40
2 get
3 :
仕様書無しさん :01/09/22 00:36
/* 転職先がきまった。このソースにつきあうのもあと2週間…(感涙)*/
>>3 転職先の会社で最初の仕事として、前任者からの引継ぎが発生する。
そしてそのソースを見て貴方はこうつぶやく。
「この会社、辞めよう・・・」
5 :
仕様書無しさん :01/09/22 04:04
>>4 その晩、ふらりとここを訪れ、そしてこう書く。
「信じられねぇ!やっと決まった転職先のソースコード、
前の会社以下だゴルァ!! くっそーやめてやるぅ!!」
7 :
仕様書無しさん :01/09/22 09:15
世の中にまともなソースコードがあるなら教えてくれ!
>>7 きちんと動いてテストされてメンテしやすいコードを見たことない?
> 3-6
わかりやすいループだ。
>>7 自分のはどうなの?
10 :
仕様書無しさん :01/09/22 13:16
>>7 void main()
{
printf( "Hello World\n" );
}
11 :
仕様書無しさん :01/09/22 13:26
>>11 int main(int argc, char *argv[])
{
printf( "Halo Warld\n" );
}
13 :
仕様書無しさん :01/09/22 13:58
なぜ素直に int main(void) { printf("hello, world\n"); } って、書かないんだ?
14 :
仕様書無しさん :01/09/22 14:02
>>12 -13
int main()にするなら、なにか戻せよ!
15 :
仕様書無しさん :01/09/22 14:34
Hello World程度でこれか・・・・まともなソースコードなんて存在しない理由がよくわかった気がする(ww
>>14 int main(int argc, char *argv[])
{
return printf( "Halo Warld\n" );
}
17 :
仕様書無しさん :01/09/22 14:39
>>14 スマン。これで満足か?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("hello, world\n");
return(EXIT_SUCCESS);
}
18 :
仕様書無しさん :01/09/22 15:13
//***ワケ分からんからコメント化しとく。***// //***分かった人は直しといてね(はぁと)***// //**このへんにいろんなソース**// //***ね、ムズイっしょ?***//
即席ツール書くときは int main(int c, char **v) とか書きますが何か?
20 :
仕様書無しさん :01/09/22 17:47
>>19 誰もあなたに追求などしていませんが何か?
色々と心当たりのあるヤツらが煽りあってる(ワラ
test
24 :
仕様書無しさん :01/09/23 09:23
>>17 #include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
で良いだろ。
別にstdlib.hインクルードして
EXIT_SUCCESSなんて使うなや。
ダサ。
25 :
仕様書無しさん :01/09/23 09:53
26 :
仕様書無しさん :01/09/23 14:00
GPL なのにコピペ&非公開のソースコード
27 :
仕様書無しさん :01/09/23 14:27
#include <stdio.h> int main() { printf("hello Wolrd\n"); return 0 }
28 :
仕様書無しさん :01/09/23 14:31
int main(void)ではなく、int main( int ...(以下略)
29 :
仕様書無しさん :01/09/23 14:45
しゃあぷいんくるうど かっこえすてぃでぃあいおおぽちえいちかっことじ いんと めいん かっこいんとああぐしー かんま きゃらあすたーああぐぶい かっことじ かっこ ぷりんとえふまるかっこだぶるこーと はろーわーるどびっくりえんえぬ だぶるこーと まるかっことじ せみころん りたーん ぜろ かっことじ
30 :
仕様書無しさん :01/09/23 14:46
>>29 ご:りたーん ぜろ
せい:りたーん ぜろ せみころん
31 :
仕様書無しさん :01/09/23 14:47
えぴすてーめーさんですか?(w
32 :
仕様書無しさん :01/09/23 15:26
つーかばぐってっぞ。 めいんのひきすうは かっこいんとああぐしー かんま きゃらあすたあすたーああぐぶい だろ? ぶいぶい。
33 :
仕様書無しさん :01/09/23 19:33
/* 2001/09/23 休日出勤 コード改修
*
>>13 ,
>>14 さんはこれで勘弁してくれるだろうか・・・
*/
int main(int argc, char *argv[])
{
printf( "Halo Warld\n" );
return 0;
}
34 :
ミ(゚◎゚)ミ ◆c2uMaIpA :01/09/23 20:05
>>33 ワーニング:argcが使用されていません。
ワーニング:argvが使用されていません。
35 :
仕様書無しさん :01/09/23 20:19
36 :
仕様書無しさん :01/09/23 20:46
>return 0; >} > >で良いだろ。 >別にstdlib.hインクルードして >EXIT_SUCCESSなんて使うなや。 嬉々として数字を安易にコードに埋め込むなや。 ださいんじゃ、ボケ。
よくある戻り値にマクロを使うのもダサいと思うけど。
>>35 のリンク先
ぉぃぉぃ、じゃ
int main(int argc, char *argv[], char *env[])
は許されないと言うわけか…
>>35 君は一々 0 を定義するの?
× char *env[] ○ char *envp[]
40 :
仕様書無しさん :01/09/23 21:03
>>38 え? char* の引数ふたつってできるの!?
>>38 ソースコードを ANSI C 準拠にしたいなら許されませんが。
>>40 UNIX 系だと、三番目の引数で環境変数が取得できる環境もあります。
>>36 ハァ?
その短さで
いちいちdefine定義するのか?
ちみのエディタは数行しか
表示できないようだな。
イッテヨシ。
>>42 マクロ定義とエディタの表示行数の関係が
いまいちよくわからないんだけど。
>>36 マクロ定義を使うメリットは、主に
- 環境によって値が違うのを吸収する
- ソースコードの読みやすさに影響する(たとえば NULL, 0 を使い分ければ、変数や
戻り値の型が整数なのかポインタなのか分かる)
の二つだと思うけど、EXIT_SUCCESS に関してはどちらも当てはまらないよね。個人的
には 0 と書いても気にならないな。
煽りでなければ、なぜ EXIT_SUCCESS を使うべきと思うのか、もうちょっと詳しく書いて
ほしい。
>>43 44の人が書いているように
可読性云々の話からです。
1つのソース、かつ、数行で有れば
別に0と書いてあってもなんら問題が
無いと考えたから。
もちろん、多数のソース、
表示範囲を超えるソースなどになれば
可読性や、戻り値をそろえるために
マクロ定義するのが妥当。
つーか、仕事ではそうしないと駄目。
>>45 みんなsageで名無しだから誰が誰だかよくわからんが。
>>42 を読むと、数行しか表示できないから*わざわざ*defineを
使っているのか?と読めたので、
数行しか表示できないエディタでdefineすることのメリットは?
と、思っただけでした。
EXIT_SUCCESSなんか普通使わんと思うが これは仕事以外で作ったこんな数行のコードだったら0でいいだろうし 仕事だったらエラーを1種類しか定義できないEXIT_XXXなんか使わんだろ
Hello Worldでこんなに荒れるのは初めて見た(w
みんな暇なんだよ、きっと。 でなきゃ徹夜続きで頭がウニになってるとか。
50 :
仕様書無しさん :01/09/24 07:42
>>7 どうですか?
プログラムでは無いが、一応ソース
<html>
<head>
<title>hello world</title>
</head>
<body>
hello world
</body>
</html>
>>50 全然まともじゃないんだけど…
HTML4.01 Transitional としてチェックしました。
5個のエラーがありました。このHTMLは 66点です。タグが 4種類 4組使われています。
先頭の数字はエラーのおおまかな重要度を 0~9 で示しています。少ない数字は軽く、9 になるほど致命的です。0 は減点対象外のごく軽度のエラーで (グレイのかっこつき) でメッセージされています。
8: line 1: 最初の記述が DOCTYPE宣言ではありません。 → 解説 2
1: line 1: <HTML> には LANG 属性を指定するようにしましょう。 → 解説 106
0: line 4: (<HEAD>~</HEAD> 内に <LINK REV="MADE" HREF="mailto:~"> が含まれていません。) → 解説 109
0: line 4: (<HEAD>~</HEAD> 内に <LINK REL="NEXT" HREF="~"> などのナヴィゲーション用のリンクが含まれていません。) → 解説 110
4: line 4: <HEAD>~</HEAD> 内に <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="~"> が含まれていません。 → 解説 113
1.文章型宣言を行いましょう。
2.HTMLには言語情報を追加しましょう。
3.HEAD内に文字コード情報を追加しましょう。
4.BODYはブロック、SCRIPT、INS、DEL要素以外を持つことができません。
文字列はブロック要素(例えばP)の中に入れましょう。
ナビゲーション用のメタ情報はユーザーエージェントに
ドキュメントの方向性を示します。
サイト構造が存在する場合には使用しましょう。
ナビゲーション、著作者情報を除く修正版:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"
http://www.w3.org/TR/html4/strict.dtd ">
<html dir="ltr" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Hello world.</title>
</head>
<body>
<p id="msg">Hello world.<br>This file is standard HTML document.</p>
</body>
</html>
>>52 言語が"en"で
charset=Shift_JIS
で良いのか?
漏れはhtmlに詳しくないのだが
何か変だと思われ。
age
>52 ・大文字にしない。 ・最後にピリオド、感嘆符などを付けない。 ・helloの後にはカンマを付ける。 基本からやり直してきたまえ。
>>55 お約束うざい
もっと建設的な意見はないのかね
57 :
仕様書無しさん :01/09/24 16:36
HTMLになると急に元気になる奴ら発見!
58 :
仕様書無しさん :01/09/24 16:40
>>57 Webデザイナー、Webプログラマーは、無能軽薄野郎の
隠れ蓑。
じゃあ public class Harowarudo{ public static void main(String[] args){ System.out.println("Harowarudo"); } }
>>55 すみません。適当すぎました。
>>53 英数字しかないのでjaは不自然かと。
isoやasciiにしなかったのは掲示板自体がSJISの為。
文字コードと言語情報は競合しないはず。
http://www.w3.org/TR/1999/REC-html401-19991224/struct/dirlang.html を参照のこと。
著作者情報、スタイル、スクリプト追加
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"
http://www.w3.org/TR/html4/strict.dtd ">
<html dir="ltr" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="author" content="Author">
<meta name="copryight" content="© 2001 Author, All Rights Reserved.">
<link rev="copyright" href="
http://domain/copyright.html ">
<link rev="made" href="mailto:user@domain">
<title>hello, world</title>
<style type="text/css" media="all">
body {background-color:#ffffff;
color:#000000;}
#maintitle {font-size:2em;}
</style>
<script type="text/javascript" defer>
function go(url,time) {
setTimeout("location.href='"+url+"'",time);
}
</script>
</head>
<body onload="go('
http://www.2ch.net/ ',3000)">
<p><h1 id="maintitle" lang="en">hello, world</h1><br>
3秒お待ちいただくと2チャンネルへ移動します。</p>
</body>
</html>
>>57 >>58 一応、Cもできる。
#include <stdio.h>
#define MESSAGE_HELLO "hello, world"
int main ( int argc, char *argv[], char *envp[] ) {
puts(MESSAGE_HELLO);
return 0;
}
#include <windows.h>
#define MESSAGE_HELLO_CAP "hello, world"
#define MESSAGE_HELLO "hello, world on Microsoft Windows"
INT WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPTSTR lpCmdLine , int nCmdShow ) {
MessageBox(NULL,MESSAGE_HELLO,MESSAGE_HELLO_CAP,MB_OK);
return 0;
}
また大保してた。鬱だ寝よう。 BODY内修正: <h1 id="maintitle" lang="en">hello, world</h1> <p>3秒お待ちいただくと2チャンネルへ移動します。</p>
後半、#defineよりもリソースへ持っていく方が好みかな...どーでもいいことだが。
64 :
仕様書無しさん :01/09/24 22:18
OpenGLでメイン関数にglVertex3fが7800個ほど 並んでいるソースがあった
>>61 だから、この長さのソースで
文字列とかdefineするな。
それだったら、潔く
defineやメッセージを
ヘッダへ追い出せ。
program helohelo(input,output); var begin writeln('Hello,World!'); end.
>>64 さすがにそれはプリコンパイラで自動生成だろうな
まったく関係ない話題で長引いて大変申し訳ありませんが。
>>65 一瞬message.hにしようか迷ったけど、短いので分けても無駄と思った。
>>63 これも迷ったけど、やはり主処理より長くなってしまうのでやめた。
69 :
仕様書無しさん :01/09/26 22:19
新人の子が作ったソースでこんなものがありました。 時刻の文字列を、簡単な法則で数値に変換後、DBに登録するという処理。 例: 00:00→0 00:30→1 01:00→2 01:30→3 (以下略) 彼女の作ったソース(Java) if (inputdate.equals("00:00")){ daynum = 0; } else if (inputdate.equals("00:30")){ daynum = 1; } else if (inputdate.equals("01:00")){ daynum = 2; } else if (inputdate.equals("01:30")){ daynum = 3; }...(以下略 23:50まで続く) しかもバグがあった。(時刻の文字列をコピペミスっていた) バグがなけりゃ気づかなかった。 こんなロジック作ったら、全時刻テストしなきゃじゃん!! ロジック考えろよっ。 そんな彼女は力技の単調作業大好きです。 なんで新人はif文大好きなんでしょうか?
>>69 ここら辺はコツの部分なので、
新人なら、手取り腰取り教えてあげればよいかと。
71 :
仕様書無しさん :01/09/26 22:38
>>69 俺が最初にプログラム組んだときも、2行に1行はIF文だった。
わかりやすくて簡単でためになるソースをいくつか与えて、お手本にさせると良いと思われます。
まあ、「この会社をやめようと思ったソース」ではないけど。 腰取りね。(w
腰を取って女の子が会社辞めなくてよかったね♪ ウツダシノウ…
74 :
仕様書無しさん :01/09/26 23:43
>>69 漏れは解りやすいから、if文好きだけど。 じゃあ模範的解答きぼーん。
>>69 って言うか、date型でdbに入れろYO!
77 :
仕様書無しさん :01/09/26 23:50
>>75 if (inputdate.equals("00:00")){
daynum = 0;
} else if (inputdate.equals("00:30")){
daynum = 30;
} else if (inputdate.equals("01:00")){
daynum = 100;
} else if (inputdate.equals("01:30")){
daynum = 130;
}...(以下略 23:50まで続く)
trueDaynum = daynum/30; //はぁ
78 :
仕様書無しさん :01/09/27 00:01
>>77 なんで文字列をif文で変換するんだよ。
そんなの":"を文字列から削除して、
atoiで数値にしろ。
オマエDQNか?
80 :
仕様書無しさん :01/09/27 00:08
81 :
仕様書無しさん :01/09/27 00:12
>>77 130/30 = 3 になってないぞ(藁
82 :
仕様書無しさん :01/09/27 00:15
83 :
仕様書無しさん :01/09/27 00:22
>>76 ソースコードじゃないが、主要なデータがことごとく varchar ってデータベースを
見たことあるな。日時も全部 varchar で、しかもテーブルによって書式が違うの。
netanimajires , kakkowarui
78==84?
まあ模範的ロジックはどうでもいいが、
if文コツコツ書いてあったのが面白かったわけで…。(しかもバグあり)
>>73 腰は取ってないが、もう彼女は辞めちゃいました。(w
その子の話 その2
朝から夕方ぐらいまでソース保存もせずに作業していたら、
PCがフリーズして1日の作業があぼーん。
その翌日から彼女のディスプレイには、「セーブ」と書かれた付箋紙がありました。
また何日かしたら今度は、マシンが壊れたらしくローカルに保存してあったソースがあぼーん。
ネットワークにバックアップくらいしているかと思いきやなんにもしていない。
翌日には「バックアップ」と書いた付箋紙も追加されてました。
ソースコードの話じゃなくてごめん。
ソース保存しないとコンパイルできなくない?一回もしてなかったの?
88 :
仕様書無しさん :01/09/27 03:36
//8/29 今日もほか弁(280円) ↑こんな日記を見つけた時。
90 :
仕様書無しさん :01/09/27 20:41
#define TABLE_NAME_1 "emp" #define TABLE_NAME_2 "dept" かえってわかりにくくなってるだろうが!
このスレ大好き
92 :
仕様書無しさん :01/09/27 21:56
93 :
仕様書無しさん :01/09/27 22:56
>>90 似たようなもの
#define CODE_00 0x10
#define CODE_01 0x01
.
.
#define CODE_FF 0xff
なんで誰も何も言わなかったか。
そのヘッダ作ったのが上司だったもので。
これが理由ではありませんが、もう数年前にやめてます。
94 :
仕様書無しさん :01/09/27 22:57
すまん、#define CODE_00 0x00 ね。鬱氏
95 :
仕様書無しさん :01/09/27 23:02
そうゆう意味では俺も相当変な#defineの使いかたしてるな。 ここに書かれる日も遠くないか…
>>87 まぁ、VBはセーブしなくても実行、コンパイルは出来なくもないが、
そんな恐ろしいマネはしたくはない(w
#その程度の人だったっていう解釈もあるけど(w
97 :
仕様書無しさん :01/09/27 23:21
まぁ、1日は多すぎるが、2~3時間なら昔からPGやってたならよくある体験談だよな。 そういう時代を経たからこそ「こまめにセーブ」「PC以外にバックアップ」が当たり前という認識を持てるようになったわけで。
うんうん。VBかOffice系のVBAだったと思う。 俺がよくやった過ちは、 ネットワーク上のファイルを削除しちまったらごみ箱になかったこと。
99 :
仕様書無しさん :01/09/27 23:50
if ( xx == 0 ) { ....................... /* 仕様書参照 */ } else { .................... /* 仕様書参照 */ } kansuu( xx ); /* 変更履歴参照 */ ちったあ説明書け!
100 :
仕様書無しさん :01/09/28 00:05
>>98 ブリーフケースで同期していて、ノートで消したら全部消えたってのがあったな。
101 :
仕様書無しさん :01/09/28 22:58
102 :
仕様書無しさん :01/09/28 23:19
<input type="submit" name="MaeB" value="前へ"> <input type="submit" name="TugiB" value="次へ"> さすがにどうか思ったぞこれは。
103 :
仕様書無しさん :01/09/29 00:17
int *p; ... p = (int *)(((unsigned int)p) + sizeof(int)); p++; で済むんですけど…。
スレ違いかもしれないけど、、、 皆、本気で仕事に取り組んでいるかい? そもそも、仕事に本気で取り組むってのはおかしいのかい? いいかげんな設計に、いいかげんなコーディング。 例外で落ちても気にもとめない。 そんな連中に囲まれて1年。 仕事のプログラミングに本気を出すのが馬鹿みたいになってきた。 このスレを見ていると、どこに行っても、駄目な奴は沢山いるんだ。 なぁ、みんな、もっとマジメにやろうよ。 こんなこというのは変かい?
105 :
仕様書無しさん :01/09/29 00:27
>>103 普通にインクリメントできない場合でも
(int *)((char *)p + sizeof(int))
って書かない?
一応、ポインタと変数は区別したほうがいいと思う。
106 :
仕様書無しさん :01/09/29 00:29
>>104 他人の仕事は気に入らないもの。
独立して一人で開発すればいいんじゃない。
本当に良いシステムは、共同作業からは生まれない。
>>104 そういう場合は転職、転職(w
世の中にはスゴイ人達がたくさんいるよ。
108 :
仕様書無しさん :01/09/29 00:41
109 :
仕様書無しさん :01/09/29 01:15
>>105 > 一応、ポインタと変数は区別したほうがいいと思う。
あなた Cで組むのやめて 逝ってくだちい
/ ̄ ̄ ̄ ̄ ̄ ,__ | 此処もひさしぶりだ....。 / ./\ \_____ / ./( ・ ).\ o〇 ヾ!;;;::iii|//" /_____/ .(´ー`) ,\ ∧∧ |;;;;::iii|/゙  ̄|| || || ||. |っ¢..|| ̄ (,, ) ナムナム |;;;;::iii| || || || ||./,,, |ゝ iii~ ⊂ ヾwwwjjrjww!;;;;::iii|jwjjrjww〃 | ̄ ̄ ̄|~~凸( ̄)凸 .( ,,)~ wjwjjrj从jwwjwjjrj从jr
111 :
仕様書無しさん :01/09/29 01:19
>>105 これって、環境によって結果が変わるような気がする。
つか、意図がわからない。
>>109 pointer 64bit, int 32bit の環境だと 103 のコードは間違いなくハマるぞ。
113 :
仕様書無しさん :01/09/29 02:20
>>93 さらに似た様なもの
「コーディング規約:ソースファイル中にマジックナンバー(数字)を
置くことを禁ずる。数値はかならずマクロ定義すること」
そして出来たもの。
suba.h
/* サブシステムAのヘッダ */
#define SUBA_NULL 0
#define SUBA_ZERO 0
#define SUBA_FALSE 0
#define SUBA_TRUE 1
#define SUBA_1 1
#define SUBA_ONE 1
#define SUBA_ICHI 1
#define SUBA_2 2
#define SUBA_3 3
/* 以下、SUBA_10までは連番で続いて… */
#define SUBA_17 17 /* hogehogeで使用する定数 */
#define SUBA_20 20 /* hemohemoの仕様変更により追加 */
#define SUBA_26 26 /* fugafugaで使用する定数 */
/* 等々、使用する数値がバラバラと続き… */
#define SUBA_100 0x64
#define SUBA_FF 0xFF
#define SUBA_FFFF 0xFFFF
subb.h
/* サブシステムBのヘッダ */
#define SUBB_NULL 0
#define SUBB_ZERO 0
/* 以下同様… */
と、これが30くらいあるサブシステム毎に…
115 :
仕様書無しさん :01/09/29 03:07
>>114 マジックナンバーという言葉が何を意味してるのか全然理解していない人がよくやってるね、それ。
規約書いた人もそういう意味に取られるとは思わなかったろう。
日本語って、難しいね。
サブAか、スバかとおもた(w しかし、無駄な労力だな。
117 :
仕様書無しさん :01/09/29 03:27
>114 ICHIの次が2なのに萌え
119 :
ミ(゚◎゚)ミ ◆c2uMaIpA :01/09/29 11:00
>>118 「1と書くとIと読み間違うからだ」なんて理由が返ってくることを予想。
>119 ついでに、ONEとICHIの違いも予想してみて欲しいな。馬鹿な俺にはサパリ分からん
そして、SUBA_ZEROがあってSUBA_0が無い理由もしりたいな。
>>121 残業中にSUBA_0というのを見ると、スバオーと読み間違い、
急にスパ王が食いたくなってコンビニに逝ってしまうから。
123 :
仕様書無しさん :01/09/29 18:19
subb.hにsuba.hと同じ定義をするところがイタイ。せめて名前を共通にしてインクールドしてくれ。
124 :
DQNPG :01/09/29 20:29
>>115 っていうか「マジックナンバー」って何よ?
教えてクンでスマソ
>>124 意味を持つ数字。
意味があるなら数字の変わりに「意味に対応する名前の定数」を定義して、
そっちを使え、というのがソフトウェア工学の教え。
これにより、次の利点が得られる。
- ソフトウェアが仕様変更に強くなる
数字を埋め込んであると変更箇所が散らばる(全部の数字を書き換える必要がある)が、
定数定義なら一箇所の変更で済む
- コードの可読性が向上する
if (cmd == 3)
/* do something */;
if (cmd == CMD_IGNORE)
/* do something */;
下のほうが読みやすいでしょ?
ソフトウェア工学関連の本を読むことを強く勧める。下のスレの 14 にいろいろ挙がってる
が、とりあえず「プログラミング作法」からどうぞ。
推薦図書/必読書のためのスレッド3
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=1000542653
126 :
仕様書無しさん :01/09/29 21:32
constの方が良かったんじゃなかったっけ。
129 :
>>105 :01/09/29 23:41
確かにポインタのサイズは普通に宣言するとintサイズになるんだけど、16ビットと32ビット混在環境だったし、16ビットから32ビットに変更するときそういう表記すると問題になると思って。
>>105 に反論してる人はnearとかfar使ってた?
あと、「ポインタに変数を代入しています」とかいうワーニング出ません?
キャストしてるのに出ないよね。
132 :
仕様書無しさん :01/09/30 12:09
>>126 Cだと
const int NUM = 10;
char buf[NUM];
とかやるとエラーになるから。
こういう事したい時はenum使わないと出来なかった。
(エラーにならんコンパイラもあるけど)
それにconstの認知度が低かったせいもあるんじゃないかな。
俺だけかも知れんけど、まあ昔の話だから。
133 :
♯6411 :01/09/30 13:59
>>129 っていうか小細工不要のlvalueを
わざわざキャストしてるのがカコワルイと思わないか?
Cでは、intとポインタのストレージサイズが
違ってもいいことになってるぞ。
ってか漏れはmsdos大嫌いで、farナニソレ? な少年だった。
135 :
仕様書無しさん :01/10/02 04:18
>>133 int の配列が前提ならそもそもポインタ+増加バイト数なんてしないって。
可変長のデータを読み出すから・・・
Windows3.1でもfarは必要だったよ。
136 :
仕様書無しさん :01/10/07 15:40
あげてみる
再テストが面倒だからって、テストデータ、ねつ造するのはやめよう。
138 :
仕様書無しさん :01/10/18 15:38
memset((void *)hoge, みたいなヴォイドポインタのキャストをしているソースを みたとき。この人らは、なんでvoid *というのがあるのか 意味わかってんだろーか、不安になった。 っつーか、警告でたら何でもキャストをする習慣が ついているんだろうな
>>138 べつに、そういうのはいいんじゃないかな?
結合法則は知ってるけど、結構余剰に括弧付けたりするし、
コンパイル時に完全に消滅するのなら問題ないと思ってる。
140 :
仕様書無しさん :01/10/18 23:50
ソースじゃないんだけど、今の職場 memset memmove 使ったら怒られる。 memsetは使わず、ループで初期化しろ! memmoveじゃなくてmemcpyを使え! マジです。ネタじゃない。なんでも使っている某社のコンパイラに バグがあるのが原因だそうですが、それでも・・・・
>>140 コンパイラのバグなら仕方ないじゃん。
ASMで書かせろって事?
142 :
仕様書無しさん :01/10/18 23:58
>>139 いや、ほかにも変なキャストありまくりだから
ダメです。っつうか、
int hoge(int x)
{
という記述で「?」とかされたのよん。
なんで、
int hoge(x)
int x;
{
でないの、みたいな。
こいつらK&Rの1版で停止しているのか。
143 :
仕様書無しさん :01/10/19 00:15
>>140 自分でmemset,memmoveを実装すればいいじゃん。
ていうか、ライブラリにバグがある場合は
ふつーそうしないか。
144 :
♯6411 :01/10/19 00:40
>>140 memmoveが使えない場面で
memcpy使ってどーすんだよ?
って声が聞こえてくる…
うちとこは、コンパイラの用意してくれてる関数は、 すべて一箇所でラップして使ってる。 勝手に使うとチェックされる。
あ、だから辞めようと思ったわけじゃないっす。 memsetとかの話を聞いて思っただけ。
>>143 そー言ったら「昔それでうまくいかなかったからやってはいけないことになっている」
と真顔で言われた。これだから、工場の人間は向上心がないっつーか・・・
駄洒落のつもりではない
148 :
仕様書無しさん :01/10/19 10:13
バグはコンパイラとライブラリのどちらにあるの?
149 :
仕様書無しさん :01/10/19 10:45
>>147 工場に勤めているから、ってわけじゃないだろう。
向上心がないのは
>>148 人にあり、ってことだろう(藁
150 :
仕様書無しさん :01/10/19 10:48
MyMemSetとかMyMemMove とかいう具合に名前を変えて 自分版を実装するってのはどうよ?
151 :
仕様書無しさん :01/10/19 10:50
>>145 組み込み系は、それは常識ですね
標準のライブラリでスタックどか食いしてたり、
printfみたいに、どこに出力するんやー、とか
malloc使うなゴルァって場合があるし
152 :
仕様書無しさん :01/10/19 22:56
>>149 同意ではあるが、漏れが派遣された工場の人間も
確かに向上心なかったな。「今まで5年これでやっているから」とか
すぐ言い訳をする。
構造体3つ掘り下げて変数を参照するのを延々と書いてて、1行が80文字折り返しで
4行とかなっているから、最後の構造体のアドレスをポインタ参照するように変えたら
「どこを指しているのかわかりにくくなるから、余計なことはしないで下さい」と叱られたこともあるな・・・
ぱなそに、なんて口が裂けても言えない。
154 :
仕様書無しさん :01/10/19 23:18
>>152 オレの知っている工場だったりして
豊橋にないかい?(藁
>>154 豊橋は出張で行ったことはあるが、残念ながら門m
157 :
仕様書無しさん :01/10/20 00:44
VBでなんなんだが、 Public Function Hoge() if 正常 then err.raise HogeHoge elseIf 異常 then err.raise HogeHoge + 1 exit function select case err.number case HogeHoge '正常終了 何もしない。 case HogeHoge + 1 MsgBox("エラーだ!ゴルァ") End Function おいおい、If文で判定できるものをわざわざerr.raiseするなよ・・・・ しかも、正常終了するときは、何もしないし。 これってgoto文だよな・・・・ しかも、関数の中でMsgBox使うし。判定関数として使えないだろ・・・・
158 :
仕様書無しさん :01/10/20 01:23
>>155 ああ、門*か、わかった。
あそこは家畜の集まりだな(藁
159 :
仕様書無しさん :01/10/20 01:33
static const char XXX_20001[] = "20001"; エラーコードの切り方がこんな感じ。あんま意味ない。
>157 漏れもVBで似たようなのをメンテさせられたことがある。 しかもそのシステムはなおかつ同じ処理が全く関数化されずに すべてべた書きだった。30行くらいの同じ処理が平気で10個くらいあっ た。しかも動いているシステムのくせにバグ有りまくり。クライアントが 3年も気がつかなかったのでよかったが。
161 :
仕様書無しさん :01/10/20 02:19
>>160 そうそう。
こういうソース書くヤツって、関数化しないよな。
全部ベタ書き。
MsgBoxは書きたい所に、全部MsgBox()って書くし。
あんた、エラートラップしてくれるのはいいが、発生したときに、
全エラートラップにブレークポイント張るしかないじゃん・・・・
あと、ありがちなのは、フォームモジュールにソースいっぱいかくヤツね。
俺なら、関数化するところを全部フォームにベタ書きしやがる。
フォーム名とコントロール名が異なった別プロジェクトに移植できないじゃん・・・・
最近、VB厨房って言葉が身に染みてわかったよ。
162 :
仕様書無しさん :01/10/20 02:22
C言語でもいるよ、そのパターン。 いや、むしろ多いよな、エディタで せっせと同じ箇所をコピー&ペースト
>>162 コピペはダメだね。
バグもコピーしてしまう。
できるだけ関数化、若しくはクラスにしてしまうのが望ましいよね。
でも、これうちの会社で技術力があると評価されてる人間の作品なんだよね。(藁
しかし、CやC++を経験してVBをやるならまだいいが、VB オンリーはイタイな。
型チェックとか、エラー処理とか、考えが甘すぎ。
引数無しの戻り値無しの関数ばかり作りやがる。
>>163 >引数無しの戻り値無しの関数
それはもう関数とは呼べないと思われ。(w
入力と出力が決めうちじゃ役にたたんな。
165 :
仕様書無しさん :01/10/20 03:00
>>164 俺もそう思う。
あと、鬱なのが
x=1
y=1の時に、
x+y=11になったことが有った。(藁
で、宣言見たら、Stringで宣言してあったし。
Variantとか、Collectionとかでも同じよーなことが起こる。
初心者がこんなもの使う必要ない!
166 :
仕様書無しさん :01/10/20 03:29
#define begin { #define end }
167 :
仕様書無しさん :01/10/20 11:17
>>160 VBで嫌な思い出といえば
Dim a1, a2, a3, a4, a5
Dim b1, b2, b3, b4, b5
Private sub main()
a1 = hoge()
if a1 = 0 then
goto 100
elseif a1 = 1 then
goto 200
elseif a1 = 2 then
goto 300
elseif a1 = 3 then
goto 400
elseif a1 = 4 then
goto 500
else
goto 900
end if
100:
'処理1
goto 1000
200:
'処理2
goto 1000
300:
'処理3
goto 1000
400:
'処理4
goto 1000
500:
'処理5
goto 1000
900:
goto 1000
1000:
exit sub
End Sub
というソースを見たことがある
168 :
仕様書無しさん :01/10/21 00:01
169 :
仕様書無しさん :01/10/21 00:10
>>167 嫌すぎですな。
あと、ガイシュツだが、VBでフォーム上のコントロール名を
直接参照するプログラマー多いよね。
移植するとき面倒だ!
>>167 これってgoto禁止の典型的なコードだよね。
ウザイけどこのレベルならまだ許せる。
>>170 1画面にmain1つずつしかなくても許せるか?
全20画面のあるアプリで、本物はbasにグローバル変数が200個ぐらいあった。
a1とかb1とかそんなのばっかりで。構造体すら使ってなかった。。
>>168 C言語と勘違いしてないか?
>>171 >全20画面のあるアプリで、本物はbasにグローバル変数が200個ぐらいあった。
>a1とかb1とかそんなのばっかりで。構造体すら使ってなかった。。
これはちょっとね(^^;)
でも、もっとも許せないのは理解不能なコードだね。
正確に言うとコーダの意図が伝わってこないコード。
173 :
仕様書無しさん :01/10/21 01:55
>>172 関数名とか変数名と、目的が全く違ってるコードとかあるよね。
こういうとこから、気を使ってもらいたいものだ。
174 :
仕様書無しさん :01/10/21 19:41
「ありえないエラーが発生しました」というメッセージを見たときには笑い死にそう になった。これってありがち?
175 :
仕様書無しさん :01/10/21 20:48
>>167 なんかなつかしい。
まだオブジェクト志向どころか構造化プログラミングという言葉が
なかった頃、こんなコーディングをしがちだった。
もっとも、その頃はラベルもローカル変数も使えなかったんだけど。
>>175 basicでもgosubは使えるだろ…。それよりも昔の話?
でも12年前でもgosub使えないbasicなんて無かったような。
なお、あのソース書いた人は自称VBマスターでした(ww
マスターだからこそあのソースを管理できるんじゃないかな(w
178 :
仕様書無しさん :01/10/21 23:22
>>170 >全20画面のあるアプリで、本物はbasにグローバル変数が200個ぐらいあった。
>a1とかb1とかそんなのばっかりで。構造体すら使ってなかった。。
グローバル変数定義だけ見ようとしたら(関数だけ見るヤツ、名前知らん。)、
スクロールバーがすごく細くなった。(w
そのなかでも、
Public a As Integer
Public b As Integer
Public c As Integer
Public d As Integer
Public i As Integer
は異彩を放っていた。(w
179 :
仕様書無しさん :01/10/21 23:29
integerってのもいいなぁ。>178
180 :
仕様書無しさん :01/10/21 23:35
後輩のプログラムを見た。 for(int i=0;i<3;i++){ if( i==1){ func1(); } else if (i==2){ func2(); } else if (i==3){ func3(); } } 「オマエ馬鹿じゃねーのか???何故ループで廻すよ?」 と聞くと 「これらはリストボックスの項目名(つまり一番上の行)を表示する処理なんです。 リストボックスは項目が3つあるから、3つ廻さないとどうしてもいけないんです」 で、オレが func1(); func2(); func3(); 「これで同じ処理だろが。無駄なコーディングすればそれだけバグが増えるって 何度言えば判るんだ」 と言ったら 「へぇ……これがさっきのプログラムと全く同じ処理をするんですかね」 とか言いやがる。 実際動かして確認。当然同じ動きをした。 「わかんねぇなぁ」 と後輩は言いながら、別に気にする事も無いようにド下手プログラムを書き続けた。 こいつどうしようかね。3年目なんだが。
181 :
仕様書無しさん :01/10/21 23:38
>>180 そのネタ、前スレでガイシュツではあるけどね。
いや、煽ってるんじゃなくて、そういうドキュソコードは同時多発で
発生するのだなと、思ったもので。
182 :
仕様書無しさん :01/10/21 23:38
183 :
仕様書無しさん :01/10/22 00:32
>>180 マジでいるのか?
どう考えればループになるのか謎。
>>180 そんな奴に開発は無理だろ。テストでもやらせとけよ。
186 :
仕様書無しさん :01/10/22 04:15
>>184 テスト開始!
184 「おい、オマエなにやってんだ」
「テストですよー」
184 「なんで毎回1からやるんだ」
「テストですからー」
184 「1,2,3,4・・・と順順にやっていけよ!」
「なんでですかー? 毎回1からやらないと不安定でしょー?」
184 「1,2,3,4それぞれ別の画面じゃねえか!」
「別の画面でも最初からやらないといけないでしょー?」
184 「あのなあ、上から順にやっていけばいいんだよ! ほら!」
「わー、ほんとだ。へえー、ふしぎふしぎ。なんでちゃんといくんでしょうね」
ある意味、天才だよな。
>>180 の後輩
なんか詭弁をまくしたてられたらダマされてしまいそうだ。
188 :
仕様書無しさん :01/10/22 04:21
>>184 テスト開始!
184 「おい、オマエなにやってんだ」
「テストですよー」
184 「なんで1ステップずつやるんだ」
「テストですからー」
184 「とりあえず一通り回してみろよ」
「なんでですかー? ひとつずつコード確認しないとわからないでしょー?」
184 「ろくにコーディングも出来ないからデバッグさせてんじゃねえか!」
「それじゃバグ出たときにどこが変かわかんないでしょ~?」
184 「あのなあ、ブレイクポイント入れれば良いんだよ、ほら!」
「わー、ほんとだ。へえー、ふしぎふしぎ。途中で勝手にとまるんですね~」
189 :
通りすがり :01/10/22 05:14
>>180 ちょっとしたツッコミだが後輩のソースでは
func3();は通らない気が・・・
190 :
仕様書無しさん :01/10/22 05:17
>無駄なコーディングすればそれだけバグが増える の証明となった様子(笑)
>>189 180の先輩も180には手を焼いてると思われ
193 :
仕様書無しさん :01/10/22 16:32
後輩のプログラムを見て威張っている俺の後輩がいた。 ↑後輩B ↑後輩A としよう。 for(int i=0;i<3;i++){ if( i==1){ func1(); } else if (i==2){ func2(); } else if (i==3){ func3(); } } 「オマエ馬鹿じゃねーのか???何故ループで廻すよ?」 と言っていた。すると後輩Bは 「これらはリストボックスの項目名(つまり一番上の行)を表示する処理なんです。 リストボックスは項目が3つあるから、3つ廻さないとどうしてもいけないんです」 で、後輩Aが func1(); func2(); func3(); 「これで同じ処理だろが。無駄なコーディングすればそれだけバグが増えるって 何度言えば判るんだ」 と自慢気に言い放ったら 「へぇ……これがさっきのプログラムと全く同じ処理をするんですかね」 と後輩Bは返答していた。 「実際動かしてやるから確認しろ! ・・・ほら、同じ動きをした。 当然だろ!」 後輩Aは得意気だ。 「わかんねぇなぁ」 と後輩Bは言いながら、別に気にする事も無いようにド下手プログラムを書き続けていた。 後輩A「お前どうしようもないね。本当に3年目なのかぁ?」 おれ 「っていうか、本当に同じ動きをしたのか? 後輩Bの処理では func3() は通らないぞ」 後輩A「・・・・・・・ええっ。。ああっ!? あれえ?」 後輩B「わあ、ほんとだー」 おれ 「お前ら本当にどうしようもないな。マジでプロなのかぁ?」
プロかどうかを疑問に思うより、人としての知性を持ち合わせているか どうかを心配してやれ。
195 :
みちゅ ◆zzfy/JR2 :01/10/22 22:36
>193 こういう人たちって、普段はどんな仕事をしているのですか?
197 :
みちゅ ◆zzfy/JR2 :01/10/22 22:55
>>193 面白いじゃん☆
ほのぼのしてていいなりね(*^-^*)
198 :
仕様書無しさん :01/10/22 22:57
>>196 普段プログラマーしてても、こーゆープログラマー以前のとこ
できない人って少数ながらいるよ。
プログラマー以前のこと だ。 おれ日本語できてねーや。死んでるくる
200 :
仕様書無しさん :01/10/23 00:55
ガイシュツでスマソが、 MsgBox("作成したデータが破棄されますがよろしいですか",vbOKOnly)
201 :
仕様書無しさん :01/10/23 00:59
>>193 でもさ、納期が近いときに、
工数も考えるとついつい無駄な処理が多くなっちゃうんだよね。
自分のホームページできれいなプログラムをかけ とか主張しているけど、そいつ自身が会社で 書いたソースは、わけわからん。 おまけにキれて会社にぱったり来ないから 質問すらできんし。
void main(){ }
204 :
仕様書無しさん :01/10/23 01:28
あのーこれ動かないんですけど。 mein() { おまえ、mainというスペルも知らないんか?
独逸語…
ドイッチュだとマインだわな<mein
208 :
仕様書無しさん :01/10/23 12:24
209 :
仕様書無しさん :01/10/23 12:29
>>199 「死んでるくる 」になってるのはわざとか?
210 :
ななし突撃兵 :01/10/23 14:57
長文失礼。 午前中、客先出張中の課長からTELが入ってきた。 課長:「AAA納のBBB、お前が治めたCCCのソースを流用しているんだが、XXXとYYYの機能が動かなねぇ! 貴様、作ったときちゃんとテストしたのか!ゴラァ!?」 私:「CCCは退職したA君が担当してたんで知りません。面倒見てたの課長でしょ?」 課長:「貴様は何時も人のせいだな。そのCCCはお前が作ったDDDを流用してんだよ。今、顧客から怒られてんだよ。何とかしろよゴラァ!」 私:「あぁ、それならXXX、YYY機能は動きません。DDDでは未使用機能ですから。この件は以前から何度も言ってるじゃないですか。」 課長:「そんなの覚えてね~よ! うだうだ逝ってねーで自分で作ったものは責任持って動かせ! ゴラァ!」 私:「……それ、課長がコーディングしたEEEサイトの流用ソースです…」 課長:「他人のソースを流用した時点で、流用した人間が責任持つ責任があるに決まってんだろ、ゴラァ!」 私:「(ぶちっ)……つーことは、今はアンタの責任だな!」 課長:「…(がちゃん:TEL切断)」 一応気になったんで、ソース見てみました。 if( a != b ) ; // 処理条件不一致か { c = x ; // 異常処理 } 3年前から約束されていた不具合にふと気づく秋。 つか、いくら流用とは言え、必要機能レベルの試験ぐらいしてから出荷しろよ。 ま、お互い駄目駄目って事だね^^; さて、課長に教えてやるべきかどうか?(w
つーか、日本語をもうちょっとどーにかすれ。
>>210 それはナニか、if ()に続く{ ... }がif ()の条件の真偽とは無関係に
常に実行されるってことか?
>>210 >さて、課長に教えてやるべきかどうか?(w
遊びでやってるんじゃないんだからさ・・・。
>211 読み返してみると変ですね^^; 一気に書いたので、結構おかしな所が…。 ハンドルも別の板のだし。 以降、気をつけます。 >212 そうです。 最初にコーディングされた3年前から、ずっと潜んでました。 >213 仰る通りですね。 既に現地で稼動確認してもらいました。
>210 大人の対応だね。特に最後のセリフ。
216 :
仕様書無しさん :01/10/23 19:16
辞めようとは思わなかったが、辞めた人のプロジェクトを引き継いでソースを追ってた時、 コメントに某メーカーのコンサルに対するのろいの言葉が記載されているのを発見した 事がある。 面白そうだったので、コメント部分を抽出するプログラムを書いて全ソースから抽出された。 そしたらでてくるでてくる。 そいつのドキュソぶりが日記じゃないかと思うくらい事細かにでてきた。 しかもあとで一括消去や抽出できるようにごていねいに規則性まであった。 でもそのプロジェクトではそれがどんなコードよりも役にたった(泣
泣ける話やね...
218 :
仕様書無しさん :01/10/23 23:01
>>174 >>「ありえないエラーが発生しました」というメッセージを見たときには笑い死にそう
激ワロタよ!!
3分ぐらい笑い転げてたよ(w
俺もアプリにもそのメセジ入れよかな(激笑
219 :
仕様書無しさん :01/10/24 00:25
ソースは奇麗。 使い勝手は最高。 でもダイアログにはアニメのヒロインの ビットマップが貼り付いている。 いくら社内ツールでも使うの嫌だな。
>>219 禿しく同意! 毛がボロボロ抜けるほど同意!
複数人で使うマシンのデフォルトの壁紙をアニメ絵にすんのはヤメテクレ!
マシン名をアニメヒロインの名前にすんのも!
ポスターもグッズも言語道断(客来るのに)!
しかもお前俺の上司だろうが(鬱
人の趣味だし、とやかくいうことはしないんだけど、 単純に、嫌いだなあ。
222 :
仕様書無しさん :01/10/24 01:23
自分と異質なものも、取り入れてみようよ。
223 :
仕様書無しさん :01/10/24 01:27
そういや、前の上司は「壁紙は最低限必要なものか、WINDOWS付属のもの以外は認めない」といって 奥さんとのツーショット写真を壁紙に堂々と使ってたな(w
>>221 やぁ、ひさしぶり
トリップにしないのは貴方の勝手だし、とやかく言うことはしないんだけど、
何となくもにょもにょする
いかん、スレ違いのかほりが。
>>221 「二次元系は単純に嫌い」省略しすぎでスマソ
>>224 ??? 「♯」のことをいってるのか?
まーいーや、もにょもにょしてくれや
220
>>222 マシン名がアニメなのは別にあんまり気にしてない(でも僕の使うマシンくらいはまともな名前が欲しかった。manaって誰?)。
でも、他人に迷惑かけるのはやめて欲しいよう。
227 :
仕様書無しさん :01/10/24 11:38
社内ツールでエラーがおみくじ形式になっていた。 しかもへヴィなエラーほど大吉になっていた。 嬉しいのかエラー?>作った奴
230 :
仕様書無しさん :01/10/25 12:35
仕様書を元に開発を始めて2週間が過ぎた。 状況報告ミーティングにて 俺(契約社員) 「ところで、この共通変数仕様に基づいた変数の実体は どこに切られてるんですか? 今は変数が用意されればすぐ組みこめるようにしてますが…」 A「ああ、それ俺のところで用意しているよ」 B「えっ、俺も用意したよ」 C「うそ、俺もそれ宣言しているよ」 D「マジー? 俺も用意してしまった」 俺「(・・・こいつら、共通変数の”共通”の意味合いわかっとるんかい…)」 ABCD「どうしよう」 俺「(まあ、仕様どおりにやってるんなら宣言場所変更してちょっと修正すればいいだけだし…)」 俺「共通の意味ないじゃないですか。一箇所で実体宣言しましょうよ。 それぞれちょっと修正すれば済みますよね。何なら私がまとめてもいいですよ…」 Aのソース。変数名勝手に変えてるじゃん Bのソース。足りない変数あるじゃん Cのソース。勝手に構造体増やしてまとめちゃってるじゃん Dのソース。型変更するなよボケ やる気なくなった・・・・
>>230 それよりも「共通変数仕様」なるヘンテコリンなものを拒絶せよ。
232 :
仕様書無しさん :01/10/27 16:25
age
233 :
仕様書無しさん :01/10/27 18:30
234 :
仕様書無しさん :01/10/27 23:45
「共通変数」 通じないこともないが、どの業界よ こーゆー用語使うのは?
>>235 結構普通に使ってるけど。
複数で開発してる時。
>>236 でもそれはメインシステムで変数を設定し、
サブシステムでは参照のみ可であればいいんだけど、
所構わず共通変数をいぢくりまわすプログラムとなると…
238 :
仕様書無しさん :01/10/28 00:55
COBOLER用語じゃねえのか?
239 :
仕様書無しさん :01/10/28 01:25
グローバル変数の使い方がどーこー以前に、 グローバル変数が登場した時点でやめようと思うぞ。
グローバル変数ゼロってのは難しいと思うぞ。
241 :
仕様書無しさん :01/10/28 01:51
せめてファイルスコープに納めてアクセス関数を提供してくれ。
242 :
仕様書無しさん :01/10/28 01:53
>>239 それはものによるんじゃないか?goto文と同じで、
きちんと使えば良いだけのことだと思うが。
243 :
仕様書無しさん :01/10/28 02:48
>>242 >きちんと使えば良いだけのことだと思うが。
それは、そーなんだが、きちんと使わない人が多いんだって。
やはり、アクセス関数を通して操作するのが最も無難だと思うよ。
244 :
仕様書無しさん :01/10/28 13:18
>>242 信じられん。こんな考えの持ち主がいるなんて。
メインの言語はやはりCOBOLか?
>>244 getopt() で使う optind, optarg とか、errno もグローバル変数だから使用禁止なの?
246 :
グローバル変数 :01/10/28 13:52
複雑になりすぎた現システムを、一部仕様変更して、 一から作り直すことになりました。万歳!! コーディング規約は私が全部作って提出するつもりだが 「反対されたらコーディングはしません」と主張する。 といっても、ごく当たり前のことを書くだけなんですが。 しかし、ローカル変数使えば済むところをわざわざ グローバル変数にするっていう発想はやめてほしい。 COBOLのノリでCを使うのはホントにやめて。 コピペの嵐なんで「関数化しましょう」と言うと、 「見通しが悪くなるから」 ・・・絶句。 2年目の私が10年選手に一から構造化プログラミングに ついて教えなければいけないのでしょうか? 業界に入る前は「みんなすごい人ばかりでついていけるかなー」 と心配していたのがアホらしい。
247 :
仕様書無しさん :01/10/28 14:13
案外グローバル変数毛嫌い派が多いな よほど業務経験の幅が狭いんだな・・
>>247 グローバル変数がこんがらがったプログラムをメンテナンスさせられて、鬱になった経験者が
多いと思われ。
グローバル変数は適切に使えば問題ないし、ひたすらグローバル変数を避けるとむしろ問題
がこじれるんだが、適切に使わなかったときの惨禍は目を覆うからなぁ。
>>247 適切なグローバル変数は大いに結構。
問題はグローバル変数を正しく理解して使えない
糞どもが多すぎること。
>>247 なんだよ、その「適切なグローバル変数」っつーのは。
適切だと君が思ってるだけでしょ。
s/247/249/
>>250 俺は optind, optarg, errno を例に挙げたが、すべてダメと?
あとは各種動作を決定するために、初期段階で設定するフラグ (たとえば ls コマンドのコマンドライン
オプションを解析して -l なら lflag = 1, -F なら Fflag = 1 などと記録しておいて、あとで参照する)な
ども、グローバルで持たせたほうが管理が楽な例。グローバル変数を避けて構造体か何かにパックし
て渡しても良いけど、煩雑になるだけだし。
>>252 特殊例を持ち出して、一般化されてもなぁ。
今出てる「グローバル変数」は、ある程度大きなシステムの
「インタフェースの代わりとしてのモノ」じゃないか?
244や250は三流プログラマ。教条主義に洗脳された哀れなブタ。
>>254 教条主義も何も、実際にグローバル変数を使うことによって実害が
あるのだから、それを避けるのがプロでしょ。
>>250 少なくとも各自が好きなように書き換えるような
使用方法は、適切とは言えませんね。
場合によってはグローバル変数を使用した方がいい
場合もあるんですよ。場合によっては。
>>255 そんなこと言ってるからお前は三流なんだよ。「場合によっては」
グローバル変数やgoto文を使った方がすっきり書ける場合もある。
「常に使わない」というのは愚者の選択でしかない。
割り込みで非同期に変わる状態変数なんかグローバル以外にやりようがない。 とか言ってみる。
244と250と255は、哀れな三流プログラマということでよいですか?
>>259 いや、PGにアコガレてる厨房って事でひとつ。
Private Sub コマンド45_Click() ↑ Access VBA です。 既出かもしれないけど、つい。。 ※ あと、VBEの[検索]ダイアログで、 日本語の検索が出来ないのは ぼくの環境だけですかね?
262 :
仕様書無しさん :01/10/28 17:17
>>258 趣味プログラマレベルが集まっているから、何のこと
言っているか多分理解できてないと思われ
無視しよ、無視
>>257 だから特殊例を一般論にまで敷衍するなって。
これくらいのこともわかんねーのか(プ
264 :
仕様書無しさん :01/10/28 17:25
またはじまりました。知識対決。 馬鹿が馬鹿を罵倒する、まさに泥仕合。
まぁ、「すっきり書ける」なんて言ってる奴は保守コストなんか 考えたことないんだろうなぁ。 勝手にやれば?ってかんじかな。
>>263 特殊例ではグローバル変数は有用、よって使い方を間違えなければ問題なし、ということで
ファイナルアンサー?
>>266 しつこいね、君も(プ
勝手にやれば?
一人でプログラミングしてるんでしょ?
日本語が通じるかと一縷の望みをかけた俺が馬鹿だった(w
>>262 らじゃ。無視でいきます。
グローバル変数無しでリアルタイム制御とかマルチタスクOSとか書けるもんなら書いて欲しい。 と言ってみるテスト。
>>268 ヴァカ?
>>230 からの話の流れで、
「正しい使い方をすればグローバル変数は有用」
「俺様は常に正しい使い方をしてるのだ」
「使うべきところでグローバル変数を使わない奴はアホ」
なんてことを主張して、いったい何を得ようとしてるんだ?
俺様は天才ってことかな?
271 :
仕様書無しさん :01/10/28 17:37
お前らいい加減にすれや。 ここはVBのグローバル関数を話し合うスレッドじゃねっつーの。
ここはVBのグローバル関数を話し合うスレッドじゃねっつーの。 ここはVBのグローバル関数を話し合うスレッドじゃねっつーの。 ここはVBのグローバル関数を話し合うスレッドじゃねっつーの。 ハハハ
>>271 そうそう。
やりたければスレ立ててそこでやれ。
>>273 つか、誰もVBのグローバル関数なんか話題にしてねえんだけど(w
275 :
仕様書無しさん :01/10/28 17:43
はいはい、人の揚げ足取りはもういいから。 スレ違いの話はいい加減やめてね。
276 :
仕様書無しさん :01/10/28 17:43
>>276 疑似餌です。
餌には食いつかないようにしましょう。
スマソ 折れ、テスト実行中で、ひま・・・
ゴルァーバル変数って何?
275 == 高卒 (^∀^)pupuppu
マジレス。
グローバル変数云々はスレ違いでも何でもない。理由は
>>239 。
グローバル変数の使い道も知らないで、グローバル脱ツーだけで有害と
決めつける厨房と同じ会社にはいたくねえもんなぁ。
284 :
仕様書無しさん :01/10/28 18:05
>>283 俺もそんな規模で開発してる奴とは働きたくないね
285 :
仕様書無しさん :01/10/28 18:10
会社を辞めようと思ったソースコードの話なのに グローバル変数が有用かそうではないのかが何ですれ違いじゃないのよ? 自分たちが勝手に罵りあいにあつくなるのは勝手だけど他の人の事も考えては?
規模の大小とグローバル変数の使い方に関係があると思いこんでる厨房PGは即刻首にするべきだ。
>>285 熱く議論している最中に言っても無駄だ。しばし待て。
>>285 「グローバル変数が使われている」だけで「会社を辞めようと思ったソースコード」
だと主張する馬鹿が一匹いるから。
結局COBOL最高!!!! って事かうんうん
290 :
仕様書無しさん :01/10/28 18:15
>>287 議論なら我慢する気になるけど。ただの罵りあいじゃない?
ここのスレも結構おもしろかったのに最近こういうの多すぎない?
>>290 いやいや、罵ってるのはグローバル変数拒否症の厨房一匹だけだよ。
実例も挙げずに有害だ有害だとさわいでる馬鹿がいなくなれば丸く収まる。
ジサクジエンデシタ!!(・∀・)
>>291 三流厨房プログラマは無視ということでお願いします。
>>291 ,
>>288 >>230 を読んでからもう一度出直せ。
有用なグローバル変数VS有害なグローバル変数という不毛な論争が
やりたいなら別スレで。
>>230 が辞めてやると思うのはわかるけど、
>>239 には納得できない。
こういうのを、
あつものに懲りてなますを吹く
とか言うんじゃなかったっけ?
296 :
仕様書無しさん :01/10/28 22:18
int main(int argc, char **argv) { try { MyApp theApp; theApp.Run(); return 0; } catch (...) { cerr << "ごめん死んだ"; return 1; } }
>>296 そうだよなぁ。SIGSEGV, SIGBUS も捕まえとかないと(違
VCだったのでstd::bad_allocがキャッチできずにあぼーんしてたよ! ハンドラをいちいち登録せないかんのね>VC
400!
301 :
仕様書無しさん :01/10/29 08:01
302 :
仕様書無しさん :01/10/29 15:30
>>263 誰も、一般論に敷衍してなんかいないと思いますが、何か?
で、特殊な状況ではグローバル変数も役に立つってわかってもらえました?
303 :
仕様書無しさん :01/10/29 15:33
>>302 三流厨房プログラマは無視ということでお願いします。
「役に立つ」どころか、グローバル変数がないと実現できない例すらあるんだけどね。
有用なグローバル変数VS有害なグローバル変数という不毛な論争が やりたいなら別スレで。 粘着うざ。
>>307 粘着だなぁ…そんな論争誰もしてないのに。
>>308 不毛であることには変わりなかろう。
お互い、自分の言い分を相手に同意させるためだけに、何度もループして
発言してるのだから。
>>302 その通りです。
>>304 その通りです。
これで、彼らも満足しただろう。
とりあえず、グローバル変数に必然性があるかどうかもわからんで 否定してるような奴はさっさと会社やめてよし。って事で。
>>310 なんか激しくこだわってるみたいだけど、
どっちかっていうと、不要なグローバル変数を多用するような奴のほうにやめてほしいよ。
マジでCOBOLERあがりに、このタイプが多いんだ。
>>310-311 1. グローバル変数全否定するヤツは逝ってよし。
2. 必要ないのにグローバル変数使うやつは逝ってよし。
約一名を除いて、これで合意できてると思われ。約一名は放置、合意できてる人はこれで
終了ってことで、どう?
>>312 もうそれで終了してるんだけど・・・・・ね。
いつまでたっても辞めない奴がいるのさ。
1. gotoを全否定するヤツは逝ってよし。 2. 必要ないのにgotoを使うやつは逝ってよし。
<project name="MyProject" default="dist" basedir="."> <!-- このビルドのためにグローバルプロパティを設定します --> <property name="src" value="." /> <property name="build" value="build" /> <property name="dist" value="dist" /> <target name="prepare"> <!-- タイムスタンプを作成します --> <tstamp/> <!-- コンパイルで使用するビルドディレクトリ構造を作成します --> <mkdir dir="${build}" /> </target> <target name="compile" depends="prepare"> <!-- ${src}から${build}に、Javaコードをコンパイルします --> <javac srcdir="${src}" destdir="${build}" /> </target> <target name="dist" depends="compile"> <!-- ${dist}/libディレクトリを作成します --> <mkdir dir="${dist}/lib" /> <!-- ${build}の中のすべてのファイルをMyProject-${DSTAMP}.jarファイルに格納します --> <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}" /> </target> <target name="clean"> <!-- ${build}と${dist}ディレクトリツリーを削除します --> <delete dir="${build}" /> <delete dir="${dist}" /> </target> </project>
誤爆じゃネーノ?
>>316 Jakarta Antだけど、このスレとは関係ないね、多分。
319 :
仕様書無しさん :01/10/30 11:59
i = 0 Do Until i = "6" '処理する i = i + 1 Loop
320 :
仕様書無しさん :01/10/31 01:17
i = "0" Do Until i = "011111" '処理する i = i + "1" Loop
321 :
仕様書無しさん :01/10/31 02:27
>>319 >>320 そんなコード書いてないで、さっさと氏んでください。
ここはネタスレではありませんので。
323 :
仕様書無しさん :01/10/31 18:01
int hoger( int a, int b, int c ) { if( /*比較文1*/ == 0 ) { continue; } if( /*比較文2*/ != 1 ) { continue; } if( /*比較文3*/ < 0 ) { continue; } if( /*比較文4*/ == 0 && /*比較文2*/ > 2 ) { continue; } if( /*比較文5*/ != 10 ) { continue; } if( /*比較文6*/ < 0 ) { return( 0 ); } return( a ); } 漏れ 「何がしたいのがよくわからないんですが…」 先輩 「何がって、仕様書の通りじゃないか」 漏れ 「なんでcontinueばっかり・・・」 先輩 「仕様書の流れがよくわかって見やすいだろ」 …コメント使えよ。
>>314 gotoは...
OracleのProC/C++で、Javaのようにtry catch finallyしたいとき、
gotoで実現したほうがスマート
なんだろうか?
>>323 その先輩あふぉだね。つかれちゃう。
C言語使いでもこんな人居るのか。
326 :
仕様書無しさん :01/11/01 09:29
>C言語使いでもこんな人居るのか。
328 :
仕様書無しさん :01/11/01 11:59
if(i = 0){ // 処理 } もうね、あほかと、馬鹿かと。
>>328 一時的にコメントの代わりとして使ったのですよ。
330 :
仕様書無しさん :01/11/01 12:15
>>330 なに使いでもやばいと思われ。条件分岐はどの言語でもあるでしょう。
>>331 でもifの条件式の中で代入ができる言語はそんなにあるもの?
333 :
競れ損 ◆hPlq..gg :01/11/01 12:24
>>328 CのFAQ集ではこういうミスをなくすために
if ( 0 = i ) {
}
という風にしろ、というのがありましたね。
これならコンパイル時に気付きますから。
>>333 まあ今時のコンパイラならif ( i = 0 )なんて書いたら警告出るっしょ。
って警告offでコンパイルされたらアウトか。
>>334 警告レベル最低にしてコンパイル通してるコードも、会社辞めたくなるよね。
>334 警告は必ずしも出ないでしょ。 プログラム的には問題ないんだから。 おせっかいなコンパイラは知らないけど。
((nNo != -1) ? nNo : -1) 何故、わざわざこういう書き方を・・・
書き方っていうか…
339 :
仕様書無しさん :01/11/01 14:22
C++使いに多いんだよな
>>337 理解できるけどやるなら全部それでやれっちゅーんだ
ん? -1 じゃ無かったら => nNo -1 だったら => -1 まんまでは?
341 :
仕様書無しさん :01/11/01 14:34
long SysInfo[5] という配列があったとします。 さて、あなたはどちら派ですか? A) ------------------------------------- #define INF_SYSTEM 0 #define INF_PDATA 1 #define INF_LENGTH 2 #define INF_MODE 3 #define INF_USERNAME 4 if( SysInfo[ INF_MODE ] == 1 ... if( memcmp( &SysInfo[ INF_USERNAME ], "HOGE", 4 ) == ... B) ------------------------------------- #define SI_SYS SysInfo[0] #define SI_PD (&SysInfo[1]) #define SI_LGH SysInfo[2] #define SI_MD SysInfo[3] #define SI_UNM (&SysInfo[4]) if( SI_MD == 1 ) ... if( memcmp( SI_UNM, "HOGE", 4 ) == ... なお、Bの方は更に #define SI_UNMC (ChgLCase(SI_UNM)) #define SI_MDM (0-SI_MD) 等派生することが条件です。
>>340 どっちにしたってnNoに入ってる値じゃん。
>>344 配列しばりなら、A)かつenum使用。
B)は極悪。
>>345 Bが極悪・・ヨカータ。
今の職場(派遣先)、Bが常識なのでソースコード解析に死ぬほど労力食うんよ。
で、引き継ぎ+新規やることになったから、Aの形式にしようとしたら
「ソースが長くなって見づらくなるから」
「なるべくデファインを使って効率のいいソースにして」
「そんなややこしい使い方はしないで」
と周りからマジ顔で言われて、俺の4年が異常だったのか??と悩み中なんだよー
Bは更に、ソースファイルが変わると
#include "(Bの記述のヘッダ)"
#define MAINDATA SI_SYS
#define USERDATA SI_UNM
#define DATAPOINTER SI_PD
となり、更に別のソースで
#define d_Sys MAINDATA
とかなって無茶苦茶もいいとこなんだよ。
しかも同じ人のソースでこれやってたりして、変数1つ追うのに30分とか当たり前。
やっぱりここ、変だよ・・・
>>346 すっきりしてるのがいいというなら。
下記の様にしてやれば。 (w
#define CONTENTS 関数の中身...延々と...
... func( ... ) { CONTENTS }
348 :
仕様書無しさん :01/11/01 16:39
349 :
仕様書無しさん :01/11/01 16:42
>>347 いやいや、ここはやはり
#define PROGRAM プログラムを延々と...
PROGRAM
だろう。
>>337 手元のコンパイラに喰わせてみたYO!
int foo(int nNo)
{
return ((nNo != -1) ? nNo : -1);
}
foo:
movl 4(%esp),%eax
ret
すばらしい。完璧な最適化だ!
353 :
仕様書無しさん :01/11/02 05:53
7つ年上の仕事が出来ない偉そうな奴が書いたPerlのソースコード。 他人の作った「バグがあるプログラムを直してくれ」と言われて、 「読みやすいように1から書き直します」と言って書き直したが 結局バグは取れていなかったというエピソードを生んだ人です。 #!/usr/bin/perl my $m_from; my $m_subject; my $m_msg; (中略) #---- FILE CLOSE ---- close FT; #---- MSG ---- print '---- END ----'."\n"; #---------------------------------------------------------- # EXIT #---------------------------------------------------------- exit; sub send { (中略) #---------------------------------------------------------- # RETURN #---------------------------------------------------------- return; } こいつのせいで朝日拝んでますが何か?
↑ちなみに、スクラッチで書けば30行くらいで書ける コマンドラインでsendmail使ってメールを送信するだけのスクリプトです。
355 :
仕様書無しさん :01/11/02 07:42
>>353 それだけじゃ何が言いたいのか…
コメントって言えば、昔某マイク●ソフトの人に
ソース見せてもらったときに
// *****************************
// *
// * コメント内容
// *
// *****************************
ってのが至るとこにあったのを思い出す。
綺麗だけどさ…
>>355 いや、激しく意味の無いコメントは書くなって言いたかったんだけど、
マイ●ロソフト激しく負けたみたいだからもういいや。。。
って、「コメント内容」って所は、コメントの内容では無くて
「コメント内容」という文字だけなんだよねぇ?
357 :
仕様書無しさん :01/11/02 10:45
>>355 某N○Cの人のソースで
// ****************
// 関数名:未定
// 概要:
// 引数:なし
// 戻り値:なし
// 備考:
// ***************
が全ての関数の前についてたことあったっけなあ
358 :
仕様書無しさん :01/11/02 11:28
今ソースの修正頼まれてしてますが、 #if 1 修正後 #else 修正前 #endif というふうにやってといわれて鬱です。 一つならいいんだけど、何十とこれをするのは・・・
ご愁傷様
360 :
仕様書無しさん :01/11/02 11:57
361 :
仕様書無しさん :01/11/02 12:00
普通なん?これが重なるとどうなると思うよ #if 1 ・・・ #if 1 ・・・ #else ・・・ #if 0 ・・・ #endif ・・・ #endif ・・・ #endif になるんだよ。醜くて見難くてかなわん。 まあ必要というのもわかるんだけんども。
362 :
仕様書無しさん :01/11/02 12:01
不要だよ。 F系ではやってるかも。
>>360 一時的にはありうるけど、コードの整理がついた時点で #if 1, #if 0 は全部捨てるのが普通。
捨てる前のコードを保存しておきたければ、ソースコード管理システムのほうでスナップショット
をとる(タグをつける)。
変更が重なるとやってられんよ。
364 :
仕様書無しさん :01/11/02 12:14
>>358 あー、それやるとこ多いよ
オレの経験では、たいていレベルの低い会社だった
ソースコード管理システムが使えないほどな
365 :
仕様書無しさん :01/11/02 12:23
ソースコード管理システムを買えないほどの会社もやってたなあ。
CVS使えないうえにVSS買えないドキュ会社か、、、
367 :
仕様書無しさん :01/11/02 13:09
会社というより、上がそういう方針なんだろ
368 :
仕様書無しさん :01/11/02 14:41
上が上なら下も下だったりするのよ(藁
バージョンごとにディレクトリがあるんだよね。 VSSとかあるんだけどなあ
>>361 ああ、重なるのか。
そこまで書いてないからわからなかったよ
いつまでも履歴残してるのは糞だね
ていうか漏れの職場のソースは履歴8世代残すのが規則になってるから
その程度で愚痴るなってカンジー
ちなみに漏れの派遣先はVSS使ってます(w
更に第一時開発のものでもVSSに一旦上げたらその時点から #if0の履歴管理を強いられまぷー
373 :
仕様書無しさん :01/11/02 16:41
毎回ソースファイルを増やしてけば? /* foo.1.c revision 1 */ #if 0 #endif /* foo.2.c revision 2 */ #if 0 #endif /* foo.3.c revision 3 */ /* 最新版 */
374 :
仕様書無しさん :01/11/02 19:43
375 :
仕様書無しさん :01/11/03 01:26
今、我々のチームで開発したプログラムを持って、俺1人で常駐派遣している。 プログラムの動作がおかしいというのでデバッグしたら、 エラートラップの中で、俺に対してのブービートラップが埋め込まれていた・・・・ おいおい、SQL失敗したからといって、プログラム終了するなよ・・・・ エラートラップの意味全くないじゃん・・・・ 鬱だ。
376 :
>>341 :01/11/03 01:28
どこも悩みって一緒なんですね。 あなたの悩みとは違うが・・・うちの場合、Cじゃなくてちょっと マイナーな言語(結局コンパイル時に一旦Cになりますけど) なんですが、グローバル変数の嵐。必要ないとこまでグローバル。 さらに、関数を作るということを知らない。コピペの嵐。
>377 2ちゃんのコピペ荒らしの話じゃないんだが… ネタにマジレスしてるようでカコーワルイのでsage
>>378 誰がどう見たってネタだろ。
君の脳みそのソースコードを見てみたいよ
while ((threadid = bbs.2ch.threads.wait()) >= 0) { response res(bbs.2ch.thread.get_last_response(threadid)); response aori(make_aori(res)); bbs.2ch.thread.send(threadid, aori); }
381 :
仕様書無しさん :01/11/05 11:41
>>378 >ネタにマジレスしてるようで
ようじゃなくてそのもの。ワロた!
382 :
仕様書無しさん :01/11/06 12:20
Aさんがつくったa.cの中の関数を Bさんがb.cの中で使って、プロトタイプ宣言が無い旨のメッセージを無視していたり、 Cさんがc.cの中でa.cの中の関数のプロトタイプ宣言をしていたりするのですが、 何か?
382はA,B,Cのどれなのか
わたしはDと申しますが、何か?
386 :
仕様書無しさん :01/11/07 00:39
DameのD? DokkaikeのD? DokyunのD?
>>358 >>360 俺の派遣先のコーディング規約。
「修正前のソースコードはコメントアウトして残すこと。
コメントには、バグ票番号、修正日時、修正者名、プロジェクトID(本プロジェクトではXXX)を付加すること。」
「#if(#ifdef)はソースファイルの可読性、保守性を低下させるので使用不可」
「コメントは必ず1行毎に/*~*/で完結させること。複数行に渡るコメントの
場合も1行毎に完結させること。」
と、いうわけで、
void foo( void ) {
/* 2001/10/20 bugXXXX ローカル変数初期化漏れ修正 b.bar XXX */
/* int local; */
int local = 0;
/* 2001/10/20 bugXXXX ローカル変数初期化漏れ修正 b.bar XXX */
/* int local2; */
int local2 = 0;
:
以下、推して知るべし。ソースファイル数千行、実ステップ数百行。
(下手すると数十行??)これをclearcase管理。サーバ容量いくらあっても足りないらしく、
月に一度はディスク増強してるみたい。
389 :
仕様書無しさん :01/11/07 23:26
多分ポインタに自信が無い奴が書いたであろうコメント。 /* s 自体にはアドレスが格納。そのアドレスの値を代入する。 */ ポインタを使っているところすべてに記述してある。 **やリスト構造についてはコメントが何言っているんだかわからん。
>387 CVSとかVSSを提案してあげなよ。 職場で生産性向上のワークショップとかやってねーの?
>>390 やった結果がこれみたい。「CVSというものがありますよ」と言った所、
「無保証なものは使わない」とのこと。
さすがにやってられないので交渉して、俺の担当の部分は好きに
やらせて貰っています。そういう話が通じるだけマシかも、ですね。
10 REM "Hello World!" 20 CLS 30 PRINT "Hello World!" 40 END
VBで shohin_code=iif(isnull(text1.text), "0000", text1.text) if shohin_code="0000" then msgbox "エラー" end if こんな感じの奴。 ちなみに、商品コードは半角英数字4桁。 だから0000という商品コードができることもあるんだけど、 何でこんなコーディングするかな…
上げ忘れた。 会社辞めるといわず、この世辞めます…
395 :
仕様書無しさん :01/11/10 09:24
396 :
仕様書無しさん :01/11/10 11:04
C コンパイラを作っていた。 予約語をテーブルで持っていて線形リストで検索していた。 遅いよそれ…。
>>396 予約語の数なんか、たかが知れてるから線形リストでも問題ないじゃん。
変数・関数などの識別子をすべて線形リストで持ってたら、そりゃあ馬鹿だが。
399 :
仕様書無しさん :01/11/10 22:09
>396 lexで展開した結果のことかなぁ。 コンパイラはlex+yaccで作るのがふつうじゃない。
レキシカルアナライザは自分で書いてもたかが知れてるよ。
401 :
仕様書無しさん :01/11/11 18:00
字句解析はlexに任せた方が速くて 構文解析は自前で作った方が速いって聞いたけど
>>401 字句解析と構文解析の違いがわかっていってる?
既出だと思うが...VBにて。 Dim Cnt,Lng,I,II,as Long Dim Rst1,Rst2,Rst3 as Recordset Dim SQL1,SQL2,SQL3 as String で、自分 Dim Cnt as Long,Lng as Long こんな宣言してたら、「まとめて書く方法しらないの」とか 言われた。 自分VB始めたばっかなんで何とも言えないが、参考書には 一つ一つ宣言しないとダメだと書いてある。 これって、テクニックなん?
まあ2つぐらいならいいんでねーの? 10個もそんな感じなら萎えるけど。
405 :
仕様書無しさん :01/11/14 10:08
たしかVBで dim a,b,c as long って書き方したら、 a,bは、longにならないんじゃなかった?
406 :
仕様書無しさん :01/11/14 10:19
と、いうことはー。藁藁
やっぱ自分のやり方で通します。変数追ってみたら ほぼ全部Variantになってたんで鬱・・・ >405,406 サンクスコ
>>405-406 そのとおり。(VB6.0までは)
だから、403さんに
> 「まとめて書く方法しらないの」
といった人がタコ。
ただし、VB.NETでは、405のスタイルでもすべてLongになるらしい。
バージョンによって仕様が変わるってなんやねん!(なめとるのか)
ついでに、ByVal(値渡し) / ByRef(参照渡し)を省略した場合の
既定値がVB6.0まではByRefなのに、.NETではByValに変わる。
(宇津出汁濃・・・)
紛らわしい仕様変更するM$逝ってよし!
>>409 M$はいつもこういう事を平気でやってのけるでしょ
APIの返り血を逆にするってこともやってのけたし(95->98
でも、defaultに甘えるコードの書き方は基本的に辞めておいた方が吉
#Perlは?(w
412 :
仕様書無しさん :01/11/14 23:39
>>405 以前、自称VBマスターな人のソースでそれが連発、
それが元でその人曰く「WINDOWSのバグ」が発生してたことがある
漏れが見て速攻修正。その人が「あなた凄い腕前だね」と言ったので
悪気もなく解説・・・その人3ヶ月後にクビ。悪いことしたかなあ
413 :
仕様書無しさん :01/11/15 00:21
仕事とはいえ、毎日他人様の書いたVBのコード追っかけるのにうんざり。 いちから書くのは簡単だけど、解析して直せなんて勘弁してくれ・・・
>>411 >>405 は.NET以前のVBのdefaultだったような気が。
defaultの意味を勘違いしてる?
415 :
名無しさん :01/11/15 00:36
>>403 プロシージャ内で、StringとLongは記号で宣言しないか普通?$や&とか
Declarationsで宣言するときは前者を使うと思うが。テーブル宣言する
ときなど。
つか、VB の仕事やりたくねー。 半年やったさ、ああやったさ!! やればやるほどフラストレーション溜まる もう勘弁して下さい。お願いします。
417 :
仕様書無しさん :01/11/15 01:55
言語じゃねえ! 人間だ!! 就職してから同じ職場に5年以上、他の職場へ出向いた経験のない 人間の中に突然放り込まないでくれ!! 世の中の常識が一切通用しない、閉じた世界観で語られるので 精神的に辛いよ!!
>>417 閉じた世界観って...もちっと具体的に
詳細希望。
>>414 ああ、(また)書き方がまずかったですね…
この場合は、
明示しなかったら***と解釈される(default)に甘える書き方は、
特に理由がない限り控えておいた方がいいですよ
と解釈しておいて下さい。
>>409 では ByVal ByRefの辺りを指しています。
>>416 全面的に同意、
仕事とはいえ、痒い所に手の届かない文法仕様で
コードを書かないといけないのは辛いものがある
でも、それを言ってしまえばWeb系は壊滅的だし、
この辺りだけ見ると時間が逆戻りしてるようにしか見えない…
421 :
仕様書無しさん :01/11/16 00:43
今月から派遣で行っている職場のCのソースの一例 if( SYSTEM_DATA == TYPE_1 ) DATA_WRITE; どんな処理だか想像つきますか?
>>417 君は携帯の開発をやってる某氏では…。
VB使ってるの?
あ、ごめん。 勘違いしてた。 ここはVBスレじゃなかったのね…。
if ( system_data == 1 ) printf ( "data" ); なら判るのか?
VB で dim fail1,fail2,fail3 ファイル(file)のつもりらしい。 勝手に「失敗」してろ!!!
C言語でgoto使ってますけど・・・何か?
信じられない この前の派遣先は、修正するプロgに3箇所ほどgotoがあったけど 終了時には、なくなってたぞ。 10年ほどプログラマしてるけどC言語でgoto使ってるのみたの その一回とコボルから翻訳とたCのプログラムだけだ。
>>427 Cで、「gotoを使うべき」とされる事例がなかっただけだろ。
>>427 10年もやってて見たことないってのが俺には不思議だ。
if のチェーンとか、フラグとか
使ってたんだろか…
「goto文有害論有害論」ってどこ逝った?
>>424 SYSTEM_DATA は、あるグローバル変数のある配列へのポインタをchar*でキャストしたものを3ビットシフトしたもの
TYPE_1 はある情報関数の引数を0x3Fで&したもの
DATA_WRITEはある関数へのポインタ
しかしDATA_WRITEの示す関数の中身は
void hogehoge( void )
{
return;
}
という記述が山のようにあるソースコードの解析中です。鬱だ・・・
ポインタって、加算以外の算術演算(とか)ってやっていいんでしたっけ? あと、DATA_WRITEの宣言を見てみたい。
今、ソースレビュー頼まれているBeans、 クラス変数が....一画面以上あるんですけど...。 一体、どこまで続くのでしょうか...。 try~catch~finallyのネストが6段も あるんですが....。 finallyブロック中のfinallyブロックからのthrowとかあるし。 コボラー(10年選手)にJavaは無理ではとハゲシクオモタ。 ....鬱だ.......。
436 :
仕様書無しさん :01/11/20 00:22
こないだまで仕事してた派遣先、 引数与えて条件分岐すれば済む処理を全部別の関数にして、 ほとんど同じ処理をする関数を12個作っててめちゃくちゃ笑えた。
>>435 > try~catch~finallyのネストが6段も
> あるんですが....。
> finallyブロック中のfinallyブロックからのthrowとかあるし。
激ワラタ。
438 :
仕様書無しさん :01/11/20 01:46
みんな苦労してるんだね。 俺の職場も相当ひどいんだが、ここを読むとちょっとましかも と思ってしまった。 でも、やっぱりもうやめたい。
プログラムに興味があるんですけど、 プログラマってそんなに辛いですか? 楽しいこととかってあるんですか?
マクドナルドの店員か、土方の方がマシかな
ガ━━(゚Д゚;)━━ン! ソ、ソウナノ、、、?
営業スマイルとはいえ、 仕事中にため息をつくことは多分ないだろう彼女達 3K労働とはいえ、 働いている時間が金に直結する、汗に輝く男たち プログラマーって、何だ?
445 :
仕様書無しさん :01/11/20 02:37
447 :
仕様書無しさん :01/11/20 05:34
445じゃないけど・・・ 同年代のリーマンと比べりゃ良いほうじゃない? 先が見える分しっかり将来の設計をたてておかないと まずいとは思うけど。
>447 プログラマ・SEは設計が苦手
>>447 先が見えるというと、年を重ねるとキツイってことですか?
(プログラミング自体が)
それとも業界自体の先がみえてて、危ないってことですか?
現在24なんですけども定年までプログラマとしてやってくのは無理なんでしょうか?
とりあえず、「プログラマ35歳定年説」は年功序列時代に
ソフト業界の経営者が流したプロパガンダなのだが・・・。
>>449 頭が柔らかければ可能と俺は思うが、世間がどう見るかは判らない。
一応、小泉政権の政策で差別撤廃に動いてはいるが・・・。
>>450 あと9年で定年・・・か。
プログラマってその後、つぶしきくんですか?
452 :
仕様書無しさん :01/11/20 21:44
>451 つぶしは効きますよ。 潰して、石鹸にします。
453 :
仕様書無しさん :01/11/20 22:43
50歳、PGですがなにか? 精神的に弱いやつは 確かに30代でだめになってくる。 精神的な問題だよ。しっかし、がんばってきたやつは 30ぐらいになると、残業はなくなってくる。 設計・見積もり・コーディング・テスト どれも、的確になってくるからね。 肉体的には、決してきつくないとは言わないが、 十分60歳、70歳までもやっていけると思うよ。
>>453 いくらなんでも 70 は無理だろ (w
456 :
仕様書無しさん :01/11/21 02:26
>>453 PG=プログラマだよ、普通は
あんたのは ポリスガード だろ
警備員なんて誰でもできるよ
>456 上手いような、冗長なような。
>449 やはり歳でしょうか・・・技術屋としては生涯PGで居続けたいのですが、 経営陣としては新しい技術を効率よく吸収できなくなった時点で第一線 から退くのが務め・・・ 業界云々は気にする必要はないのでは?冷え切った業界でも 儲かっている会社は沢山ありますし。
>>458 なるほど、やるなら覚悟きめてがんばるしかなさそうですね。
どこの業界も昨今は厳しいらしいので、自分のやりたいことをやって
みます。
458さんもお体に気をつけてがんばってください。
460 :
仕様書無しさん :01/11/22 07:09
main() からしてこんなんよ。 変数名が長すぎ。 int main(int IntArgumentCount, char *StringArgumentVector[]) { ・ ・ ・ return(IntRerutnValue); } argc, argv でいいだろって感じ。
>>460 何で変数名の一番最初が大文字になってるんだ?
462 :
仕様書無しさん :01/11/22 09:58
>>461 今の職場の人(工場)なんて、変数名が全部大文字だったり
20文字以上の変数名に _ 無しだったりして、更に英語+ローマ字で凄いことになっているよ
char flagcompanydataurawritedaiichi
463 :
アルバイター :01/11/22 10:22
UNIX系(Cか?)いじりたおしてきたやつって、 flagcompany_dataura_writedaiichi アンダースコアな人が多いような。 マック系(Pascalか?系はいらんか)いじりたおしてきたやつって、 flagcompanyDatauraWriteDaiichi こういうのが多いような。 プラットフォームで、傾向が違うのかな?
464 :
アルバイター :01/11/22 10:23
cを大文字にし損ねた。
465 :
仕様書無しさん :01/11/22 11:38
>>462 漏れの派遣先はその変数なら
char fgcpy_duawtdi
になるな。略し方が無茶苦茶で、変数にコメント一切無いので
解読に死ぬほど精神力使っているYO
>>463 プラットホームというか最近は、アンダーバーで区切るスタイルは減少傾向。
(特にオブジェクト指向系は、大文字小文字で区切るスタイルが多数派)
いわゆるハンガリアン記法というのは、狭義には Windowsのあるフレイムワークなどでよくつかわれる、 「最初1~2文字が小文字でその変数の型などの性質を示す」+キャピタライズされた複数の単語の連続(下線は使わない) ってものだけを指すこともありますね。
>>466 アンダーバー、大文字で区分けを要求したら
「なるほど、それは画期的な方法だな」と感心されたよ(w
職場の平均年齢は34 経験は短いので6年 長いので9年 他へ出向した経験のある人ゼロ(社員は) 漏れは11月からそこに出向
// CBar.cpp: CBar クラスのインプリメンテーション #include "CFoo.h" #include "CBar.h" CFoo foo; CBar::CBar() { } CBar::~CBar() { } CBar::func1() { return foo.func1(); } CBar::func2() { return foo.func2(); } // // 以下ずっと続く //
471 :
仕様書無しさん :01/11/22 22:57
継承?
void bunki() { switch (Status) { case 1: func1(); Status++; break; case 2: func2(); Status++; break; case 3: func3(); Status++; break; } } みたいなの。
>472 オートマトンの状態遷移みたいなのだったらアリのような気もする。 Status++ はまずいだろうけど。
モンゴリアンといえばチョップだよね
友よ心にモンゴリアンチョップはあるか!?
476 :
仕様書無しさん :01/11/23 00:39
チョップといえばスクワッドだよね
エラーが出たんでログを見てみたら(´Д`)ハァハァと書かれていたよ。 もう、その日はそれで帰宅。
>>477 エラーログにそんなもん仕込んだ奴が俺の職場に居たらシめるね(w
479 :
仕様書無しさん :01/11/23 00:44
>>473 ジャンプテーブルにしろ、という意味だと思いましゅ
>>478 仕込んだやつ大体わかる。
「~ってどうよ?」が口癖のヤツいるんだ~♪
>>480 リアルワールドでマターリとかキボンって言ってしまいそうに
なることない?
482 :
仕様書無しさん :01/11/23 00:53
>>470 Javaだと それに似た「アダプタークラス」と呼ばれるクラスが、APIに はいってる。
>>481 マターリとかコソーリとかよく使うかも。
「コソーリ修正しとけよ!」 …鬱だ。
484 :
仕様書無しさん :01/11/23 01:04
>>481 たぶんすでに「ゴルァ!」は使ってる。
あと、「これ。」とか「最強」とか、「諸刃の剣」とか。
486 :
仕様書無しさん :01/11/23 01:10
「角度」とかね。
ウチの会社の行き先掲示板には、 『xxxに逝ってきます』ってのがとても多い...
488 :
仕様書無しさん :01/11/23 06:02
main() { /* コインいっこいれる */ }
490 :
仕様書無しさん :01/11/24 22:26
for( ; ; ) if ( a == 1 ) { continue; } hoge(); break; } こんなソースばっかり。 != を知らないのかねえ。 それとも、この方がいいことなにかあるのかねえ。
>>456 誰でもできるわけではない。アル中では勤まらない。
警備会社でさえも勤まらずクビになっている生き物がいる。
492 :
仕様書無しさん :01/11/24 23:05
main() { /* バグはここに入れる */ }
>>490 NOTは嫌いって言う人は確かにいるな。
なんか理由あるのかもしれないけど。
494 :
仕様書無しさん :01/11/24 23:35
>>490 よく判らないんだけど。
for(;;)
if(a==1){
continue
;}
hoge();
break;
}
って事は、これはswitch文の途中なのか?他のループ文の中身なのか?
aはグローバル変数なのか?
説明無さ過ぎて訳がわからん、
俺は490こそ訳わからんと思う。
その程度の説明で他人に意図が伝わると思うな。コメントのセンスが無いとか言われるだろ?
for(;;) の後ろに { を付け忘れたものと思われ
>>494 センスについては言われたことがない
キミも文章の文字ばかりしか読めなくて、相手が何を意図しているかを
判断する能力に欠けているといつも言われているだろ?(w
499 :
仕様書無しさん :01/11/25 00:48
お互いの欠点を補完しあえてよかったね。 きみたちコンビで仕事するといいよ。 では次のネタどうぞ。
>>498 一言「間違いだったYO!」と言えば済むことじゃないの?
continue と goto を使う奴は問題害
>>502 エラー処理を一箇所にまとめるのにgoto文使ってますが、何か?
>>502 gotoは必要なら使う。
continueは綺麗なloopを作るのに必須だったりする
場合もあるから、罪悪感はなかったけど、ダメなの?
>>503 そんなコード書いてるからMSにやられんだよ。
>>505 烈しく同意!
USのゲームPGが書いたコードを日本語化したことあるけど
goto continue どころかLOOPも少なかった。
無駄が無くて見易いんで驚いた。今でも参考にしてる。
大学時代にバイトに行った会社でうるう年の判定をif文の3重ネスト(4で割り切れる?100で割り切れる?400で割り切れる?)でやってるソース見た。しかもバグ入り。なんかこれがプロの仕事かとカルチャーショックだった。 そのバグを報告するのに書類を一枚、修正してまた一枚書かされたのが2重のカルチャーショック(バグ修正1分書類に30分)。 さらに修正したときに3重ネストをまとめて一個のif文にしたんだが、元のソース書いたやつにグチグチ文句言われて、さすがにこれはカルチャーの問題ではないと気がついた。
>>seven 適当なところで改行するのが吉かと。
>>507 うるう年判定くらい、探せばいくらでもサンプルあるのにねぇ。
ご愁傷様。
498は漏れじゃないのに・・・
>506 漏れも参考に見てみたいよ>ジンガイコード
513 :
仕様書無しさん :01/11/25 03:42
四角形を画面に出力するとき、頂点の座標を適当な数字を入れ、 「まだ、ちょっと曲がっているなぁー」 とか言って、座標をずらしてはコンパイルしている奴がいた。
>>506 そのソース見てぇぇぇぇぇぇぇ、ってマジ思った。
517 :
仕様書無しさん :01/11/25 07:32
>USのゲームPGが書いたコードを日本語化したことあるけど あなたたちのゲームPGが書いたコード??
>>509 あえてツッコミ。
車輪の再発明であることより、そんな程度のロジックさえまともに実装できない
ことの方が大問題。(って、わかっておられると思いますが)
車輪を再発明してみたら、形が歪なので、円周率を測定してみたら、3.00だった、
とゆー感じ。(なんか違うような・・・(^^;)
520 :
仕様書無しさん :01/11/25 13:46
>>506 同意!
MLでNTのカーネル書いた人のコード見たことあるけど
スゲ―コンパクトだった。本物かどうか知らんが(W
コメントに「ここではメモリ確保に失敗する確率が高いので失敗側を優先する」って
日本語で書いてあった。コメント和訳して流すなよ>ML (W
521 :
514ではないが :01/11/25 22:57
>>515 確かにある。
K&R本読め。
俺もうるう年判定間違ってるアホプログラムのメンテしたことあるよ。
そいやぁ、某C社の入力男は明治1年から和暦入力できるんだっけね。けけ。
>>521 いや、そういうことじゃなくてね、
507→509→514って読んでいくと、
514の発言が文脈に合ってなくて
意味不明でしょ。
>>522 509さんにサンプルの場所教える必要はないよね。確かに変だ。
俺もたまたま、K&Rの第二版で1行でできるうるう年判定のサンプル見たことがあるから、
脊髄反射してしまった。すまそ。
524 :
なぎさっち :01/11/26 12:17
>>507 >そのバグを報告するのに書類を一枚、修正してまた一枚書かされたのが2重のカルチャーショック(バグ修正1分書類に30分)。
ん?書類は一枚にまとめてくれ~、ってこと?
525 :
仕様書無しさん :01/11/26 15:40
今日見かけた職場のソース if( state1 == 10 || state1 == 11 || state1 == 12 || state1 == 13 || state1 == 14 || state1 == 15 || state1 == 16 || state1 == 17 || state1 == 18 || state1 == 19 ) { Foo( ); } else if( state1 == 20 || state1 == 21 || state1 == 22 || state1 == 23 || state1 == 24 || state1 == 25 || state1 == 26 || state1 == 27 || state1 == 28 || state1 == 29 || state1 == 30 || state1 == 31 ) { Foo2( ); } こんなん(少しわかりやすく模式化)。 なんか死にたい気分になった。
>>525 つか、これを書いた奴って、書いててめんどくさくなかったのかな...
仕事場ってことは、ソフトとかのソースッテコンナンなの?
>>525 まだマシと思う漏れは異常なのだろうか?
>>525 これが何か、にもよると思うな。
オートマトンに従ってそのままコーディングしたものだと、
こうなっても悪くはない。
不等号使うのも状況によっては不適当なこともあるし、
状態番号にマクロ名を付けることに
どれだけ意義があるかも状況によるだろうし、
switch を使わないのは、
変数の初期化の問題が厄介だからと考えれば納得がいく。
530 :
仕様書無しさん :01/11/26 16:12
と、とりあえず漏れならswitch~caseにする。
531 :
仕様書無しさん :01/11/26 16:22
switch?
いや、
>>525 を見る限り、普通はこうだろ?
↓
if(10 <= state1 && state1 <= 19){
Foo();
}else if(20<= state1 && state1 <= 31){
Foo2();
}
>>531 その状態変数の持つ意味によっては不等号は用いたくないな。
state1 が double とかだったらもっと面白いのに...
状態遷移の変数には列挙型がよく似合う。
535 :
仕様書無しさん :01/11/26 18:37
状態が20もあることが問題だな 問題の分析がよろしくない
536 :
仕様書無しさん :01/11/26 19:03
#ifdef printf("会社辞めろ"); #endif
>>536 no macro name given in #ifdef directive.
538 :
仕様書無しさん :01/11/26 19:08
#ifdef _DEBUG printf("会社辞めろ"); #endif
>>538 むしろ #ifndef の方が嫌だな。
>>507 PGもしくはPG系SEの方の60%はそのパターンでしょうね
デバッグの報告書出すのに30回リテーク喰らった事あるよ(笑
報告書の内容がまずいんじゃなくて単にその方の仕事のタスクが
埋まってただけの事だったんだけど コンピュータと同化しちゃ
ってる方多いから・・・書類のすみっこに 時間待ちは何分?
って書いて指定時間に届けたら受理されましためでたく♪
541 :
仕様書無しさん :01/11/27 16:28
うるう年の判定は、林春比古のスーパービギナー編に載ってるよ。 if ( ( n%4 == 0 && n%100 != 0 ) || n%400 == 0) ガイジンのソースは、DOOM でいいのでは。
>コンピュータと同化しちゃってる方多いから・・・ ↑ワラタ。
543 :
アルバイター :01/11/27 17:34
>うるう年の判定は・・・ 私は研修の時、ダイテルさんの、 C++なんたらかんたらの本を観て作りました。 林春比古さんのと同じだったと思います。 ただ、400で割るのが一番左じゃなかったかな?違ったかな。 それはともかく、 「バグゥだ!ゴラァ!」って、研修の先生に言われました。
544 :
アルバイター :01/11/27 17:38
なんかぼけたことかいてしまった。
新人SEの作った規約。「識別子は日本語にすること」 for (int カ = 1; カ < 10; カ++) { for (int キ = 1; キ < 10; キ++) { System.out.println( カ * キ ); } } こんな感じで・・・・・・。 従うDQNはいませんでしたがね。
547 :
仕様書無しさん :01/11/29 03:26
漏れの職場では、 「変数名はむやみに長くしないこと」 → 1文字変数多用 「グローバル変数とローカル変数の区別がつくようにすること」 → グローバルは全部大文字、ローカルは全部小文字 という謎な発想をした人のソースのおかげで参ってます
1文字はアレだが、 >「グローバル変数とローカル変数の区別がつくようにすること」 > → グローバルは全部大文字、ローカルは全部小文字 ってのは別におかしくないんじゃ?
あ、全部か。それはやっぱりいやかも
そ。構造体の名前なんかデファインの値なのか区別つかないんだよ。
目的はどっちも正しいと思うけど、 手段がイカン。
>>541 個人的にnではなくyearを使いたいんだが、どうよ。
いや、嫌。
554 :
仕様書無しさん :01/11/30 13:03
// 2001/01/01 add あけおめ
転職2週間で見たコード・・・Javaね。 DataStructure1 ds1; DataStructure2 ds2; DataStructure3 ds3; ・・・ DataStructure1 ds1clone; DataStructure2 ds2clone; DataStructure3 ds3clone; Vector v = new Vector(); v.add(ds1); v.add(ds2); v.add(ds3); ・・・ for(int i=0; i<v.size(); i++){ if(v.elementAt(i) instanceof DataStrcture1){ ds1clone = (DataStructure1)v.elementAt(i).clone(); }else if(v.elementAt(i) instanceof DataStrcture2){ ds2clone = (DataStructure2)v.elementAt(i).clone(); }else if(v.elementAt(i) instanceof DataStrcture3){ ds3clone = (DataStructure3)v.elementAt(i).clone(); } }
556 :
仕様書無しさん :01/11/30 23:53
クラスのprivateで宣言した変数をローカル変数だと勘違いしてるDQNプログラマって結構多くない? private変数ってクラスの中では立派(?)なグローバル変数なのに‥privateなんてついてるから気が緩んだのか? ってか、クラスの中で変数を使い回ししてて、何やってんのかサパーリわかんない! 今すぐ直せや!ゴルア
>>556 クラスにstatic変数とstatic関数しかないCOBOLER
上がりPGのソースとか。
サブクラスで、全てのメソッドを親クラスと同じ実装で オーバーライドしていた(つまりオールコピペ)うちの 同僚。なにがしたかったのよ?
あれだよ、ほら、 継承するとオブジェクト指向っぽいじゃん
>>559 う、ううん。
そう、そうだよね。そう思うよね。
んな訳ねーよ。
オーバーライドしたつもりで基底クラスのメソッドが virtualになってなかったりして。
562 :
仕様書無しさん :01/12/01 00:56
確か通信部分のプログラムでこんなことしてたやつが、、、。 if ( 1 == SendData(intHOE) ) { SendData(intHOE); } 客「データが、二重になってるんですが、どうしてでしょう?」
563 :
仕様書無しさん :01/12/01 01:07
struct{ char year[4]; /* 西暦年 4桁 */ char month[2]; /* 月 2桁 01-12 */ char date[2]; /* 日 2桁 01-31 */ char dmy; /* ダミー 1桁 NULL */ }day;
ところで春分ってどうやって判定するの? 宮内庁が決めるらしいんだが。 春分かどうか判定しなければいけない時って無い? どうやるの? スレ違いでスマン。
565 :
仕様書無しさん :01/12/01 01:16
>>564 取り合えず、現状の春分の仕様をそのままコーディングすりゃいいじゃん
以外とC++シロートが多いんだな。 同じ職業者としては不安だす。 そんな人とは組みたくない。
>>564 一応簡易計算式はあるらしいよ。googleで検索すれ。
そうなんだ。計算できるんだね。 でも3月20日か3月21日かは宮内庁が決めるってどっかに書いてあった。 これってまずいよね。どうして日本はこういう面倒な決まり事があるのか。
>>564 仕様書無しさん wrote:
> ところで春分ってどうやって判定するの?
> 宮内庁が決めるらしいんだが。
宮内庁じゃなくて、
東京天文台の水路部では?
> 春分かどうか判定しなければいけない時って無い?
> どうやるの?
ふつうに計算すればいいですね。
ただ計算結果が24時近くの数分のところになったばあいは
実際にそのときになってみないと(多少地球の軌道もずれてるかもしれんし)、
どうなるかはわからないですね。
570 :
仕様書無しさん :01/12/01 23:45
>>563 それは
日->date
日付->day
だからイヤーンって事かぁ。
……何故だろうなぁ……
インターネット普及する以前に、春分秋分の計算式を探して 天文の本やら百科事典やら探しまくったことがあったんだけど、 結局分からなくて、あきらめたことがあった。 この前、ネットで計算方法を検索したら5分で見つかってやんの。 便利になりすぎ。
572 :
仕様書無しさん :01/12/02 00:01
>>571 おなじ苦労をした人間が全国で256人ほどいると思われ。
「こんなに苦労してるんだから、他にも困ってる人がいるに違いない。そいつらのためにもドキュメントにまとめてwebにあげておこう」
と思ったに違いない。
>>571 あー、俺も。
図書館まで行って、禁帯出のゴツイ本ひっくり返して調べても
何だかえらく複雑な話 (と式) しか出てこなくて。
それが今なら計算方法どころか、作ろうとしてたソフトそのものが
あったり。萎えるなぁ。
>>571 仕様書無しさん wrote:
> インターネット普及する以前に、春分秋分の計算式を探して
> 天文の本やら百科事典やら探しまくったことがあったんだけど、
> 結局分からなくて、あきらめたことがあった。
インターネットが普及する以前から、fj.rec.astroあたりで「FAQ」と
されてましたよ。
575 :
仕様書無しさん :01/12/02 05:45
昔、外注さんが「レビューしてっ」と言うのでソースを見た。 たしかこんなコードだった(ByC言語) p_ListIdx = (char *)malloc(1024); if (p_ListIdx != NULL){ return(-1); }else{ memset(p_ListIdx,0,1024); } return(0); そいつはその問題の箇所を抜けぬけとmalloc失敗時はエラーで復帰しますとぬかした。 って一体お前はどこの領域を使う気だ? お前のプログラムはBIOSもしくはカーネルなのか?と聞きたかった。 が、彼は3日でわが社を後にした。 最後に「君がいっぱいいっぱい割り付けたメモリ返してってね」 と言いたかったがやめておいた。 合掌
ベテランSEが作ったコーディング規約。 変数は全て大文字。 リークの危険が無いようにmalloc系関数は使用禁止。 まじで辞めたかったが、最後には規約を無視した。
577 :
仕様書無しさん :01/12/02 08:28
malloc使用禁止だったある職場。 単に使い方がわからない人がコーディング規約つくっただけだった、ということが 後に判明・・・・・・・・・・・・ char a[255]; a = malloc( 255 ); とか書いてて爆笑
>>570 '\0'の分はどうすんだゴルァ、ってことぢゃねーの?
固定変数領域はバグの素?
>>570 一続きの文字列として末尾のdmyを利かせるつもりなら、
アライメントのせいで途中にゴミが入るおそれがあるし。
>580 静かに同意。4byte alignment は基本だ(偏 しかし、そもそも char で確保しているのが謎。 二桁だから char date[2] とか、セコイ確保の仕方をすると サイズチェックとかが増えて逆に面倒なんだよなー。 全部 int で確保して必要な時は文字列に変換、だろ。
>>575 これって、このスレに書き込むほど酷いコードなのか?
ただの typo だろ?
>>577 仕様書無しさん wrote:
> malloc使用禁止だったある職場。
> 単に使い方がわからない人がコーディング規約つくっただけだった、ということ
が
> 後に判明・・・・・・・・・・・・
> char a[255];
> a = malloc( 255 );
> とか書いてて爆笑
っていうか、本当にそう書いてあったらコンパイラーがエラーだすはずですが。
>>578 ミ(゜◎゜)ミ ◆c2uMaIpA wrote:
>
>>570 > '\0'の分はどうすんだ剤戳、ってことぢゃねーの?
...。そんなマヌケなことしか思いつかないなら
いちからやりなおしたほうがいいのでは? (^^;
>>583 いやね、ある処理でmalloc使うほうがどう考えても効率的だって話になってね。
その規約作った現在サブリーダーの人がそのツール的関数担当することになって。
数日後、メールで「悪いけどどうしてもコンパイルが通らないのでちょっとソース見てくれないか」ときたメールの内容が、アレ。
凄いよ三○谷さん(ここ見ているはずねーから知人バレ(ww
>>585 577 wrote:
> その規約作った現在サブリーダーの人がそのツール的関数担当することになって
。
> 数日後、メールで「悪いけどどうしてもコンパイルが通らないのでちょっとソー
ス見てくれないか」ときたメールの内容が、アレ。
でもそういう程度の人間のをいちいち笑ってるやつって
ずいぶんレヴェル低いどれの同類にしか見えないが:)
>>586 > でもそういう程度の人間のをいちいち笑ってるやつって
> ずいぶんレヴェル低いどれの同類にしか見えないが:)
やっと自分のことを客観的に見られるようになりましたね。
>>587 仕様書無しさん wrote:
>
>>586 > > でもそういう程度の人間のをいちいち笑ってるやつって
> > ずいぶんレヴェル低いどれの同類にしか見えないが:)
>
> やっと自分のことを客観的に見られるようになりましたね。
はい。わたしはそういうことしませんので:)
>588 (^^; とか :) って笑いの意味が含まれると思っていたのですが 違う場合もあるみたいですね。
>>589 仕様書無しさん wrote:
> >588
> (^^; とか :) って笑いの意味が含まれると思っていたのですが
はつみみです。
>>589 それはフェイスマークでなく、文字化けか誤植に決まってます。
あの・・Kusakabe Youichiさんとはレスのやり取りしないでください >Kusakabe Youichiさん以外の人
593 :
ミ(゚◎゚)ミ ◆c2uMaIpA :01/12/02 11:13
>>548 > '\0'の分はどうすんだ剤戳、ってことぢゃねーの?
そんな文章書いた覚えねーですが。
悪いけど改竄しないでくれるぅ?
Kusakabe Youichiさんとはレスのやり取りしないでください >Kusakabe Youichiさん以外の人
おっと失礼。初めてお会いしたものでつい記念に。 それから>593の件は単に文字化けと思われ。
>>596 589 wrote:
> おっと失礼。初めてお会いしたものでつい記念に
はじめまして。
589=aho
/*NULLの場合は終了する*/ if (key == null) { /*エラー設定*/ Header.setErrUmu("1"); Header.setErrCd("0001"); /*自分を開放*/ this.finalize(); return applData;
自分の書いたコードを見直してたら、 int yeah, maonth, day; とあって、全部「yeah」で統一されていた。 恥ずかしいぜ、オウ、イエイ。
>>600 maonthにはつっこまないのか・・・?
602 :
仕様書無しさん :01/12/08 02:02
>>600 どうせなら、
「dey」で統一してほしかったな。
>>601 maonth は、500を書くときに間違えてました。
逝かなきゃ...
604 :
仕様書無しさん :01/12/08 02:06
世界的超優良企業のプログラム 1 C言語のソースの最後に#undefがひたすら並んでいた そのソースで定義されたマクロを全てundefするのが決まりです。 2 何百とある関数の全てが引数無し、戻り値無しvoid func(void); 値渡しはグローバル変数が基本
formatが全部fromatになってたことはあった
607 :
仕様書無しさん :01/12/08 02:29
.cファイルの中身がmain()だけで、それが3000行以上あるプログラムの 改修をやらされた。しかも構造体名、メンバ名はオール大文字で、マクロ みたいに見えて気持ち悪くてしょうがなかった。 COBOL出身のオヂサンがつくったプログラムらしかった。 あと、「モジュール」が"mojure"になってた…仏語かよ。 モンジュール!!
今Javaの仕事してるけど、みんなで出来のよくないVBみたいなコード書いてるよ。 画面に対しての処理が並んでるような・・・
609 :
仕様書無しさん :01/12/08 08:24
微妙にスレ違いだが、先週からプロジェクトに加わったC経験2年のやつの素晴らしい一言 そいつ 「なんかここのソース、へんなのばっかりですねえ」 (俺も派遣で、そう思ってた。ここの技術者のコードって外に見せられないような糞コードばっかり) おれ 「まあ、独特ではありますねえ」 そいつ 「この関数なんて、voidなのにreturn使ってますよ。これよくエラーでませんねえ」 おれ 「・・・・・
>>609 void関数を途中で抜けるときにreturn使うけど・・Cだよね?
>609 俺は void関数の返り値をチェックしているのを見たことがある・・・
612 :
仕様書無しさん :01/12/08 10:45
>>608 全部のメソッドと変数にpublic staticがついてないか?
614 :
仕様書無しさん :01/12/08 11:12
>>609-611 すると、
unsinsed int Hoge()
{
|
return -1;
}
くらいは、カワイイ方なのか?(鬱
CP/Mのころは #define void int だったからなあ。
(´-`).。oO(#define void char にしろという論議もあった気がする・・・)
>>615-616 public:
int func( void );
int func( char );
int func( int );
とかって書くと困りません?
In article
>>611 , 仕様書無しさん/611 wrote:
> >609
> 俺は void関数の返り値をチェックしているのを見たことがある・・・
「かえりち」って読むんですか? :)
In article
>>611 , 仕様書無しさん/611 wrote:
> 俺は void関数の返り値をチェックしているのを見たことがある・・・
In article
>>614 , 仕様書無しさん/614 wrote:
> すると、
> unsinsed int Hoge()
> {
> |
> return -1;
> }
> くらいは、カワイイ方なのか?
っていうか、どっちもコンパイラーが警告出しますね。
そんなんで喜んでいるようではかなり低レヴェルな...。
>>618 「ヘンリアタイ」って読むに決まってんだろ
>>619 ネタニマジレスシテルヨ、コノヒトキショイ
>>619 そりゃ、「unsinsed」ではコンパイラがエラーを返すだろうなぁ。
それで?
>>622 糞壁さんとしては、警告で済むというご意見のようです
typedef signed unsinsed;
In article
>>622 , 仕様書無しさん/622 wrote:
>
>>619 > そりゃ、「unsinsed」ではコンパイラがエラーを返すだろうなぁ。
「かえす」のですか? :)
In article
>>623 , 仕様書無しさん/623 wrote:
>
>>622 > 糞壁さんとしては、警告で済むというご意見のようです
それははつみみです。
In article
>>624 , 仕様書無しさん/624 wrote:
>
>>617 > CP/Mのころだって言ってるじゃん。
その時代のコンパイラーだって警告出しますよ。
>>628 Lintなら警告出すだろうけど、コンパイラーは出しませんね。
Warning.
In article
>>629 , 仕様書無しさん/629 wrote:
> Lintなら警告出すだろうけど、コンパイラーは出しませんね。
出しますよ。
In article
>>631 , bat/631 wrote:
>
>>626 > 返すけど何か?
貸してたの?
((( ⊂⌒~⊃。Д。)⊃ オマエCP/Mデコンパイラウゴカシタコトナイダロ
正直CP/Mが何かよく知らなかった。 そか、C言語でも関数のプロトタイプ宣言すら不要な時代の オペレーティングシステムだったんだね。 無知スマソ。
In article
>>634 , 617/634 wrote:
> 正直CP/Mが何かよく知らなかった。
> そか、C言語でも関数のプロトタイプ宣言すら不要な時代の
> オペレーティングシステムだったんだね。
オペレーティングシステムじゃないってば。
>>632 貸したから、返すんだろ。いちいち分かりきったこと聞き返すな、ヴォケ!
CP/Mとその当時のソフトウェア産業の状況もしらんくせに出しゃばるな儒子めが。
>>635 無駄な転送を行っております。不必要な引用は避けてください。
今まで見た中で一番のヘタレっぷりだな
In article
>>636 , 仕様書無しさん/636 wrote:
> 貸したから、返すんだろ。いちいち分かりきったこと聞き返すな、(I笠?X
文字化けしてますよ。
なんでエラーを貸したの?
In article
>>637 , 仕様書無しさん/637 wrote:
> CP/Mとその当時のソフトウェア産業の状況もしらんくせに出しゃばるな儒子めが。
でもオペレイティングシステムでもOSでもないですね。 > CP/M
In article
>>638 , 仕様書無しさん/638 wrote:
> 無駄な転送を行っております。不必要な引用は避けてください。
とか書くほうがよほど無駄ですね:)
In article
>>639 , 仕様書無しさん/639 wrote:
> 今まで見た中で一番のヘタレっぷりだな
ということにしたいのですね? :)
>>640 > なんでエラーを貸したの?
返して貰うために貸したんでしょ?
In article
>>644 , 梨/644 wrote:
>
>>640 > > なんでエラーを貸したの?
>
> 返して貰うために貸したんでしょ?
なんでわざわざ? > 返して貰うために貸した
利子でももらうのだろうか?
>>645 どうでもいいけど本物のアドレス別のに変わってるぞ
In article
>>646 , 仕様書無しさん/646 wrote:
>
>>645 > どうでもいいけど本物のアドレス別のに変わってるぞ
そういうのはにせものって言うのでは? :)
釣れた釣れた
お、活きのいい偽日下部が釣れたね。刺身で頼むよ。
脂がのってるんで、焙ります?
>>645 > 利子でももらうのだろう
貧乏人の発想力では、その程度が限界なんでしょうね:)
In article
>>651 , 梨/651 wrote:
>
>>645 > > 利子でももらうのだろう
>
> 貧乏人の発想力では、その程度が限界なんでしょうね
っていうか、もう何も思いつかなかったのですか? ;)
やばい。
意味不明なレスを返された時にどう対処していいかわからん。
>>652 ふつー、エラーから利子を貰おうと思う人はいませんね:)
In article
>>653 , 梨/653 wrote:
> やばい。
> 意味不明なレスを返された時にどう対処していいかわからん。
>
>
>>652 > ふつー、エラーから利子を貰おうと思う人はいませんね:)
え、貸した相手はコンパイラーだったのでは?
無関係の人からとりたてると法律違反ですよ。
無関係の人から取り立てるのはどの法律のどの条項に違反しているのですか?
>>640 ・文・字・化・け・し・て・る・の・は・、・あ・ん・た・の・コ・ン・ピ・ュ・ー・タ・の
・設・定・が・ま・ず・い・か・ら・だ・よ・
・2・ち・ゃ・ん・で・は・1・バ・イ・ト・カ・ナ・は・正・式・な・文・字・コ・ー・ド・だ・、
・A・A・が・存・在・す・る・限・り・な・。・
>>654 などをみてわかるように、
偽日下部が得意とするのは全文引用である
にせかべや ひまにまかせて だいしゃりん
>>657 “コンピュータの設定”て。
それは置いといても、もう少し勉強してから来た方がいい。
>>660 あ、おっぱいちゃんだ。
で、どんな勉強してるの?
662 :
仕様書無しさん :01/12/08 21:19
BOOL foo(void); 返り値 TRUE: 成功 FALSE: 失敗 ERROR: エラー もうどうにかして…
>>661 いろいろだよん。
>>662 Win にもあるし。
BOOL GetMessage(
LPMSG lpMsg, // メッセージ情報
HWND hWnd, // ウィンドウのハンドル
UINT wMsgFilterMin, // 最初のメッセージ
UINT wMsgFilterMax // 最後のメッセージ
);
WM_QUIT 以外のメッセージを取得した場合、0 以外の値が返ります。
WM_QUIT メッセージを取得した場合、0 が返ります。
エラーが発生した場合、-1 が返ります。
もうBOOLとは呼べない。
665 :
仕様書無しさん :01/12/08 22:45
VBで On Err Goto 何々: 何でErrやErrorだろが,おまけに最後の:(コロン)は何やと小1時間問い詰めたい。 あほうが多すぎ。
>>664 「BOLはBOOLであってブール代数とは関係ありません」がMSの見解かも。
訂正。
>>664 「BOOLはBOOLであってブール代数とは関係ありません」がMSの見解かも。
>>663 GetMessage() は似非 BOOL だけど、PeekMessage() は本当の BOOL (エラーは帰ってこない)
なんだよね。PM_REMOVE を指定すると GetMessage() と似たようなものだと思うんだが、謎だ。
はっはっは。 うちのプロジェクトには8,000行オーバーのクラスがあるぞ。 その他にも4桁のクラスが目白押し。たぶん100以上ある。 しかも、そんなクラスですも、メソッドは2~3個。 ダレカタスケテ・・・
ですも -> ですら 書き忘れた。 いちおうJavaです。だれもオブジェクト指向なんて理解してないでしょう。
ホワイトスペースとTABが混在しているソースコード
ホワイトスペースとホワイトベースが混在しているソースコード
ホワイトソースとホワイトスペースが混沌としているン─スコ─ド
674 :
仕様書無しさん :01/12/09 12:56
全角スペースが入っているけどたまたまコメントだったのでコンパイル通って ラッキー,なソースコード。
675 :
仕様書無しさん :01/12/09 13:10
漏れ、全角スペースでコンパイルが通らず、 一時間ぐらい悩んだことがある。
676 :
仕様書無しさん :01/12/09 13:19
秀丸とかで全角文字表示やってないやつが、たまに陥るな あと、何度いっても /* ~~~ /**/ ~~~ */ は無理っていうのが理解できないやつもいる
In article
>>676 , 仕様書無しさん/676 wrote:
> /*
> ~~~
> /**/
> ~~~
> */
> は無理っていうのが理解できないやつもいる
昔はそれをできるようにするローカルな拡張があるコンパイラーが多かったですね。
まあ、いまは「//」を使えばいいので、そんな機能があるコンパイラーも減りましたが。
678 :
仕様書無しさん :01/12/09 14:27
>>677 > 「//」を使えば
何がよいのですか?
コメントのネストで悩まないで済む。
In article
>>678 , 仕様書無しさん/678 wrote:
> > 「//」を使えば
> 何がよいのですか?
意味不明な質問ですね。
In article
>>680 , Kusakabe Youichi/680 wrote:
> 意味不明な質問ですね。
そういうことにしたいのですね。
682 :
仕様書無しさん :01/12/09 15:02
組み込み向けコンパイラでは、いまだもって コメントとして"//"が使えないものもあります(泣
>>676 コメントを色付きで表示してくれるエディタなら問題なし
In article
>>682 , 仕様書無しさん/682 wrote:
> 組み込み向けコンパイラでは、いまだもって
> コメントとして"//"が使えないものもあります(泣
まあそれは標準規格に適合していないっていうだけのことで。
In article
>>684 , 仕様書無しさん/684 wrote:
> コンパイラって、何のコンパイラ?
民明書房ソフトウェアのだしてる角度付きのやつです:)
>>686 民明書房は武闘本と歴史本以外に技術書も出していたのか。
688 :
仕様書無しさん :01/12/10 17:04
ところでさ。 mallocってみんなどう読んでいる? (1)エムアロック (2)まろっく (3)えむえーロック 俺は(1)
>>688 まろっく、りあろっく、きゃろっく、あろっか
(四段活用)
691 :
仕様書無しさん :01/12/10 17:51
俺はエムアロック、シーアロック、リアロック派
>>688 (4)えむ あろぅく
て読んでたけど、周りが (2) の読み方をしてたので、
いつの間にかうつった。
693 :
偽ASIMO :01/12/10 18:15
えむぁーろっく
>>607 爆笑してコーヒー吹き出してしまった。
モンジュール!
ころっけ
そうか・・・「まろっく」も結構呼ぶんだな。ありがとう >>返答者ALL ここの職場、今までの読み方が尽く通じないから、またネタかと思ってたのだ。 通じない呼び方の例: define(デファイン) ・・・デフィン cording(コーディング) ・・・コーフィング debug(デバッグ) ・・・デバッガ 単体テスト ・・・単独テスト simulate(シミュレート) ・・・シュミレート LANケーブル ・・・LAN線(らんせん) Virus Baster ・・・ウイルスチェッカー Header File ・・・ヘッダソース Compile ・・・結合(けつごう) 漏れはmemory allocateだから、「えむ・あろっく」と呼んでたんだが。 ん。memcmp, memmove, memcpy は「めむ・~~~」って呼んでるから、 「めむ・あろっく」のほうがいいのか?
>>696 とにかく可能な限り字面どおり読む。発音が困難なら母音を無理やり入れたりするが。
memcmpは「めむこんぷ」
strcpyは「すとらこぴー」 (苦しい)
mallocは「まろっく」
charは「ちゃー」
cronは「くろん」
masmは「ますむ」
だなあ。
698 :
仕様書無しさん :01/12/10 19:41
>>697 charは「シャア」
と読みますが、なにか?
つまらん
700 :
仕様書無しさん :01/12/10 20:20
私が始めた頃は、C++だったので、 先輩達は使ってたけど、俺はmallocは使罠買ったよ。
701 :
仕様書無しさん :01/12/10 20:37
× 使罠買った ○ 塚得な狩った
702 :
仕様書無しさん :01/12/10 21:40
memcmpは「ねむこんぷ」 .は「ぽち」 (main.c -> メイン ぽち しぃ) そう教育されましたから まちがってる?
sysVはなんて読む?
704 :
仕様書無しさん :01/12/10 22:02
よみかた、なら子熊ちゃんが面白かった。 >sysV ば、バルタン…
main.c -> メイン しぃ 暗黙の「.」が解らん奴に用はない。
>>697 俺の読み方とすべて一致!!あんた俺か!?(藁
文殊~る! (<< やめい) .は「ぽち」って読まにゃ。やっぱ。 ~ ←「にょろ」「へにゃ」 ^ ←「ぼうし」 * ←「ぴか」 = ←「げた」
/ : すらっしゅ // : すらすら
; ←「汗」 (w
mallocの読み方とstdio の読み方の組み合わせで相関が見られそうな。 「めもり・あろっく」と「すたんだーどあいおー」 「まろっく」と「すたでぃお」 ってな具合に。 # 誰かの煽りが入りそうな話題だがみなさん大人の対応を
すっかり牛レスだが
>>696 cordingって、codingのこと?
>>697 mallocは「まろっく」->えむ・あろっく
以外は一緒です
ちなみにstdio.hは すたでぃお・えいち
//の すらすら は疑問無しで読んでました。
In article
>>712 , 仕様書無しさん/sage/712 wrote:
> ちなみにstdio.hは すたでぃお・えいち
...
714 :
仕様書無しさん :01/12/12 23:06
えすてぃーでぃーあいおー 今の派遣先の大半の人は、スタディオって呼んでるね
>>710 「まろっく」と「えすてぃーでぃーあいおー」
716 :
仕様書無しさん :01/12/12 23:19
echoは えちょー ですよね、きっと。
echo 延長。 ‥まだやるのか。このデスマーチ‥
718 :
仕様書無しさん :01/12/13 00:22
>* ←「ぴか」 ってすてき☆ おいらも使おう。
719 :
仕様書無しさん :01/12/13 00:52
ていうか、今の職場の30代の人、「バッチファイル?へえ、そんな便利なものがあるんだね」とか 言ってて萎えた。
720 :
仕様書無しさん :01/12/13 01:32
>>719 マジっすか?
30代の営業?
SE?
いくらなんでも、PGじゃないよね?
721 :
仕様書無しさん :01/12/13 01:34
MCのプログラムを打ち込む ↓ 帰りがけに自動運転&自動電源遮断 ↓ 翌日出勤 ↓ MCを見る ↓ キリコしか無い・・・・。 ↓ 素材を全部削って何も無い ↓ ・・・・・・帰って寝た
722 :
仕様書無しさん :01/12/13 01:34
つまらなすぎる
return malloc(-1);
724 :
仕様書無しさん :01/12/14 00:35
char は「ちゃら」じゃないのか・・・俺の地方だけ?
725 :
仕様書無しさん :01/12/14 00:42
かー
ちゃる
ASPで、 Go To L1 Sub CalcSums(arrKingaku) (中略) End Sub L1: とやってるベテランPGが・・・・・ もう、GOSUB じゃないんだからさあ・・・・
728 :
仕様書無しさん :01/12/14 02:58
>>727 ASPってgotoつかえないんじゃなかったっけ?
>>1 1つのソースファイルのサイズが1Mを超えていたとき。
そして.cファイルをinclideしていたとき。
既存のソースのコメントやインデントをすべて自分流に直すプログラマー萎え。
732 :
仕様書無しさん :01/12/14 20:15
コメントやインデントぐらいいいじゃないか デバッグしやすいように、わざわざ関数の戻り値を変数に入れて条件分岐させてreturnで 返しているのを、C++風だか何だか知らんが1行判断文にした上、それをreturnに放り込んで 「見やすくしました!」 と有無を言わさずサーバーのファイルを書き換えまくったやつを知っているよ
WORKING-STRAGE SECTION. 01 OUT-REC PIC X(80). 01 ICHI. (略) 01 NI. (略) 01 SAN. (略) 01 YON. (略) 01 ITTUTTU. (略) 01 ROKU. (略) PROCEDURE DIVISION. (略) WRITE OUT-REC FROM ICHI. WRITE OUT-REC FROM NI. WRITE OUT-REC FROM SAN. WRITE OUT-REC FROM YON. WRITE OUT-REC FROM ITTUTTU. WRITE OUT-REC FROM ROKU. COBOLプログラム&40歳以上のCOBOLer氏ね。
>>732 しかしそいつの触った全ソースのコメントから"/* */"がすべて排除され
"//"オンリーのソースになってるのを見ると、こいつ先にもっと別のこと
やれよ!とか思うわけで。
結果はともかくコードの可読性をあげようという意志のあった732の言うやつ
より何を考えてるのかわからんよ。
>>735 "/* */"を"//"にするのは十分意味があるとおもうけど
作業の優先順位とかは無視してだけど
>>736 それ、もちろんプログラム書いて処理したんだよね? 手作業で書き直していたら、とりあえず
氏んでもらう。
In article
>>737 , 仕様書無しさん/sage/737 wrote:
> それ、もちろんプログラム書いて処理したんだよね?
> 手作業で書き直していたら、とりあえず
っていうかそんなののために「プログラム組んで」るほうが馬鹿だな:)
(手作業より偉いとかいってるレヴェルでもうおしまいでしょう^^)
プログラムなんかくまなくても一発でできるでしょうに。
739 :
仕様書無しさん :01/12/15 02:14
キチガイ登場。
>>736 そうか?
単なる趣味の問題かと思うんだが。
どこらへんに意味が?
>>737 もちろん手作業です。
一生懸命なおしてる姿には思わず涙が出そうになりました。(T T)
741 :
仕様書無しさん :01/12/17 11:05
#define E extern #define C char #define UC unsigned char #define C2 short #define UC2 unsigned short #define PC (char *) #define UPC (unsigned char *) #define I int #define UI unsigned int #define L long #define UL unsigned long #define HEX16 0x #define DEC10 (0+) もー腹よじれたね。 例: a = (I)HEX16820; b = (L)DEC10921;
In article
>>741 , 仕様書無しさん/741 wrote:
> #define HEX16 0x
> #define DEC10 (0+)
>
> もー腹よじれたね。
> 例:
> a = (I)HEX16820;
> b = (L)DEC10921;
実際どうなるか試してみましたか?
モチロソ。 先輩が「コンパイルエラーがとれん!」 とかいっているソースのこと
744 :
仕様書無しさん :01/12/17 13:19
コメントとかインデントとかは普通 indent を通しませんか。 いちいち直すというレベルでもないような気が。
ネタじゃなかったのか...
746 :
仕様書無しさん :01/12/19 05:57
あげるね
747 :
仕様書無しさん :01/12/22 09:28
嫌々派遣に出された先のA社での話。 そこの客先のB社からこのソースを改修してつかえという指示あり。 一見とてもきれいに書いてる。が、内容がイミフメ。 変数名や関数名が少しずつ違っている同じソースが2つずつ数十KBある。 これらをまとめただけでも、ソース量は2/3になりそうだた。 また、データブロック(不定長)をバイト単位で挿入したり、削除して空いた部分を 後ろのデータを前詰めしたりするのだが、データブロック長の計算を奇妙な方法で行っていた。 奇妙な計算方法というのは各データのサイズを別にdefineして足し算引き算をする。 sizeofを知らないのか?元のソースを書いたC社? 構造体を使ってsizeof使えば、さらにソースはその2/3くらいになりそうだった。 B社からはかな~り納期が迫った時点で元のソースの//をすべて/* */に直せとお達しがあった。 そうでないと品菅がうんと言わないとか。デバグで修羅場のときにそんなんするか。 そんな大量にコメントを置き換えたら、作業ミスで何がおきるかわからんのに。 #A社はあほの○○工場系
#A社はあほの○○工場系 ->B社はあほの○○工場系
「XMLを操作している」というプログラムが、 DOMツリーをいじるんじゃなくて、 Stringを切ったり張ったりしていた。
751 :
仕様書無しさん :01/12/22 14:14
一つの関数で SELECT CASE 数千ステップ(10個以上ネストあり) CASE が意味不明のコメントとともに続いてた時 全部消して作りなおしたかった
1 クラス 1 メソッド、5,000 コードステップ。 1 クラス 3 メソッド、7,000 コードステップ。
JSP の中で String 使ってシコシコ HTML を作ってた。 最後に out.print(html) してた。
754 :
仕様書無しさん :01/12/22 15:39
main(){ return 0; } ってどうなの? gccはなにも言わなかった。
プロジェクトで作ったソースから grep で「思う」を検索したら 80 件近く引っかかった...
756 :
仕様書無しさん :01/12/22 16:02
>>753 ASPで同僚が似たようなことをやっていた。
うっかり真似したら大変なことになった。
758 :
仕様書無しさん :01/12/22 16:28
>>754 C++だったら,クラス作ってそのコンストラクタだけで結構な処理できるぜ
メインは空
コンストラクタが5000ステップって奴を遊びで作った事有る
Java使いなのに、C/C++で書かれた製品の動作が遅いからと高速化チームに 投入されたときのこと。(この時点でかなり問題あるよ…) 全部で5万行くらいのコード全体に #ifdef DEBUG がちりばめられ、チェック用のコードが大量に囲まれておりました。 DEBUGの定義は、たしか #define DEBUG 0 みたいな感じになっておりました。 readme.txtには 「リリースするときは DEBUG の値を 0 にしてください」 みたいなことが書かれておりました。 Cは今でもよくわからん私ですが、かなり高速化できました。 とても感謝されましたです。はい。
761 :
仕様書無しさん :01/12/24 04:08
コンパイルに50分ぐらいかかるので、ちょっとした機能分けに #ifdef DEBUG とかでデバッグを有効にしてテストして通ったらコンパイルスイッチを外して・・・という 効率悪すぎな作業をしていたチームに入った。 なんだ、これなら最初に入力するデバッグ用のキーを2種類にしてフラグ立てればすぐじゃん・・・と 改良! するとリーダーが一言。 「A君、なに無駄なことやっているの?えっ、まさかコンパイルオプションの存在をしらないの?」 アホとはやっとれん。。
>>758 デストラクタはありますか?
無ければ関数として使ったに等しいのかな?
763 :
仕様書無しさん :01/12/24 08:46
インタフェースがすべて対話型。 こんな感じで作れと・・・ $ ./a.out 入力ファイル名:xxx 出力ファイル名:yyy 処理を開始します。 処理中です。しばらくお待ち下さい。 処理が終了しました。
764 :
仕様書無しさん :02/01/09 15:42
> バッチファイル?へえ、そんな便利なものがあるんだね makeを知らないアフォよりひどい
765 :
仕様書無しさん :02/01/14 07:47
o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / クーソーは、 / / 頭のコヤシです。 / / / / 「遊び」をクリエイトする / / 株式会社765 / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ^∀^) / /(^∀^ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)大円団モナ
766 :
仕様書無しさん :02/01/14 08:51
派遣PGの作ったASPで x=i dim i dim x いったい何がやりたいコードなのやら。 コード全体がこんな感じで悲惨な状態。 引き継いだMさん。ご愁傷様です。
>>761 それ以前に、「コンパイルに50分ぐらいかかる」と言うのがおかしい
と思うが...。(分割コンパイルとか make とか知ってるよね ?)
>>767 それ以前にその元ソースがとんでもないスパゲティーのような気配が…(w
>761 そもそもどんな開発環境でやってるんだろ・・・・UNIX系ならともかく、 最近の開発統合環境で50分もかかるコンパイラって・・・・ そんなクソ長いソースを開けるエディタがすごい(藁 100万行でも無理ちゃう?<50分
>>767 #define DEBUG
が各所にちりばめられていて全部コンパイルしなおすハメになるのでは。
>>769 こそ分割コンパイルやmakeを知らないと思う。
10行のエラー処理が各関数についているのだが、エラー処理がコピペで何百も続いている。 移用されている関数20個X10行のエラー処理=200行。 エラー処理を関数にまとめると、 使用されている関数20個X1行のエラー処理=20行 に縮んでしまった。 わーい、すごい圧縮率!と喜んでいたら、同じようなソースがあと5万行以上はあるのを発見してしまった。 鬱。
773 :
仕様書無しさん :02/01/15 02:03
新人の頃、アボーンなプログラム引き継いで短くしてやったら怒られた。 …理由、「1行いくら」だからナルベク長くなるように書けだって(鬱
>>773 俺も昔、ソースの行数が見積もりの数パーセント以内の誤差で
ならなければならないらしくて、
ループを展開したりして、行数を調整しろって指示を受けてた。
775 :
仕様書無しさん :02/01/15 02:22
ソースじゃないけど、バッチで何件TRがあるかわからないのに 全件更新し終わるまで、コミットしない設計書を見たとき。 #ロールバックセグメントがパンクしたらセグメントを拡張するんだってさ。
>>775 そしてロールバックセグメントのパンクが怖いので常にコミット
を投げてしまう罠
>>766 似たようなコード見たことあるよ。VBSだけど。
Option Explicitが使えないという罠を併発していたけど、勘弁してほしい。
つーかそいつ、さっき新人に「VBSは変数を宣言しなくていい」とかほざいていた。
氏んでくれ‥‥‥
778 :
仕様書無しさん :02/01/15 20:30
>> 777 同意、これって良くない、バグの元、習慣的にも良くない。
>>777 「VBS は変数を宣言しなくて良い。」だったらわかるけど、
「VBS は変数を宣言しなくて イイ!!」だったら寒いな。
つ~か、初期化もしてない変数同士で代入をしてどうするのだろうか?
アンニョンハセヨ~
char *a; (int)a += 5; 何がしたいのかわからん。
783 :
仕様書無しさん :02/01/20 15:11
VBで漢字(日本語)で変数書くとダサいとか間抜けとかいうヤツ多いけど、 それならスペルミスやローマ字さえ使えないお前らのほうがダセーだろ、と思う・・ 漢字使うのそんなに変か? 変というヤツは多いが、ダサい、ぐらいの理由しか言わないからなあ
>>783 ダサいとは思わないけど、コードメンテするのが日本人とは限らないから。
** コノプログラムニワ シヨウシヨハアリマセン. ガンバツテ カイドクシテネ!! IDENTIFICATION DIVISION. (以下略)
>>784 コードメンテするのが日本人と限らないなら、コメントも日本語ダメじゃ
ん。(もちろん、仕様書も)
>>783 本質的には、識別子だけ日本語にしてもねぇ...、と思っていたが最近 SQL 触り
だしたら、結構日本語のフィールド名とか違和感なくなってしもうた。意外に食
わず嫌いと言うのが本当のところじゃないのかな。(あとちょっと入力が面倒だし)
でも、よく考えたら英語圏のプログラマーって以前からこういう感覚なんだろう
な。ちょっとうらやましいぞ。
>>783 英語版Windows用に変更してくれ、なんて言われたら悲惨。
英語版VBでコンパイルしないといけないんで、ローカライゼーション
どころではなくなってしまう。
ちなみにAccessで漢字のフィールド名使ってる場合も同じく悲惨。
意見サンクス
>>784 >>786 >>787 皆さんの意見はまっとうで、反論の余地はないですね。
でも、現実問題(漏れの周りだけかもしれないが)仕様、プログラムの目的とかを無視して
「日本語使ってんのか?お前ダサすぎるぜ!」って言うのが多いんですねえ。
確かに「もし外人がコーディング引き継ぐとなったらどうするんだ!」と言う人もたま~にいますけど、
それなら
>>786 さんの言うように「じゃあコメントは?仕様書は?」と言い返したら「それはなんとかなる」とか
ワケの判らない返答をする。
つうか、外人が引き継ぐとしても、例えばDBのキー名が「HHISSND」となっている、「発想履歴情報」という
項目の変数名を HHisSnd とキー名そのままにしているより「発想履歴情報」にしている方が、調べる手間が省けると思うんだがなあ。
仕様変更でキー名変更になった場合も、日本語による単語の変換のほうが誤変換少ないし(一概にはいえないが)
VBとかだと、自動メンバ表示で . を打てば構造のツリーが出るから打つのが面倒ってのも理由にならないし。
つかね、うちの会社の人間だと HsRirekiJyoho とかいう変数にするんだよな(w
外人にとってはローマ字も酷じゃねえの?と・・・
はあ、愚痴スレに書くべきだったかも。ということでさげ
789 :
仕様書無しさん :02/01/20 22:30
キー名はEUCでしょうか、それともSJISでしょうか。
ms932
変数名の頭に必ず自分のイニシャルつけるやついるんだけども・・・。
共通変数にて(VBとOracleのOO4Oを使用) Stra = Val(Orafields(0).Value)
書いている途中で送ってしまいましたすみません。 Str1 = Val(Orafields(0).Value) Str2 = Val(Orafields(1).Value) : Int1 = Val(Orafields(4).Value) 何でもかんでもVal関数を使っている。中にはABC00Aのような コードになっているのもあるのでこれを使うと…。(涙)
794 :
仕様書無しさん :02/01/25 15:27
おいおい、グローバルで仕様するヘッダー内で変数宣言すんなよ。 externって知ってる?
仕様→使用の変換ミス。鬱だ氏脳・・・・・・。
// テーブルがnullだったら初期化する if ( pTable == null ) { pTable = null; }
797 :
仕様書無しさん :02/01/25 15:40
>>796 コンピュータは信用できないからね。
念のためだよ。念のため。
798 :
仕様書無しさん :02/01/25 15:58
>>788 外人に渡すソースコードなんて
関数名がsushi()とかgeisya()でも問題なし。
800 :
仕様書無しさん :02/01/25 16:47
>>799 大丈夫です。nimda()は駄目です。
>>794 あんたも、五十歩百歩のような気が、、、
>>798 kichiku_beiYeah()
はどうですか?
>>802 kusakabe_Youichi();
に見えた
>>803 kusakabe_youichi(chr * in_word){
return(gen_dares(););
}
>>801 ああ、すまんかったよ。
「宣言」じゃなくて「定義」だって言いたいんだろ。
グローバルで仕様 !!??!
declare @suryo001 decimal(13,5), @suryo002 decimal(13,5), …, @suryo372 decimal(13,5) あのー、ファイルを開いた瞬間やる気が一気に-∞になったのですが、 このファイルだけこういう書き方されている特別な理由があるのでしょうか? 罰ゲーム?(TдT)
SELECT TBL_SYSTEM_DATA_1.foo TBL_SYSTEM_FILE_1.hoge FROM TBL_SYS TBL_SYSTEM_DATA_1, TBL_FILE TBL_SYSTEM_FILE_1 WHERE ... 自称A級SQL使いの先輩のソース。 省略するやろ普通・・・
ビューのクリエイト文の末尾でCOMMIT。(オラクル)
age age
guest guest
#define retrun return
814 :
仕様書無しさん :02/01/30 20:02
↑ #define RET return #define EXT exit #define EXT2 extern なら知っている
815 :
仕様書無しさん :02/02/01 12:45
会社で見たわけじゃないけど。某誌に出てたWin16→Win32の移植の記事 に付いてたリスト。ほぼすべての行に突っ込みたくなった。 struct ffblk fat *Top,*p; Top = (struct ffblk far *)GlobalAlloc( ...*10000 ); //×Win16ではこれは使えなかった //○Win32ではこれでよい p+=sizeof(struct ffblk)*8000L; //○Win16ではこれが正しい方法 //×Win32では間違い p=MK_FP(FP_SEG(p)+FP_OFF(p)/16+(int)((sizeof(struct ffblk)*8000L)/16), FP_OFF(p)%16+(int)((sizeof(struct ffblk)*8000L)%16)); //単純なポインタ操作の例 p++; この様な操作は問題ない #ifdef __WIN32__ #define FixPointer(p) p #else LPSTR FixPointer(LPSTR p) { return (LPSTR)MK_FP(FP_SEG(p)+FP_OFF(p)/16,FP_OFF(p)%16); } #endif //これを P=FixPointer(p);のように使う。 long SubPointer(char far *a,char far *b) {//Win16の場合はこれが正しい return ((FP_SEG(a)-FP_SEG(b))/8)*0x10000L+FP_OFF(a)-FP_OFF(b); } long SubPointer(char *a,char *b) {//Win32の場合はこうなる return (long)a-(long)b; }
そういや、ソース内に会社の内部情報が書かれてたってことがあったな。 すでに何世代も管理されてきたソースコードだったんで、今で言うと 2ちゃんねるのスレッドのようなコメントになってた。 しまいにゃ /* こんなとこにコメント書くと思った? */ /* 俺読んだ。よってぺたぺたと足跡 */ /* 今日昼飯なんにする? */ こんな駄スレも、、、
fax出すと原稿まで電線に乗っで相手に行くと今だ思って 必ずコピーとってからfax出す社長がいる。
818 :
仕様書無しさん :02/02/01 19:35
↑日本語と漢字の勉強をしようね。
monthly_sum = 0; d = 0; while( 0 ){ /* 集計処理 */ monthly_sum += v[d]; d++; if( d >= cal_table[m] ){ break; } } こういうソース書いて、全然集計されない!コンパイラのバグだぁっ!って叫んでたヤツと同じプロジェクトになったとき。
変数宣言 CHAR(もしくはval) モデル 入力(数値) a b c while(並び換えている間中){ call A call B call C } 出力 a' b' c' sub A{ if(組み合わせ6個のうちの一つ) then a'=a if(組み合わせ6個のうちの一つ) then a'=b ・・・ } sub B{ if(組み合わせ6個のうちの一つ) then b'=a ・・・ } 数が増えたり、動的の時は、DBに一時書きこんで、読みなおすんだって。
821 :
仕様書無しさん :02/02/02 18:27
822 :
仕様書無しさん :02/02/02 18:29
823 :
仕様書無しさん :02/02/02 23:58
>>810 甘い。SQL*Plus での DML, DDL, SQL*Plus命令文("set def &" など)
PL/SQL ソースファイルのコンパイル・・・いずれも作業後は礼儀
正しく COMMIT を行うのが常識(藁)。
class Hoge{ public Hoge(){ ・ ・ Boke boke = new Boke(); ・ ・ } public static void main( String args[] ){ Hoge hoge = new Hoge(); } } class Boke{ public Boke(){ ・ ・ ・ } } なんかコンストラクタで、すべての処理やってんですけど・・・(Java)
>824 コンストラクタで無限ループ(メッセージ受信かなんか)を しているのは見たことあるがナ。 VBのForm.Loadとかと勘違いしているのではないでしょうかねぇ。
前にVBで作った通信ソフト(24時間動作)は、無限ループで動いてた(謎 ・・・チトビビタ。
827 :
仕様書無しさん :02/02/04 17:02
/* ここ問題あるかもしれません ○本 (´-`).。oO(仕様だけに{しようがないかも}) */ こいつを殺して僕も死のうかと思いました。
828 :
仕様書無しさん :02/02/04 17:04
829 :
仕様書無しさん :02/02/04 19:05
VBのソースで、データにエラーがあると永久ループに陥る 作者いわく「細部まで練りこまれたプログラム」
バグが練りこんであります
>>829 お呼びですかあまりひどいことを言うと法的手段に売った絵描けますよ
832 :
仕様書無しさん :02/02/05 20:35
>831 どんな絵?描いてみせてよ。
>824 新人研修でやったなそれ。
Perlで書いてあるCGIの修正を頼まれたので、 #usr/local/bin/perl #include <studio.h> #include <stdlib.h>・・・(以下略) #define kMaxValue hogehoge #define kMaxAccount hogehoge ・・・(以下略) こんなんを50行くらい延々と連ねてアップ。 延々と考え込んでいたアフォ上司に辞表を叩き付けました。
836 :
仕様書無しさん :02/02/06 21:04
最も驚愕したgotoの使い方。しかもインデントも異常なほどバラバラだった。 for( .... ) { if( .... ) { labelA: } } . . . if( .... ) goto labelA; さらに元ねたがあったのかあっちこっちのプロジェクトに同様のコードが・・・。
>>836 俺は逆にそういうコードを書かされそうになったことがある。
ループの中にとびこむフローチャートを渡された・・・
今時フローチャートってとこもあれだが
Option Explicit(宣言なしでの変数利用を禁止)が使われていないVBのプログラム...。 書いたヤツは関数というものを知らないのか、はたまた2ちゃん常駐のDQN者なのか、 似たような処理をコピペしまくり。 だが、ラベル名や変数名を直すのを忘れてて、しかも、それが関数の戻り値への代入 だったりするが、Option Explicitなしだと別の変数領域が自動的に割り当てられる から、コンパイルエラーは出ない。 だが、実行時の関数の戻り値は不定。 あとTYPO(数字の'0'とある英文字の'O')を間違えてるとか、スペルミスなどのスパイス も少々。 たとえIf~Else~End IfステートメントでFunction値を返さないパスが存在したとし ても、VBは害務省官僚並みに賢いので、ワーニングエラーといった余計な報告はしない。 さらには、ローカル変数や変数の引数渡しで済むようなものまで、グローバル変数 使いまくり。 しかも、そのグローバル変数名が「N」とか。(T_T) どこで使われてるか調べるため ソース検索しても、余計なとこで引っ掛かりまくり。 もちろん、変数にコメント などは一切なし。 しかし一番DQNなのは、これまで見かけ上動いていたというだけで、そんなクズプロ グラムを高く評価しているクライアント。
お、リファクタリングの腕の見せどころか? まずは、変数名を置換して、関数名を付け直して、 クラスを導出。 ぐあー、やってられるか、書き直しじゃあ。
840 :
仕様書無しさん :02/02/07 02:26
>>838 前に派遣でいった会社に、そういう人がいたっけなあ。
そこ、VB始めて3週間~1ヶ月という人がゴロゴロしてて、経験半年の俺が
めちゃくちゃ優遇された。(業務経験半年、趣味で1年半使ってた)
dim aaa(20000)
とか平気でやっとるから、redimの存在を教えてやったら
rec = get_rec(filehoge)
redim aaa(rec)
とか意味ねーことするから、preserveを教えてやらないといけない始末とか。
で、そこに
>>838 みたいな人がいた。本人曰くVBはかなり出来るということだったが、
見ると関数はform_load1つでgotoとgosub使いまくり。frmのソースの頭にdimで変数宣言、NとかIとかA1とかA100とかで
合計300個オーバー。
他の人の担当分をサポートする余力がなく、それぞれ任された部分をやるのに必至。一人、ペースが遅れている人がいるので
サポートしてやって・・・という立場でスタート。ソース見て唖然。そして報告「これ1から作り直さないとヤバいですよ。」
2週間後、その人(社員さん)はクビ(爆)、漏れの1ヶ月契約が半年に延びてそこの担当となって作り直し。
最終的にはそこのチームの一番負荷の高い画面を担当することになり、結局2年ぐらいそこでVBやってたさ。
同じような人はいるもんだねえ・・・
そのDQNがクビになった理由は ・そいつが作ったプログラムは、MDBのテーブル10個ぐらいから SQL使って情報読み取り、条件比較して起動、の処理が 2分ぐらいかかっていた。 つまり実行して画面が出るまで2分。 社長にも「なんとかできないのか」と言われてたが本人は「これがVBの限界です」と解説。 SQLでJOIN一切なしで、しかもrecordsetの使い方最悪で、1000件必要なら1000件一気に 取ってくるrecordset使うのが常識なのに、条件1つずつで1000回ループとか平気でやっている始末。 漏れが組みなおすと、わずか6秒ほどで画面起動。 社長が改めて「どういうことだ」とその人に問い直すと「かなり高等な技術を使っているのでしょう」と言う。 俺に説明を求めてきたので、全社員(6名ほど)の前で説明。 その人「へええ、凄いですねえ。そんな方法があったのかあ。」 ・動きがおかしい。仕様を見ると、条件文の組み合わせどおりに動いてない。 調べていくと、日本語の解釈がかなり変。 ・そんなこんなで、実は過去に2回ほど”お荷物”になっていたようで、その時の失態がきっかけで社長に ボロカス言われたら、翌日から出社拒否(w で、クビ。
strcat(strcat(strcat(strcat(buffer, str[0]), str[1]), str[2]), str[3]); これだけでもかなりアレだが、何を思ったか strcat(strcat(buffer, str[0]), strcat(strcat(str[1], str[2]), str[3])); みたいに書き直してメモリぶっ壊してたヤツ。
このスレ見てると、自分は恵まれてるなぁと思う。 ネタとしか思えないようなソースがイパーイ。 でも、このスレにあるようなソースが世間に出回ってると思うと怖い・・・
ソースが出回っているというより、こんなソースで作られた 製品(携帯電話とか携帯電話とか携帯電話とか)が出回っている、 今自分が使っているもの(携帯電話とか携帯電話とか)もそういう ソースでコンパイルされた、と思うと怖くなってきますな
hashtableには、数字のみで構成された文字列が入ってる。 それを取得して、intに変換する。 int i = (new Integer((String)hashtable.get("key"))).intValue(); まぁ、このくらいなら、可愛いもんだね。
847 :
仕様書無しさん :02/02/08 15:12
>>846 うわ、漏れそうやってるよ、ダメなのか…
ちなみに正しくはどうやるん?ウザくなければ教えて( ゚д゚)ホスィ…
>>840 ゴキブリ同様、ひどいプログラマがどこにでも居るのは、仕方のないことかもしれんけど、
あなたはまだマシな方だと思うよ。 だって、派遣先の会社は、あなたの説明をちゃんと
聞いて、見合う費用も出してくれたわけでしょ。
上で書いたのはネタでもなんでもなくて、今まさに俺が手直ししてる、ある保険会社の
営業支援ソフトのソースの一部なんだが、
>>838 で挙げた以外にも、数値を入力するテキ
ストボックスに数字だけでなくアルファベットも入るし、入力のエラー判定が中途半端
だから、プログラマが想定していない順序でデータ入れたりすっと、エラーでプログラム
が簡単に落ちてしまう。 タブオーダーの設定に至っては、てんでバラバラ。
あと、テキストボックスに「複数行入力」のプロパティが存在するのを知らないらしく、
行末の改行コードを取り除くためにわざわざ ...
Private Sub TextBox_Change()
Dim n As Integer
n=TextBox.Text
TextBox.Text=n
End Sub
とかやってる。(それも全部そうしてるならまだマシだが一部だけ。 当然、コントロール
配列なんてものも知らないようだ)
同じ会社の依頼で前に修正したソフトなんぞ、顧客からソース一式(やはりドキュメント
はなし)渡されて修正して送ったら、元のバージョンと動きが違うと言われて、調べたら
最新版として貰ったソースの一部が古いバージョンだった。(T_T)
結局、既に一回修正したとこを、差し替えたソースに反映して、再度動作検証やり直した
わけだが、その作業で余計にかかった分に対する追加支払いはなし。
しかも、VB6がリリースされて久しい(つぅか、次のバージョンがもう出る)ってのに、
開発環境はVB5指定だよ。(旧バージョンはVB4で開発)
俺はVB6での開発を強く薦めたが、社内の他のアプリとの整合性の問題があるからってんで
結局こうなった。 ちなみに開発環境はVB5指定だが、なんとWindows XPでの動作確認って
のが開発要件に入ってる。
こっちはVB5を指定されたお蔭で、今回の開発中に2つの大きなバグで悩まされた。(1つは
Active-Xの使用とコード最適化に絡むもので、VB5のコード最適化を無効にすれば発生せず、
VB6では最適化有効でも再現せず。 他方は、VB6SP4で修正されていることをMSの資料で
確認)
当然俺も、
>>839 さんが言うようにゼロから作り直した方がはるかに早いとは思ったんだが、
それはあくまでちゃんとした仕様があればって前提での話。 ソフトの操作手順書らしきもの
はあっても、ソフト内で何をやってるのか説明した満足な資料がないんだよ。
しかもクライアントは、仕様がない(なければ作るのが筋だが、仕様を起せない)のを開き直っ
てる始末。
それどころか、こっちがソフト内容を調べて、いちいちお伺いを立てるのを当然と思ってる
らしい。(そんなやり方したら、当然開発期間も費用も倍以上かかるのに、見積りのままで
やれるとも、思っているらしい)
んで、ありきたりの決まり文句で「うちは客だぞ」と。
とりあえず、当初のスケジュールから2ヶ月オーバーして、なんとか修正したソフト送ったら ドキュメントをよこしてないにも関わらず、前バージョンと挙動が違うとか抜かしよるんで、 こっちもブチ切れて、納品条件の仕様を箇条書きでよこせと要求したが、もう丸2日経つが 返事がない。 ちなみに契約書には ... その他、今後のメンテナンスが効率よくなるようなコードの改修 潜在的なバグが含まれるプログラムコードの洗い出しと修正 仕様変更については 必須機能、改修内容及び青果物について変更がある場合、委託者・受託者両者協議の上決定 するものとする。 と書いてあったりするのだが、そもそも「仕様」を記したドキュメントが存在しないのは先述 のとおり。 当然、開発のやり方がまずくて2ヶ月余計にかかった分の支払いはないし、損害 賠償請求とか言うてたが、その訴状もまだ届いてないな。 もう10年以上コンピュータ関係の仕事やってるけど、自分の責任を果たさずに要求ばかり してくる会社ばかりで、はっきり言っていい加減疲れたよ。 ここでは具体的な会社名を出せないが、まぁ裁判沙汰にでもなって公になるようなことでも あれば、もしかしてあの時のとでも思い出してくれたまい。 ところで、こんなクズソフトを書いてるのがドコの会社だろうと思ってたところ、プロジェ クトのプロパティ見たら、著作権者のとこに会社名(業界大手)が書いてあった。 ちなみに ヒントは「女房の脱税疑惑で辞めさせられた、元阪神の監督」とだけ言っておこう。
sscanf("%3d%3d%3d", buff, &a, &b, &c); 逆だよお。
>847 int i = Integer.parseInt((String)hashtable.get("key"));
>>848 ご苦労様です。
>んで、ありきたりの決まり文句で「うちは客だぞ」と。
これは俺も言われたが、言い返した。
「でも、このままだと今後確実に問題が発生して大変なことになりますよ。
理由は、~~~~~~~~~~~~~」 で小一時間説明し、問いただせたのだ。
金関係言ってくるから、1からやり直さんと会社の信頼なくすことになるよ、みたいに
言ってやったんで。ま、1からやり直せと言うだけのものが作れる自信があったからでもあるんだが。
854 :
仕様書無しさん :02/02/08 22:07
>>848 >営業支援ソフトのソースの一部なんだが、
>>838 で挙げた以外にも、数値を入力するテキ
>ストボックスに数字だけでなくアルファベットも入るし、入力のエラー判定が中途半端
指摘したらおそらくこう言うだろうと思われ。「はぁ?だって普通入れないでしょう」又は「そんなの
入れるほうが悪い」はたまた(「しょうがねーなこいつ。そんなこともわからんのか。やれやれ苦労す
るぜ」と言わんばかりの顔で)。ちなみにそいつ(ら?)の経験年数はいかほど?
855 :
仕様書無しさん :02/02/08 23:16
>>852 そういう話なのか?
静的型安全チェックの話ならGenerics使うのが一番だが、まだコアAPIじゃ
ないので、仕方ないから委譲。
class IntegerKeyMap/**Mapを継承しちゃだめ。
put(Object,Object)やget(Object)をサポートしなきゃならなくなるから。**/{
private Map impl = new HashMap();
public void put(int key,Object val){impl.put(new Integer(key),val);}
public Object get(int key){return impl.get(new Integer(key));}
//後は自分で何とかしろ
}
キーがint限定の時。値側の制約が欲しい時は、同様にコーディングせよ。
#define DQN '1' : : int func_dqn(char *); のような宣言があって、 int ret; : : ret = func_dqn((char *)DQN); ウゴクワケネーダロ クソ
857 :
仕様書無しさん :02/02/18 08:47
age
>>838 こっちで愚痴ってんだし、わざわざMLにまで投稿せんでもいいんとちゃう?
#気持ちは非常にわかるが。
859 :
仕様書無しさん :02/02/21 03:38
printf( " ~ printf( " ~ printf( " ~ printf( " ~ printf( " ~ printf( " ~ :(以下数百行)
try{ ... err = func(hogehoge); if(err){ goto Err; } ... }catch(HogeException* ex){ ... Err: ... } 唖然、、、
>860 しかも、funcって関数が、 // C++しらないので、Java風に書くと... boolean func(HogeHoge hogehoge) { try { // : 処理 } catch( Exception e ) { return false; } return true; } ってかんじで、例外を全部吸収しちゃってませんか? # だったらうちの会社と激似。
前にも書いたけど、派遣された先で見せられた 「XMLを使ったプログラム」ってのが、プログラム内部で Stringにタグを切り張りしてるバカプログラムだった。 String xml = "<?xml version="1.0" encoding="ISO-8859-1"?>"; xml = xml + getHogeTag() + getHageTag(); みたいなの。 「そんなのXMLじゃないじゃん、DOM使わないで何がXML?」 と思ってたら、会社中のプログラマ全員がそのバカプログラム書いてたよ。 潰れねーかな、この会社。
XMLのXの意味が、X-BOXみたいな会社だね
>> 861 反応ありがとうございます。 それより何より、gotoでcatchに飛び込むとexが不定なので アクセスすると落ちる、という(-_-;) でも、普通に例外でcatch節に来たときは、exを使って 例外処理しなきゃいけないし。 こんなのどうやってメンテせぇっちゅーねん。
飛んだ先でHogeExceptionオブジェクト 作るって言うのはどう。
>>864 とりあえず NULL を throw するってのはどう?
cygwin の g++ でやったら core 吐いたが、VC++ じゃうまくいったよ。
やっぱこれは根本的にgotoを消す以外に方法はないと思います。
>867 例外やbreakやcontinueで、gotoよりももっと複雑なコードを 考えだされちゃいそうなので、だめ。 っていうか、いまだに「ダイクストラは正しいのか」っていう 問題について議論が起こりうるんだなぁ。
869 :
仕様書無しさん :02/02/26 01:24
いっそgotoしか使わないってのも、アセンブラちっくでそれはそれでありかも
まあ、longjmpじゃなかったって事で。
>>862 String xml = "<?xml version="1.0" encoding="ISO-8859-1"?>";
String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
じゃないの?
というくだらないツッコミは置いておいて、ここ面白いですね。
高専1年生で初めてC言語やってる学生と同じようなソースばかりなんでビックリしてます。
私は学校の事情しかわからないんですが、分かってない事を教えようとする教官に腹立ちますね。授業中にウソ教えるなとか。サンプルで配布したプリントに
void main(void)
{
...
}
とか書いてあったときは、学校辞めたくなった。
なんか、企業も学校も同じですね。って、こんな学校でプログラミングを覚えた連中が就職して作ってるソースなんだ……鬱氏
>871 こんなやつに限ってコピーコンストラクタ書かなかったり。
>>862 XMLドキュメントをまるごと生成する場合は、
Stringの切り貼りはよくやるよ。
どうせ構造が変わったら手直しが必要になるのは同じだし。
DOMでやるより高速だし、見た目の整形もやりやすい。
別にプログラミングに興味ない奴が突然放り込まれることもあるわけだから。
>>871 void main(void)
{
}
の何が悪いんだか。
>>875 同感。
int main( int argc, char *argv[] ) {
}
じゃないとダメとか?
voidだから戻り値がないのは当然だが? 悪いってなんだ。謎。 mainにはintで戻り値を書くのが常識だと思っているなら、悲惨だな
ランタイムライブラリはmainをintの戻り値があるとして呼び出し、 帰ってきた結果をOSに終了値として渡すことになっている。 voidで書いたら不整合で不定値が帰る。 その結果がどうでもいい場面においてはvoidでもかまわんが 広く使われるコードにもその調子で適用すると、正常終了が0だとして 呼び出す「正しい」使われ方をしたときに騒がれることになる。 なんでもないときは単に0を返しておけばすむだけの話なので ほんの少しの手間をケチるのはあんまり良くないね。 そのような考え方の人は他にもそういう調子でやっているかもしれないし。 最終結果まで把握した上で特定の場面でケチってるだけだ、ということなら その特定の場面では問題はないんだろうが。 まあ、このネタはあまりにもガイシュツなので、ネタなんだろうな。
>> 872 コピー代入忘れるなよ。
>>878 > voidだから戻り値がないのは当然だが?
いや、もちろん戻り値の型を問題にしてたのだが。
戻り値を実際に戻すかどうかは別に問題じゃない。
> mainにはintで戻り値を書くのが常識だと思っているなら、悲惨だな
常識なんていういい加減な話じゃなくて、そういう規格なのんだけどな、Cでは。
規格に従わった処理系ばかりじゃねーとか言いたいのかとも考えたけど、そこまで
考えてる奴はもうちょっと別の書き方をするような気がする。
つーか、ネタじゃなかったのか、これ。
ネタにマジレスしてカコワルイ、となる予定だったのだけどな。
いや、ネタでした。
ということで
ネタにマジレスしてカコワルイ
>>877
int main( int argv, char *argc[] ) { } もうね、アフォかと。バカかと。
一瞬?だったけど、わかって少しウケた。 多分最初にそう覚えてしまったんだろうね。
>>879 必ずしもOSに返すわけじゃないだろ。
呼び出し元に返すんだから。必要なけりゃvoidでいい。
ネタニマジレスカコワルイ?
つか、いつの間にかランタイムライブラリ限定の話になっているのが笑えた。 871は10年以上プログラム・・・でDOS系のプログラムを知らないドキュンということでいいですか。 今までずっとコボルで、最近C始めたのかな?
>>885 普通の処理系では必要なくてもintで書くもんです。
↓この後泥沼の予感
おまえら邪魔だからム板逝け
>888 s/ム板/fj/
しかし 現実には void main の コンパイラも存在したのだ むかしの C には voidなんかなかったから これでいいのだ そこの講師が化石だとしても 嘆くひつようもない
むかしのfjにはvoidはいたのだろうか?
>876 int main(int argc, char *argv[]){ } じゃないとダメ(w
C-FAQから: 11.14: void main()と宣言してうまくいかないわけがないと思う。なぜなら main()から戻る代わりに、exit()を呼んでいるから。だいたい今使っ ているオペレーティングシステムはプログラムのexit値/戻り値を無 視する。 A: main()から戻ってくるかどうかは関係ないし、そのステータスを見る かどうかも関係ない。問題はmain()の宣言がおかしいと、呼び出し側 (実行時のスタートアップのコード)がmain()を正しく呼び出すことす らできないかもしれないことにある(呼び出し規約が一致しない可能 性があるため。質問11.12b参照)。 void main()を使用して、BC++ 4.5でコンパイルするとクラッシュす る、という報告がある。幾つかのコンパイラは(DEC C V4.1や特定の 警告オプションを有効にしたgccも含めて)、void main()に文句をつ ける。 君が使っているオペレーティングシステムは終了時のステータスを無 視して、void main()でもうまく動くかもしれない。しかし、このや りかたは移植性が低いし、正しくもない。
貴様等スレタイを100万回書き取りして来い。明日までの宿題だ!
昔はそうだったかもしれないけど、今の時代voidを返すmainを 教えるなんて、どう考えても教官のほうがバカでしょ。 ここにいるおっさん達には悪いけど、時代というものをもっと 見据えて発言したほうがいいよ?
時代を見据えるのも良いけど、歴史を知っておくことも大切だと思われ。 「今」しか見えないってのもねぇ・・・。
どういう場で配られた「プリント」なんだか、もちっと文脈が、 聞きたくもあり聞きたくもなし。 だって「プリント」だぜ? 動かして金取ってるソースの話でもなく、アフォなバグが仕込まれてて唖然とした話でもなく。 「1文字たりとも間違えず、このプリント通りに入力して、動かしてみましょう」 とかか? だったら、その環境を書いてみればいいし、 単に、こんな感じなんですよ、とかの話なら、 「先生、このカッコの中はどういうことなんですか?」 「今日のところは気にしなくてよろしい!」 くらいじゃない? 次の講座(?授業)が、「プログラムにパラメータを渡そう!」とかだったり。
>>881 >そういう規格なのんだけどな、Cでは。
これは C90 規格か、それを翻訳して作られた JIS 規格かな。
ところが、C99 規格では、main の型については規定していないんだよ。
ただ、通常推奨される prototype として、
int main(void) か、
int main(int, char*[])
という意味の記述はあるけどな。
C90 では、return も exit もない場合の戻り値について規定がなかったが、
C99 では変更された。
int あるいはそれと同等な関数値を返すとされた main があるとき、return も exit
も呼び出されずにプログラムが終了する場合は、0 を返すものとする。
それ以外の型の関数値を返すと宣言されている場合は、何返すかは未定義。
ちなみに C++ でも、main は int の値を返すなんて定義されていない。そ
れどころか implementation-defined で、処理系依存と堂々と書いてあるぞ。
899 :
名無しさん@Emacs :02/03/02 04:12
組み込み屋やってっと mainは引数も戻り値もねえしなあ。
cは型チェックしないから例えは #include <stdio.h> int main=0; でもコンパイルできるが。
>>900 実行はできんと思うが...
でも配列形式で実行コード埋め込めばできるかも
int main[] = {
0x12345678,
0x9abcdef0,
};
902 :
仕様書無しさん :02/03/02 11:32
Cで単純にファイルを読むのにも下のような決まりがある。 filename = "hogehoge.txt"; fileopen_read(); if (!strcmp(filename, "ERR")) exit(1); while (1) { fileread(); if (!strcmp(filename, "END")) break; printf("%s\n", readdata); } fleclose_read(); こんなコードを何も疑うことなしに スイスイ読んだりスイスイ書く先輩らって異常。 みんな洗脳されちゃっている。
>>899 そもそもmainから抜けることが無いだろ?
mainが終了しちゃうファームはエロすぎます
905 :
仕様書無しさん :02/03/02 18:48
>>894 for(int i=0;i<ヒャクマソ;i++) print "この会社~ ";
for(int i=0;i<ヒャクマソ;i=0) print "この会社~ ";
907 :
仕様書無しさん :02/03/03 03:04
>>901 それは昔、「もっとも汚い C プログラム」とかいう賞を貰ったという黄金パターン(w
確か先頭に「VAX PDP-11 only」とかコメントが……
static int main[] = { ここに PDP-11 の機械語 };
という代物だったかと。
これが本当に動くと分かるのは、結構 C を分かっている人ですな。
とにかく、 void main(void){ } は基本なんだよ。キホン。定説だ、ゴルァ。
909 :
fight :02/03/03 10:17
>>907 頭にstatic付いてたらリンカが困ると思うが...
if ( false == GetGAL() ) { Poe(); } elseif ( GetPower() == true ) { Puni(); } true,false を右か左かどっちかに統一しれ!
912 :
仕様書無しさん :02/03/03 20:44
#define GOBACK return : :
Unification Church? (LOL
>>898 マジレスしてみよう。
> ちなみに C++ でも、main は int の値を返すなんて定義されていない。そ
> れどころか implementation-defined で、処理系依存と堂々と書いてあるぞ。
ちょっと不正確。ISOの規格では、int main() { } と
int main(int argc, char *argv[]) { } の 2つは必ず通ることになっている。
それ以外は実装定義だということ。だから、この2パターン以外の main を
書いてもいいけど、それは特定の実装でしか通用しないリスクを負った上で
やれ、ということ。
916 :
仕様書無しさん :02/03/07 23:59
一応JAVAです。 String[] anArray; … int len = 0; for(int i=0; i<anArray.length; i++; ) { len = len + 1; } 何を数えているんだろう…
917 :
仕様書無しさん :02/03/08 00:01
918 :
仕様書無しさん :02/03/08 00:02
>>911 true や false と比較してる所には突っ込まないのか…
え?trueやfalseと比較するように、って先輩から指導受けたのだが。 Javaのequalsメソッドに対しても、ってのはやりすぎだと思うが ユーザー定義メソッドや関数の場合はif(true==bolFoo())とか やらないっすか?
Javaなら必要ないと思う
922 :
名無しさん@Emacs :02/03/08 03:35
>>920 false(偽)は0と特定して良いが、
trueは「falseでない」ものだから、
本当は'=='では判定できないはず。
>>911 ,
>>922 スレがスレだからな。
「true」や「false」が実際には何なのかわからんぞ。
まあ、見た目は別の関数からの返値と比較(なのか?)だからな。
結局Poe()もPuni()も実行せんという場合もあるのかもしれんし(w
924 :
仕様書無しさん :02/03/08 13:19
>>922 Javaでは、falseは0ではなくfalseでしかないはず。型が違う
>「true」や「false」が実際には何なのかわからんぞ。 falseは0、これ決まり。
この会社辞めようと思わせるやつらが大量発生してます。ご注意ください。
今辞めると、再就職大変だぞ
928 :
仕様書無しさん :02/03/08 21:08
なんだこのスレ
929 :
仕様書無しさん :02/03/08 21:32
なんだと言われても、見るまま感じるままだが
930 :
仕様書無しさん :02/03/08 21:57
もし君が「if((a == b) == TRUE)」が「if(a == b)」の改良版であると信じるのなら、な ぜそこで止めるのか。 なぜ「if (((a == b) == TRUE) == TRUE)」を 使わないのか
931 :
仕様書無しさん :02/03/08 22:14
な ぜと言われても、困るんだが
な ぞな ぞ
933 :
仕様書無しさん :02/03/08 23:39
一行ずついちいちコメントつけるやつ。 見にくいってば。
934 :
仕様書無しさん :02/03/08 23:44
public class Mona { int a=0; int b=0; int c=0: ・ ・ まとめて書けやカスが。
935 :
仕様書無しさん :02/03/09 00:01
>>923 スレがスレデも、
他のアプリとの連携や、通信や、別環境でビルドされたライブラリとかは
考慮しないでいいんじゃないか?
別関数でも同じ環境(コンパイラ・インタプリタ)で
解釈されたものであれば、関数ないでtrue(論理値)を返した場合、
trueで判定できるからね!その範疇でよいでがしょう。
トリアエズ #define true (0==0) #define false (0==1) です
938 :
仕様書無しさん :02/03/09 00:40
全部同じ値で初期化するならまとめても問題ないと思うが。 まとめると問題ある場合って何?
940 :
仕様書無しさん :02/03/09 00:52
>>930 920が言っているぞ。
「先輩から指導受けた」からだろ?
944 :
仕様書無しさん :02/03/09 01:02
どっちでもいいことが分からない方がドキュン。 臨機応変。
945 :
仕様書無しさん :02/03/09 01:10
よかった・・・一瞬俺ってカス?先輩や後輩に、クソコード書く チンカス野郎って陰口たたかれて、明日会社に行ったら椅子の上に 画鋲が撒かれてて、泣きながら掃除してる自分の姿を想像しちゃったよ。
>>943 まとめる必要がないならまとめないほうがいい。
コーディングスタイルが定まらない奴のコードが一番読みにくい
>>934 ソースからドキュメントを起こすツールがあるけど、まとめて書いた場合でも
きちんと起こしてくれるかな?
それが気になる。
一人で書くならどんな書き方しようが勝手だけど、仕事で複数人が関る場合
なんかは、なるべくまとめないほうがよいだろう。ローカル変数の全てに説明の
コメント付けること考えると(本当にそういうことを要求されることはある)、1行に
複数の変数定義をするのはおすすめしない。
949 :
仕様書無しさん :02/03/09 11:45
>>948 俺はまとめない派なんだが、以前新卒にそれ注意したら
「えっ、コメントなんて
int ia = 0, ib=0, ic=0; /* ループ用変数 */
で全然問題ないじゃないですか。」
と反論しやがった。
>>949 まずループ変数に ia,ib,ic とつけているところを小一時間以下略。
まあ、漏れもループ変数は必ず lc で始める(lc, lc1, lc2, lcx など)
という自分基準は持っているけど、それでもまとめては書かんなあ。
それはそうと、あの書き方に慣れていると、VB だとかなり悲惨なこ
とになるな。
この場合 ia が integer で、ib, ic は variant になるんだっけ。
まあ VB なんて使う方が以下略。
951 :
仕様書無しさん :02/03/09 12:12
ん。 それはVB5までで、VB6では最初の宣言と同じ型になるんじゃなかったっけ。
VB6までじゃないか?VB.NETだとまとめて宣言できるらしい。 VBあんまり使ったこと無いんで良く知らんけど。
953 :
仕様書無しさん :02/03/09 18:19
>>949 注意?自分の主義を人に押しつけるのは感心できないと思うが。
それはそうと、そのコードはCだよな?C++だったら痛いぞ。
954 :
仕様書無しさん :02/03/09 19:00
ループの変数は i,j,k と使って、z まで逝ったらa に戻る。 に決まってるジャン。
ループ変数にも意味のある単語を使う、これ最強 first_suffix_of_hairetsu second_suffix_of_hiretsu etc...
956 :
仕様書無しさん :02/03/09 19:33
957 :
仕様書無しさん :02/03/09 19:33
だれか次スレたてろや!
zまで逝くようなループなんて…
959 :
仕様書無しさん :02/03/09 20:27
俺は変換ミスを防ぐために、ループ変数は ii, jj, kk ... にしている
>>954
960 :
仕様書無しさん :02/03/09 20:33
>>955 やっぱり、ひれつなのはいけないとおもいます。
961 :
仕様書無しさん :02/03/10 22:10
,,v‐v-/l_ (⌒) _「/ ̄ く / lYノノ/_ノl_ヽ)) <イ( l l )l> / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ <|)'|l、"(フノ|l < hiretsuなのはいけないと思います! ,(ヨリ<>o<>リ'] \______________ |ト‐!]-ム- i']l ヽ_ノv__l/ / . ノ[//‐─‐/_/、 ( /E|, (フlヨ \ ,-| El___lヨ / └-\`^^^^^^´/  ̄ ̄ ̄
962 :
仕様書無しさん :02/03/10 22:15
if(...) goto hoge1; if(...) goto hoge2; . . . . こんなのが永遠と100行ぐらい続いてました。 何とかしてください。
963 :
仕様書無しさん :02/03/10 22:55
>>959 その方法いいかも、iとjが見づらくて、jをトバしてたんだよね。
かといって、愛ははずせない。
>>962 何をしてるプルグルム?
965 :
仕様書無しさん :02/03/10 23:03
>>962 ステップ数で賃金の請求をしてるプログラマの仕業です
許してあげましょう。
アセンブラ?
i,j,k.....FORTRANの呪いがこんなところに.....
>>967 それを言っても昨今のプログラマには分からんってば(w
だいたい下手すると「Fortran? 何ですかそれ?」だと思うぞ。
今って情報処理技術者試験で Fortran 使えたんだっけ?
いいよね今は。 C も BASIC も使えるんだから。
昔はなあ、Fortran と COBOL と PL/I とアセンブリだぞ(w
結局アセンブリか Fortran しか選択肢がないと同じ。
それよりも罠は午前の「簿記会計」だったけどな(w
でも情報処理技術者が、今時アセンブラは無いだろと問い詰めたい。 だから俺みたいな嘘っぱちが受かっちまうんだYO!
970 :
仕様書無しさん :02/03/11 19:55
>969 確かに開発でアセンブラはほとんど死滅しただろうけど、 計算機の理解度を調べるためのアセンブラは有効でしょ?
printf("hoge\n"); /* <-意味は無いけどコレが無いとcore吐くので */ マジで。殺意が芽生えた。
972 :
仕様書無しさん :02/03/11 21:20
過去3年分のデータを処理するストアドプロシージャで、 ifが36段ネストしていました。 if ... if ... if ... AAかと思ってしまうくらいに傾斜がきれいでした。
>>973 それって、再起を利用することはできなかったのか?と問いたい。
975 :
仕様書無しさん :02/03/11 21:29
オブジェクト指向とは言わない。 構造化も我慢しよう。 たのむから同じ処理は一つの関数にまとめてくれ! 不実宇●●ネット■■の皆さんよお!
>>971 漏れが何も知らない新人だったころ、
「これがないと動かないんだよね~。おまじないって言うんだよ」
って先輩が笑いながら教えてくれた。
へ~そうなんだ~、おもしろいなぁ~、と感じたことを
思い出した(鬱
36段ネスト・・・3×12か 見たいなぁ、組んだ奴の顔。
おまじないは、神への敬意です。 蟲を鎮める神聖な神の命でしゅ。
>>975 漏れ明らかに他社だけど、2~3回までなら同じ処理でもまとめません。
処理の長さにもよるけどね。20stepくらいまでかなぁ、まとめないのは。
だめ?
2step以上で処理としてのまとまりがあるのであれば、まとめる。
単純にソース中でよくみかけるコードを切り出して無理やり関数化す るのは勘弁して~。「ふにゃららをする」と定義できないものは関数 化するなと言いたい。 関数化しようとする意思は認める、が、「ふにゃららをする」と定義 できるまとまりで切り出せ、と言いたい。
関数呼び出し時のpush/pop(引数の受け渡し)のコストを気にしてしまう。
可読性と修正時のコストを気にしてしまう。
>>981 同意。
すわりが悪いのは勘弁。
だからといって重複が許されるわけではない。
もちょっと工夫していい切り口を探してホスィ。
>>982 シビアな処理なら、あとできっちりテストしながら最適化すれ。
push/popなんぞよりもっとひどいボトルネックをまず全部つぶして、
それでも処理のスピードが要求に満たないのなら、そんときpush/pop
のコストを考えよう。
>>981 単に似ているから無理やり関数化して、
内部で謎の引数で分岐してるやつとか
>>987 謎のグローバル変数で分岐してるのを見たことありやす。
989 :
仕様書無しさん :02/03/12 00:23
>>971 >printf("hoge\n"); /* <-意味は無いけどコレが無いとcore吐くので */
意味がないわけではなく、コンパイラだかリンカだかのバグを回避するために入れる必要があった。
(コメントをうまく解析できなかったんだっけ…うろ覚えでスマソ)
さてと、1000ゲトはまだかな?
コソコソ
コソコソコソコソ
コソコソコソコソコソコソ
コソコソコソコソコソコソコソコソ
連続投稿解除!
コソコソ
コソコソコソコソ
コソコソコソコソコソコソ
'"':, ,:'"':, ,:' ,:':.':, ,:' ,:'::':, ,:' ,:':::.::::':,,,.....,, ,,,:' ,:'::::::::':, ,' ,:'::::::::::::', ,:' ,:'::::::::::::':, 1000・・・・・・・ ,::' '::, ,:'.. ':,________ ,':. ● ● ', /\ ;;:: \|/ ;;. / \ ;;:: /|\ ------- ;'. / \ ':,:: ,:' / \ / '::,::.. ,.::' / \ / "''':; '' ""; ''" / / / :; :; / / /| ̄ ̄ ̄ ̄ ̄:;;:.. ;: ̄ ̄:; ;: ̄ ̄ ̄ ̄ ̄|\ / / | :;::: :i: :i ;: . | \ / ../ | :i::.. ;: :; i: . | \ / | .`.、.、..、.,' `..、.、..、.,' | \ / | | | \/ | | | / | ヽ_l レ ヽ .| / | | / |___________________.|/
↓おめでとう!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。