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

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

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

1 :仕様書無しさん:2001/08/06(月) 22:34
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

2 :仕様書無しさん:2001/08/06(月) 22:36
int main()
{
 /* process... */

 return 1;
}

3 :仕様書無しさん:2001/08/06(月) 22:41
for (i = 0; i < n; i++) {
 switch (i) {
 case 0:
  fnc_0();
  break;
 case 1:
  fnc_1();
  break;
 ...
 }
}

4 :仕様書無しさん:2001/08/06(月) 22:44
エラーがエラーコードでメッセージだけでは分からないよー。
if ((fp = fopen(filename, "r")) == NULL) {
 fprintf(stderr, "EF-3324-672\n");
 ...
}

5 :仕様書無しさん:2001/08/06(月) 22:47
変数の受け渡しが99%グローバル変数。
インデントもろくにしてない。
上司が書いたソースなのだが、仕様書もろくにないのに引き継ぎさせられた。
そして現在仕様書を書かされている。

6 :仕様書無しさん:2001/08/06(月) 22:47
public class Hoge {
protected Hoge() {}

public getInstance() {
return new Hoge();
}
}

Singleton じゃないのか…

7 :仕様書無しさん:2001/08/06(月) 22:52
C 屋じゃなくて、DB屋(Oracle) なんでちょっと場違いかもしれんが、

今の仕事で
無意味なサブクエリー&動的SQL使いまくりの1000行近いプロシージャーを
かなりの数残していったやつがいるんだけど(無論、仕様書なし)、
そいつのソースのメンテを振られたらその場で辞めるつもり。

8 :仕様書無しさん:2001/08/06(月) 22:59
ツールレベルのプログラムって仕様書作っていない奴が多いね。
エイヤー!で作ってクーロンに仕込ませて忘れた頃に障害発生。
すでにプログラマはいない。

9 :仕様書無しさん:2001/08/06(月) 23:03
gets(buf);

良くあるよ。

10 :仕様書無しさん:2001/08/06(月) 23:06
strncpy(s, " ", 256);

たぶん文字列sを初期化しようとしているだと思うんだけど・・・
こんなのがいっぱいある。

11 :仕様書無しさん:2001/08/06(月) 23:10
char *s1 = malloc(256);
char *s2 = malloc(256);

s1 = "s1 is string";
s2 = "s2 is string";

ポインタが分かっていない典型的なコード。

12 :旅人プログラマ:2001/08/06(月) 23:16
全てのSQLクエリーにWhere文がなく帰ってきた結果を
IFで判定しているプロジェクトがあったのだが、
その時の担当曰く「条件が変わってもSQL文を変更しなくて済む」
と言う事らしい…。

13 :仕様書無しさん:2001/08/06(月) 23:25
IDENTIFICATION DIVISION.

14 :仕様書無しさん:2001/08/06(月) 23:25
>>12
SQL変えるついでに、担当も替えてもらえ。

15 :仕様書無しさん:2001/08/06(月) 23:33
main関数が8000行

16 :仕様書無しさん:2001/08/06(月) 23:56
>>15 そりゃ鬱になるね(ワラ

17 :仕様書無しさん:2001/08/07(火) 00:04
CString val1 = "string1";
CString val2 = "string2";
int i;
for(i = 0 ; i < val2.GetLength() ; i++){
val1 += *((LPCTSTR)val2 + i);
}

val1 += val2;がやりたかったらしい・・・。

18 :仕様書無しさん:2001/08/07(火) 00:06
UINT flg;
(略)
if( flg > 0){

}
else{

アホか(笑)

19 :仕様書無しさん:2001/08/07(火) 00:14
ファイルが開けなくても続行。
メモリが確保できなくても続行。
エラー処理がまったく施されていないソースを
渡されたときにはさすがにびびった。
「エラー処理付けなくてもいいんですか?」って聞いたら
「エラーになることはありえないからいいよ。。。
 もしだめだったら勝手に止まるからいいよ」って言われた。
そりゃコアも吐くわー。。。

20 :18:2001/08/07(火) 00:18
あ,
if(flg < 0)
だった。

俺もアホだ

21 :仕様書無しさん:2001/08/07(火) 00:42
>>20
ほっとしたよ。
18のナニがアホなのか理解できん自分がアホかと思った。

22 :仕様書無しさん:2001/08/07(火) 00:58
でも18のままでも十分あほだよ。

23 :仕様書無しさん:2001/08/07(火) 01:58
>>15
ワロタ

24 :仕様書無しさん:2001/08/07(火) 02:44
/*
Copyright (C) 1984, 1989 Free Software Foundation, Inc.


25 :仕様書無しさん:2001/08/07(火) 03:01
このスレ笑える

26 :仕様書無しさん:2001/08/07(火) 03:14
void func1(void)
{
 :
func2();
}

void func2(void)
{
 :
func3();
}

void func3(void)
{
 以下鬱

27 :仕様書無しさん:2001/08/07(火) 04:03
>>26 ワラタ

28 :仕様書無し:2001/08/07(火) 12:38
関数名、変数名が全て日本語で読めると発見したとき。

29 :仕様書無しさん:2001/08/07(火) 22:42
20以外を判定するために

if(flag<19 || flag>=21){
}

マジです。
調べてみましたがflagには整数しか入りません。
アホか!お前はアホか!!

30 :仕様書無しさん :2001/08/07(火) 22:50
>>29
ネタだろ?でなけりゃかいたのは新人か?

31 :仕様書無しさん:2001/08/07(火) 22:54
>>29
なんで、flag<=19ぢゃねーの?


32 :旅人プログラマ:2001/08/07(火) 22:56
>>14
いや条件変わる前に職場変えるよな…
精神衛生上その方が楽ですし

>>25
他人事ですから笑えるんですよ…(藁

33 :仕様書無しさん:2001/08/07(火) 22:57
>>31
あ、ごめん。怒りにまかせて書いたから間違ってた。

>>30
マジです。
ちなみに5=29で、今度は別のソースの話。
請負先の上司->プログラム初めての初心者->俺
と回ってきたらしい。

早く別の請負先に回してくれー!!

34 :仕様書無しさん:2001/08/08(水) 00:50
TCP接続の「上」で、SEND・ACKメッセージをわざわざ
やり取りするアホオヤジ。

分かってないのに偉そうな奴で、給料おいらの3倍くらい
らしい。とっとと氏んでくれ…

35 :仕様書無しさん:2001/08/08(水) 02:32
>>34
受け取ったこと(TCP上のACK)と処理したことが違うということで
わざわざつけることもある。あるいは状態や内容的にOKかNGかとか。
HTTPだって、GETに対してOKだったり404だったり500だったり

という事とは別のことだよな。

36 :4年目:2001/08/08(水) 02:35
>>34
アプリケーションプロトコルでの確認は必要ないとでも?

37 :仕様書無しさん:2001/08/08(水) 05:41
// Author : <社名> SUPER *

作った上司に、あとで「* って何ですか?」と聞いたら「スターだ」と言われた。
聞くんじゃなかった...

38 :学生:2001/08/08(水) 06:49
職場ではないが、教授が書いていたプログラム

i=0;
while (1){
if ( i != 0 ) break;
/*処理...*/
}

普通にwhile文使えよ…

39 :もうひとつ:2001/08/08(水) 06:58
とあるパズル問題を解くプログラム

for(i1=0; i1<N; i1++)
 for(i2=0; i2<N; i2++)
  for(i3=0; i3<N; i3++)
   for(i4=0; i4<N; i4++)
    for(i5=0; i5<N; i5++)
     for(i6=0; i6<N; i6++)
      for(i7=0; i7<N; i7++)
       for(i8=0; i8<N; i8++){
        ..処理..
        data[i1][i2][i3][i4][i5][i6][i7][i8] = なんたらかんたら
        ..処理..
       }

なんか、再帰関数使えば数行で終わる気が…

40 :仕様書無しさん:2001/08/08(水) 07:09
VCで開発なのにVCが入ったPCが1台だけしかない。
コードは4人で書いているのですが効率悪い。
上からは「机上で考えてからパンチ作業に移れ」といわれる。
上司は元COBOLER。

41 :仕様書無しさん:2001/08/08(水) 07:19
>>40
ライセンス契約をしっかり守る良い会社じゃないか。

42 :仕様書無しさん:2001/08/08(水) 07:37
フォーム250個。

43 :仕様書無しさん:2001/08/08(水) 08:11
>>34
Σ(゚д゚lll)ガーン
俺もやってる。

44 :sage:2001/08/08(水) 08:45
>>40
最近、流行のXPじゃない。
ペア・プログラミングを超えて
フォー・プログラミング(4人組って?)

45 : :2001/08/08(水) 09:19
VBプログラマーですが
変数名&関数名を漢字で書いたら怒られました。
どうしていけないの?

ネイティブに失笑されそうなわけのわからん英単語を
ならべるよりよっぽど読みやすいと思うのですが。

46 :仕様書無しさん:2001/08/08(水) 09:20
>>45
うんうん、そうかも知れないね、
でも僕は君とは絶対に仕事したくないな。

47 :仕様書無しさん:2001/08/08(水) 09:43
VBは
変数名&関数名に漢字を使っても問題ありません。
が 46みたいな方が多いので
こっそりと使いましょう

48 :仕様書無しさん:2001/08/08(水) 11:07
カルテット

49 :仕様書白紙さん:2001/08/08(水) 11:39
全部の変数名を1文字で済ませてる関数は、追っかける意欲どころか
生きる気力さえ奪う。

50 :仕様書無しさん:2001/08/08(水) 12:31
括弧のインデントが嘘のソース
整形しろってか

51 :...:2001/08/08(水) 16:27
変数名が1文字とか、インデントが正しくないものや
1関数が以上に長いものはコンパイルエラーするべきだと思います!!!

52 :仕様書無しさん:2001/08/08(水) 17:50
あるソース
#define memmove2(A,B,C) memmove(B,A,C)

あるソース
#define memmove2(A,B,C) memmove(B,A,((C)+(C)))

あるソース
#define mmv(B,A,C) memmove(B,A,C)

あるソース
#define memmove2(B,A,C) memmove(B,A,C)

53 :仕様書無しさん:2001/08/08(水) 17:51
今日見つけた同一プロジェクト内の
別ソースのヘッダです。

#define LOCAL static
#define STT static
#define STAT static
#define VOID void
#define VD void
#define EXTERN extern
#define EXT extern
#define EX extern
#define CONST const
#define CONSTANT const
#define CST const

typedef char SBYTE;
typedef unsigned char BYTE;
typedef unsigned char BT;
typedef unsigned char UBYTE;
typedef unsigned char UCHAR;
typedef unsigned short SHORT;
typedef unsigned short USHORT;
typedef unsigned short SHT;
typedef unsigned int WORD;
typedef unsigned int UWORD;
typedef unsigned int INTEGER;
typedef unsigned int INT;
typedef unsigned long LONG;
typedef unsigned long ULONG;
typedef unsigned long DWORD;
typedef unsigned long LWORD;

typedef unsigned char *P_BYTE;
typedef unsigned int *P_WORD;
typedef unsigned long *P_DWORD;

typedef unsigned char *PBYTE;
typedef unsigned int *PWORD;
typedef unsigned long *PDWORD;

typedef char *P_CHAR;
typedef int *P_INT;
typedef short int *P_SHORT;
typedef long *P_LONG;

typedef char *PCHAR;
typedef int *PINT;
typedef short int *PSHORT;
typedef long *PLONG;

typedef unsigned int *POI;
typedef unsigned int *POINTER;
typedef unsigned int *PT;
typedef unsigned int *P_POINTER;

何考えてるか判らなくて、「これ整理してください」と
依頼したら「なにか問題がありますか」だと!!

54 :仕様書白紙さん:2001/08/08(水) 18:02
>>53
何がしたいんだろうね・・・それ書いた人・・・・(;´Д`)

55 :偽ASIMO:2001/08/08(水) 18:07
>>54
その日の気分によって変えるのだ

56 :仕様書無しさん:2001/08/08(水) 18:07
>>53-54
てか、一人で書いたの?何人もの手を経てきた結果かとおもた。

57 :仕様書無しさん:2001/08/08(水) 18:15
>>53
引き継がせろ。
増やしてやる(w

58 :仕様書無しさん:2001/08/08(水) 18:42
>>53
ちょっとした打ち間違いによるコンパイルエラーを防ぐ
実に良い方法だ。私も見習おう。
typedef char cahr;

59 :仕様書無しさん:2001/08/08(水) 18:56
#define hoeg hoge

60 :仕様書無しさん:2001/08/08(水) 18:59
if (〜) {
処理1;
}
else {
処理2;
goto Label;
}

処理3;
処理4;

if (〜) {
Label:
処理5;
}

...

61 :仕様書無しさん:2001/08/08(水) 19:01
if (...) の条件文がやたらと長げー。
if (...) の閉じ括弧は300カラム目というレベル。

閉じ括弧の塊は笑ったが目は笑っていない。
)))))))))

62 :仕様書無しさん:2001/08/08(水) 19:03
>>53
ビット演算をやらなくていけない場合とかは
BYTE,WORD,DWORD表記のほうが解りやすいような。

BYTE Low,High;
WORD wd = (WORD(High) << 8) | Low;

63 :仕様書無しさん:2001/08/08(水) 19:05
WinMain が 4000 行以上あった。
自社のプロジェクトじゃなくて孫請けだけど。

64 :53:2001/08/08(水) 19:26
>>62
それが、ここに書かれている宣言のほとんどが使われてないのだ。
char -> U1
short -> U2
long -> U4
と宣言されて、それがメイン(見てるひと、そう、その職場だよ!)

65 :仕様書無しさん:2001/08/08(水) 19:29
http://kyoto1.ceo-jp.com/pc/prog/

66 :仕様書無しさん:2001/08/08(水) 19:36
>>63
winmainが4000行ってのはすごいかもね。
winprocが4000行なんてのはざらにあるけど。

67 :偽ASIMO:2001/08/08(水) 21:10
>>64
セガのライブラリーに似てる

68 :仕様書無しさん:2001/08/08(水) 23:13
全体で数百KステップにおよぶSQL
エラー処理一切なし(目を疑った)

だから障害起きた時にすぐ対処できんのだろうが!

69 :仕様書無しさん:2001/08/09(木) 00:29
俺が今までに唯一切れたソース。

char data1[1024];
char data2[1024];
char data3[1024];
   ・
   ・
   ・
char data81[1024];

memset(data1,'\0',1024);
memset(data2,'\0',1024);
memset(data3,'\0',1024);
     ・
     ・
     ・
memset(data81,'\0',1024);

fgets(data,fp);
strcpy(data1,data);
fgets(data,fp);
strcpy(data2,data);
fgets(data,fp);
strcpy(data3,data);
     ・
     ・
     ・


構造体か2次配列使え!!!!!アホ新人!!!

オマケにmainだけしかfunctionが無ぇ…

70 :物申す:2001/08/09(木) 00:37
つうか、変数名を変な略字にするのはやめろ!!
ちゃんとフルスペルにしろ!長くなってもかまわん!
Count を cnt にするな
Data を dat にするな
Copy を cpy にするな
getDrvSta なんて略すな! GetDriveStatus にしろ!!

71 :仕様書無しさん:2001/08/09(木) 01:08
>>70
いつもcount→cntにしてます。スマソ
でも、プロジェクト全体で統一してるからいいじゃん(藁

72 :仕様書無しさん:2001/08/09(木) 01:28
kaunto

73 :名無しさん@1周年:2001/08/09(木) 01:54
>70
その辺はコーディング規約によるからなんとも。

74 :仕様書無しさん:2001/08/09(木) 02:22
>>70
あなたはアマチュアプログラマですね。
いいですね。好き勝手できて、幸せで。

75 :仕様書無しさん:2001/08/09(木) 02:27
#define YEAH true
#define WOO false

ふざけんなって,マジで(笑)

76 :仕様書無しさん:2001/08/09(木) 02:47
>>75
イイ!

77 :仕様書無しさん:2001/08/09(木) 02:53
>>70
最近のプログラマと思われ
略すのなんて普通、ましてや全部一般常識レベルの話じゃねえか

78 :仕様書無しさん:2001/08/09(木) 02:57
>70
統合開発環境のコード補完機能使いこなせない
UNIX上がりのドキュソがやりがちだね

79 :仕様書無しさん:2001/08/09(木) 03:03
#include <stdio.h> /* 正常位 */

標準入出力・・・

80 :仕様書無しさん:2001/08/09(木) 03:04
ふん、若い奴はすぐ機械に頼りやがる。コードってのはなあ、
こーかくんだよ、トンテンカントンテンカン...

81 :仕様書無しさん:2001/08/09(木) 04:04
意味不明の行動だね >>80

82 :ナナ萌え(゚д゚)ウマー:2001/08/09(木) 04:17
If Request("modo")=" 登 録 " Then

83 :仕様書無しさん:2001/08/09(木) 06:07
>>70
は最近のプログラマーなんだろう。
昔は関数名は短くしたのだよ。変数や関数などのシンボルに文字数制限
があったのだ。
さらにコンパイル後、コードに含まれるこれらシンボルがただでさえア
ップアップのリソースを消費するのはけしからん!っていう理由からだ
Windowsプログラムでは>>70のような書き方がはやりだな。

84 :仕様書無しさん:2001/08/09(木) 07:29
そうは言ってもcreateがcreatになるのはなぁ

85 :仕様書無しさん:2001/08/09(木) 10:29
>>84
デニス・リッチーに逆らうってぇのかい?

86 :仕様書無しさん:2001/08/09(木) 10:30
>>83
>リソースを消費するのはけしからん
シンボルは削れるし、メモリ上にシンボルテーブルを持つのは最近のこと
具体的なOS名は?

87 :名無し学生:2001/08/09(木) 10:33
>>84
それは単なる誤字。最近 information が全部 infomation になっていて
激しく萎えた。当然気持ち悪いので全部置換。ちなみに当方はまだ学生。

#creat って Unix のシステムコールだっけ?

88 :仕様書無しさん:2001/08/09(木) 10:45
SearchがSerchになってて凹み。
次に上司も英語が苦手だとわかって凸み。(なんて読めばいいんだ

89 :仕様書無しさん:2001/08/09(木) 10:47
receiveがrecieveになってるってのもあったな

90 :仕様書無しさん:2001/08/09(木) 10:50
>>86
Fortran Monitor

91 :仕様書無しさん:2001/08/09(木) 10:58
>>87
>ちなみに当方はまだ学生。

その発言に何の意味があるのか不明
学生の方が英単語スペルはわかってて当然のような

92 :仕様書無しさん:2001/08/09(木) 11:00
>>91
なんとなく言いたかっただけだろ。
ちなみに当方はまだ学生。

93 :仕様書無しさん:2001/08/09(木) 11:03
入社早々渡されたソースのコメントに、

/* degital */

と書いてあるのを見つけたときは鬱になったな。

でも、そんな俺も今では後輩に渡すソースに

/* writed */

と記述してたりする。(w

94 :仕様書無しさん:2001/08/09(木) 11:04
よく見るスペルミス(私見)
 
search -> sarch, serch
write -> rite
through -> trough
message -> mesage
information -> infomation
configuration -> configration
monitor -> moniter
data -> datas
profile -> profeel
 
 
 
番外編
 
overwrite -> uwawrite

95 :仕様書無しさん:2001/08/09(木) 11:10
>>94 追加
メモリ解放 -> メモリ開放

96 :仕様書無しさん:2001/08/09(木) 11:42
#define ONE 1
#define TWO 2
#define THREE 3

まじで萎えた。
実行文に数値定数を直接書くなというのはそういう意味じゃないんだよ。

97 :仕様書無しさん:2001/08/09(木) 11:49
>>96
エディタで検索しやすくていいじゃん。(藁

98 :仕様書無しさん:2001/08/09(木) 11:51
>>70
フルスペル主義賛成!
そりゃ昔は8文字までとか制限あったのくらい俺だって経験
長いから知り過ぎるくらい知ってるけど。
何で未だに昔の足かせを引きずらなくちゃならないんだろう。
ただプロジェクトリーダーとかの頭が固まってしまってるだけじゃねーの?
たまには紫外線を当てて古いコードを消してみることも大事じゃないか?
それとも、タイプ数????

99 :仕様書無しさん:2001/08/09(木) 11:52
>>96
後の変更で
#define ONE 0
とかなったら、サパーリ意味不明になるな…。(ワラ

100 :仕様書無しさん:2001/08/09(木) 11:53
>>98
長すぎるのも考え物

101 :仕様書無しさん:2001/08/09(木) 11:54
>実行文に数値定数を直接書くなというのはそういう意味じゃないんだよ。
頭の不自由な後輩には手取り足取り教えてあげてください。

102 :仕様書無しさん:2001/08/09(木) 12:15
>>96
#define BIT0 0x00
#define BIT1 0x01
...
#define INT1 0x01
#define INT2 0x02
...
#define INT99 0x63

こういうのを見たことがあります

103 :仕様書無しさん:2001/08/09(木) 12:16
>>98
そこまでこだわるなら、人をあだ名や名字だけで呼ぶのは禁止な(w

104 :仕様書無しさん:2001/08/09(木) 12:21
>>102

それは制御系では普通だと思う。

105 :仕様書無しさん:2001/08/09(木) 12:25
Canselはないですか?

106 :仕様書無しさん:2001/08/09(木) 12:35
>>104
ふーん、制御系って頭悪いの多いんだね(藁

107 :仕様書無しさん:2001/08/09(木) 12:46
>>104>>106の方が知性に不自由しているように見えるが、やっぱり同一人物かい?

108 :仕様書無しさん:2001/08/09(木) 12:47
おっと、「>>103>>106の方が」だった。

109 :仕様書無しさん:2001/08/09(木) 12:47
>>105
CanselってCancelのこと?
違ってたらスマソ。

110 :仕様書無しさん:2001/08/09(木) 12:52
綴りが間違ってる変数やファンクションが盛り込まれてると、殺意を抱くね。データベースのカラム名でもしかり。
anquete;
とか
corection;
とか、明らかに思考とコーディングの妨げ。

コードにもスペルチェッカ掛ける必要アリだな。

111 :仕様書無しさん:2001/08/09(木) 13:01
入社試験で人チェックをちゃんとやって欲しいです。

112 :仕様書無しさん:2001/08/09(木) 13:04
おれ制御系だけど、>>102 みたいなことしないよ。

113 :仕様書無しさん:2001/08/09(木) 13:15
Cのローカル変数名みたいにスコープが狭い名前は、
エディタで置換すれば済むけどねえ。

DBのテーブル名や列名は悪質だよね。
ヘタすると、それにアクセスするアプリ内のSQL文から
ストアド内のSQLまで全部変えないといけないな。

114 :仕様書無しさん :2001/08/09(木) 13:34
>>85
リッチーじゃなくてケン・トンプソンでなかったっけ?
そいえばなんかのインタビューで、
“unixを作り直すとしたらまずどこから手をつけるか?”
という問いに対して
“creatの綴りを直す”
と答えていた(w

115 :仕様書無しさん:2001/08/09(木) 13:37
cnt って変数見ると、"cunt"? って思ってしまう。

++cnt; // クリクリしちゃうぞ、オラ〜

116 :103:2001/08/09(木) 13:39
>>106
違うよ。人を見抜く力に著しく劣ってるねキミ

117 :103:2001/08/09(木) 13:39
おっと >>107 だった。・・・107と同レベルなのか? 俺

118 :仕様書無しさん:2001/08/09(木) 13:42
>>110
以前データベース作成者が英単語に死ねっつー程弱く、
それが原因でコード上の色々なスペルもアホ丸出しになったことがある。
「データベースはそれはそれで仕方が無いとして、せめてソースの方だけでも
 正しいスペルにしましょうよ」と会議で言ったら
「そんなことやったら整合性が取れなくなる可能性があるからダメだ」と言われた。
「整合性って変数名やラベルの問題だから関係ありませんよ」と反論したら
「じゃあ何か起きた時は君が全ての責任を取るというんだな」だって。

calamとかposisionとか…ソースコードも納品対象だったんだ、恥ずかしかったよ。

119 :仕様書無しさん:2001/08/09(木) 13:43
入社当初は、"warning"をワーニングと言われたのも?だったな。
今となっては自分も言ってるけど(w

120 :仕様書無しさん:2001/08/09(木) 13:59
英語のスペルも困るが、ウチの上司は日本語の単語変換もムチャクチャだ。
文法や言い回しもおかしいので、中学も出てないのではって思う。

 ・先週に○○について見当を行ったことは既にお伝していますが
  これに対する○○○○からの解答を現在応急しています。
 ・今回のプロジェクトより進捗を行うようにしました。
  皆さん各自で管理するよう進捗をお願いします。
 ・最近残業がおおい割に開発がよくありません。無駄な残業は
  行わないよう休憩を少なめにして効率よく結果を示してください
  なお20時までは特に制限がないので頑張って残業してください
  必用であれば休日出勤を開くこともできますが必ず3日前までに
  リーダーまで報告をして頂ければ大変便利です。

先週のメールの一部をそのまま抜粋(w

121 :仕様書無しさん:2001/08/09(木) 14:06
>>120

失礼ですけど、アナタの上司は来日して何年目ですか?(藁

122 :仕様書無しさん:2001/08/09(木) 14:16
>>116-117
げらげらげら

123 :仕様書無しさん:2001/08/09(木) 14:26
>#define BIT0 0x00
>#define BIT1 0x01

ゲーム屋だけど、レジスタいじる時にはよく使うよ。

124 :仕様書無しさん:2001/08/09(木) 14:33

if (inp(xx) & 0x40)) より if (inp(xx) & BIT6)) と書く方が間違えにくいからね。

125 :102:2001/08/09(木) 14:55
BITはいいよ。INTはいらんだろ

126 :仕様書無しさん:2001/08/09(木) 15:05
>BITはいいよ。INTはいらんだろ

それは同意。最初みたときはインタラプトの INT かと
思ったけど(int 21h みたいな)、
デシマルの意味として使ってるならドキュン。

127 :仕様書無しさん:2001/08/09(木) 15:07
>>125
本当に
>#define INT1 0x01
>#define INT2 0x02
>...
だった?
#define INT0 0x00
#define INT1 0x04
#define INT2 0x08
...
とかじゃなかった?

128 :7743:2001/08/09(木) 15:11
>>120
ケケちゃんなみですね。
>>121
生まれたときから日本に存在されます。
悪戯はよせ!!

129 :仕様書無しさん:2001/08/09(木) 15:37
BITn じゃなくて、機能名つけない?
#define xxx_READY 0x04
みたいに。

130 :仕様書無しさん:2001/08/09(木) 15:47
レジスタの数*bit数分名前付けするのはちと大変だて。

131 :仕様書無しさん:2001/08/09(木) 15:50
しかし、cntなんて普通なものにも文句が付くとは時代の流れを
感じるなあ。そういう奴に昔の処理系とか渡したら気が狂って
しまうかもしれない。

132 :仕様書無しさん:2001/08/09(木) 15:51
そのうちニーモニックも略すな、フルワードで書けとか言い出したりして。

133 :仕様書無しさん:2001/08/09(木) 15:52
>>129
上位のルーチンではそうするが、そこから呼ばれる下位の直接IOをいじる
ルーチンではやっぱりBITnは必要になる。

134 :102:2001/08/09(木) 15:53
ごめん、こうだった。

#define HEX1 0x01
#define HEX2 0x02
#define HEX3 0x03
#define HEX4 0x04
......
#define INT1 1
#define INT2 2
#define INT3 3
#define INT4 4

135 :仕様書無しさん:2001/08/09(木) 16:03
>>134
全然違うじゃねーかよ。

それで、
#define INT1 1
#define INT2 2
を使ってる部分のソースは無い?

136 :仕様書無しさん:2001/08/09(木) 16:23
省略さないでいいところを省略し、
省略すると訳わからんようになるところを省略しているって
ソースコードならよく見かけるな

long vdt_count;

…vdt?なんかの拡張子かな。何か特殊なフォーマットのファイル関連のカウンターか?
そう思って質問してみた。

意味:
long Value_of_Download_DataCount

ワカルカイ!!(゚д゚)=3

137 :仕様書無しさん:2001/08/09(木) 16:32
>>136
ふつ〜は、VideoDisplayTerminalの略。

138 :102:2001/08/09(木) 18:07
>>135
>>134は偽者です

139 :135:2001/08/09(木) 18:26
>>138
しまった、まんまと騙された。
鬱だ、酒飲んで暴れよう。

140 :コメント無しさん:2001/08/09(木) 23:08
>>139
どの板で暴れるデスカ?

141 :仕様書無しさん:2001/08/10(金) 02:13
http://kaba.2ch.net/test/read.cgi?bbs=net&key=996822293

142 :ナナ萌え(゚д゚)ウマー:2001/08/10(金) 03:39
char buf[1024];
 ↓
Segmentation Fault したらしい
 ↓
char buf[10240];
 ↓
それでも Segmentation Fault
 ↓
char buf[102400];
 ↓
(以下略) (TдT;)マズー

143 :コメント無しさん:2001/08/10(金) 03:54
>>141
あのい?

144 : ◆nAOJmtak:2001/08/10(金) 04:08
まだ若いと思ってたが、cntがだめとは・・・
msgとかconとかrsとかもダメナノカー
何処まで略さなければ若く見えるのか判定キボーン

145 :仕様書無しさん:2001/08/10(金) 05:27
別にローカル変数に短い名前を付けるのは全然かまわんと思うぞ。
つうか、普通そうするだろ。「シンプルさ」はわかりやすさにつながるんだ、って
だれか言ってたよ。グローバル変数は当然フルスペルにするがな。
関数ならせいぜい数十行だから、変数の定義みて忘れることはほぼないだろ。
それより、変数の宣言にコメントつける方が大事。

for (boxNumber = 0; boxNumber < maxNumberOfBox; boxNumber++) {
...
}

より、

for (i = 0; i < max; i++) {
...
}

の方がはるかにわかりやすい。

146 :仕様書無しさん:2001/08/10(金) 07:29
>>136
ぎゃははは。
短くてシンプルというわけでもなく、わかりやすいという
こともなく、さりとて中庸というわけでもなく。
ラベル文字数制限8文字とか16文字のアセンブラだったら
こういう省略もアリだったかも。

147 :113:2001/08/10(金) 09:01
>>145

私もそうしてます。

ローカル変数みたいにスコープの狭いものはシンプルに、
グローバル関数や、メンバ関数みたいに広いものは説明的にね。

148 :仕様書無しさん:2001/08/10(金) 10:08
>>142
では定番でこれ

char *p;
strcpy( p, "string" );

149 :仕様書無しさん:2001/08/10(金) 10:32
n = printf(...);
if (n < 0) {
 exit(1);
}
n = printf(...);
if (n < 0) {
 exit(1);
}
n = printf(...);
if (n < 0) {
 exit(1);
}
(以下略)

printf() の戻り値をチェックときってどういう場合必要ですか?
うちでは毎回やってるんですけど。

150 :仕様書無しさん:2001/08/10(金) 10:33
>>147
糞はだまっとれ。

151 :仕様書無しさん:2001/08/10(金) 10:38
>>149
なんで、if (n == EOF) と書かずに、そんな持って回った書き方をする?

152 :仕様書無しさん:2001/08/10(金) 10:49
>>145
> 「シンプルさ」はわかりやすさにつながるんだ、って
> だれか言ってたよ。
Kernighan & Pike「プログラミング作法」かな。

153 :仕様書無しさん:2001/08/10(金) 11:08
>>149
fprintf() 系が失敗する場面だと、ファイルストリームが readonly だったり
マルチスレッド時にロックに失敗したとか考えられるけど、printf() だとメモ
リ不足でフォーマットに失敗した、int の最大値を越える数の文字を一気に出力
しようとした、ぐらいしか思いつかんな。

ところで無条件に exit() するだけなら、なんで

xprintf()
printf() を実行して戻り値が EOF なら exit()

というような関数を作らないの?

154 :仕様書無しさん:2001/08/10(金) 11:24
>>113
ローカル変数といえども長いものにすべき。
短くしてもいいのは、長くても30行以内の関数まで。
それを超えるときは長い変数名にしなければいけない。
自分さえ良ければそれでいいと思う考え方はやめましょう。
他の人がこまるのだから。

155 :仕様書無しさん:2001/08/10(金) 11:25
>>153
例えばなんだよ。揚げ足とんな、ぼきぇー

156 :仕様書無しさん:2001/08/10(金) 11:39
>>154

ものによるんでないの?

157 :仕様書無しさん:2001/08/10(金) 11:50
>>151
「出力した文字数を返し、エラーがあった場合負の値を返す」
というのが printf の仕様。
EOF が返ってくるとは限らん。

158 :仕様書無しさん:2001/08/10(金) 11:50
夏だねえ。

159 :名無しさん@Emacs:2001/08/10(金) 11:51
>>151
エラーを EOF って決めつけていいの?

>>149
っていうかさぁ、エラーチェックしかしないわけ?
おれは文字数カウントするのにいつも使ってるよ(嘘)。

160 :仕様書無しさん:2001/08/10(金) 11:53
>>151
MSDNのヘルプを見たら、printfは、
「失敗したら負の値を返します」と書いてあるが、
EOFを返すとは書いてないようだ。

161 :160:2001/08/10(金) 11:54
かぶった。

162 :コメント無しさん:2001/08/10(金) 11:55
>>154
関数が長いと
for (int i = 0; i < 3; ++i){
  2,3行の処理
}
っていうiまで長い変数にしないといけないのか?
やだな。

変数の内容についてじゃなくて、関数の長さで決めてるのがなんだかね。
お昼休みだねぇ。

163 :154:2001/08/10(金) 12:01
>>162
常識のない馬鹿は逝ってください。

164 :仕様書無しさん:2001/08/10(金) 12:03
>>162
お前プログラマーじゃないだろ?
情けなくなること書き込むなよ。

165 :154:2001/08/10(金) 12:09
>>162
一応馬鹿にもわかるように言っておくけど、
関数が長いと変数も多くなる分、int cnt1,cnt2,cnt3みたいな
使い方される変数が増えて把握するのが難しくなるからって
ことだよ。そんなばかな変数より、cnt_first_tryみたいに
なにに使われているかわかるようにしておけば他人にとっては
把握が楽になるだろ。長い関数になればなるほど。30行は
1画面におさまる範囲の長さってことの基準だよ。

166 :仕様書無しさん:2001/08/10(金) 12:10
>>155
?? 俺は153ではないが、揚げ足なんて取ってないと思うが?

167 :仕様書無しさん:2001/08/10(金) 12:15
昔、
「関数の長さは一画面に納まるように30行以内にすること。」
って規約がある会社があったぞ。(藁

168 :仕様書無しさん:2001/08/10(金) 12:18
そうだ。こう書くべきだ。

for(int nLoopCounterForHogeHoge = 0; nLoopCounterForHogeHoge < MAX_OF_HOGEHOGE; nLoopCounterForHogeHoge++){
  2,3行の処理
}

169 :仕様書無しさん:2001/08/10(金) 12:29
ハンガリアン記法ってなんですか。

[a-z]([A-Z][a-z]*)*

にマッチする変数名ですか。

170 :仕様書無しさん:2001/08/10(金) 12:30
だから、変数の使われ方しだいだろ。
単なるループカウンタなんかの命名はどうすんのさ。
>>162はそういいたいんじゃないのか?

171 :151:2001/08/10(金) 12:35
>>157,159,160

そうなのか、BCB++のヘルプでは、
>戻り値
>成功すると,printf は出力バイト数を返します。
>エラーの場合は,printf は EOF を返します。
となっていたよ、鬱だ。

172 :仕様書無しさん:2001/08/10(金) 12:44
>>165
一応馬鹿にもわかるように言っておくけど、

> 関数が長いと変数も多くなる分、int cnt1,cnt2,cnt3みたいな
>使い方される変数が増えて把握するのが難しくなる

そんな状態になったら関数を分割しろや。マヌケ。

173 :165:2001/08/10(金) 13:04
>>172
バカ君。こっちがいっている意味を理解できないならレスつけるな。
どうせ似非プログラマーなんだろうから話にならんは。

>>170
そんなものあたりまえだろ。そんなことを言ってるんじゃないって
ことぐらい常識で判断できるだろう。できてないからバカだといったんだよ。

174 :仕様書無しさん:2001/08/10(金) 13:10
cnt_first_tryって何の略?

175 :165:2001/08/10(金) 13:11
>>174
そんなとりあえず作ったものでどうこう言わないように。

176 :仕様書無し:2001/08/10(金) 13:16
>>173
バカバカうるさいよ。バカ厨房。氏ね、マヌケ。

177 :165:2001/08/10(金) 13:20
>>176
そういう態度が馬鹿だっていってるんだよ。

178 :仕様書無し:2001/08/10(金) 13:21
>>177
そういう態度がバカ厨房だっていってるんだよ。

179 :165:2001/08/10(金) 13:25
>>178
はいはい、そーですか。理屈で勝てなくなるとすぐこれだ。
もーどーでもいーや。馬鹿の相手しててもしょうがないからね。
贋プログラマーの相手しててもしょうがないしね。

180 :コメント無しさん 162:2001/08/10(金) 13:27
漏れ、似非プログラマーだから長い関数あんまり書かないしね。
3000行くらいのソースの中に、50行以上の関数って4つくらいしかないや。
全部で150くらい関数あるんだけど。

ローカル変数も長いものにするべきって、他人をばかばか言いながら主張するほど
頻繁には長い関数ないなぁ。

173=165=154はプロの方ですか?
やっぱりプロの方だと関数まとめて、長い関数たくさん作れるんですね。

181 :172:2001/08/10(金) 13:27
>>173
把握できないくらい長い関数を書いた時点で
お前の負けって事だよ。屑プログラマーさん。

182 :仕様書無しさん:2001/08/10(金) 13:29
 ┌──────────┐
 | 目指せ USO800 認証  |
 └──────────┘
   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)   <  30行は1画面におさまる範囲の長さってこと
  ( 部長)     |  の基準だよ。
  | | |    |  バカにもわかるように言うが。
  (__)_)    | 
            \___________________
―――――――――――――――――――――――─────
30行1画面っていつの時代だよ・・・・。
__  __________
   ∨     ∧_∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧∧ (#   )   <  バカバカうるせえぞ。
    (,  ;) ( 平SE )    |  罵倒すれば納得すると思ってるのか。
    /PG|  | │ |.     |
  〜(__,ノ  (__)_)      \_______________

183 :仕様書無し:2001/08/10(金) 13:29
>>178
君のどこに理屈が合ったんだ?
まぁ、降参ってことだろうから、
これ以上いじめないけど。

184 :仕様書無しさん:2001/08/10(金) 13:30
>>180
長い関数なんて作らない
短いのもあまり作らない

185 :仕様書無しさん:2001/08/10(金) 13:33
165みたいなのってプロジェクト内に絶対一人はいるよな〜

186 :仕様書無しさん:2001/08/10(金) 13:39
>>184
つまるところ、少なくとも C でプログラムを書いたことがない
まっ、まさか、常に main のみですかぁ〜
YesYesYesYes....

全てマクロで書いているというなら、それはそれですごいな

187 :仕様書無しさん:2001/08/10(金) 13:41
>>185
まあ、何かが間違ってしまったままいい大人になってしまったやつ
ってのはいるからねえ。

最初、煽り専門厨房かと思ったけど、30行うんぬんで
社内リストラされてるジジイのような気がしてきたよ

188 :仕様書無しさん:2001/08/10(金) 14:00
>>186
だーほ
行数じゃなく処理単位で関数分割しているからだ
80×24字端末を基準に話しているヤツらが多すぎ

189 :仕様書無しさん:2001/08/10(金) 14:00
for (int i = 0; i < max; i++) {
  処理1;
  処理2;
}
こういう単なるループカウンタなら普通に i って使うけど?cnt_try_first
ってこんなループカウンタ使ったことねえよ。>>168 みたいなのはまじで
勘弁してくれ。for (int i = 0; i < max; i++) こういうのはイディオム
として覚えない?

190 :仕様書無しさん:2001/08/10(金) 14:11
for(int nLoopCounterForHogeRow = 0; nLoopCounterForHpgeRow < MAX_OF_HOGEROW; nLoopCounterForHogeRow++){
for(int nLoopCounterForHogeColums = 0; nLoopCounterForHogeColums < MAX_OF_HOGECOLUMS; nLoopCounterForHogeColums++){
// 処理
}
}

二次元の場合はこのように書きなさい。
それから、関数の長さが30行を越えても、把握できるぞ。(藁

191 :186:2001/08/10(金) 14:12
>>188
まあ、それはいいとして、
「長い関数も短い関数も書かない」
に何の関連が?

まあ、軽いギャグにマジレスされてもなー。

「長い関数も短い関数も書かない」 = 「関数というものを書かない」
と曲解してやったんだよ

192 :仕様書無し:2001/08/10(金) 14:21
長い変数名がかえってプログラムを見にくくする事もある。
変数の使われ方の真意なんて、どうせ名前だけでは判断できない。
プログラムをある程度ながめて、やっと分かるものだ。
どうせ名前だけで判断できないのだから、短い方が覚えやすい。
という場合もある。

193 :名無しさん@揚げ足:2001/08/10(金) 14:33
>曲解してやったんだよ
捨て台詞が、えらそうでヨシ

194 :仕様書無しさん:2001/08/10(金) 14:48
>>189
おまえらやっぱり馬鹿だね。そんなのはあたりまえだっていったのに。
どうすればそんなにゆがんで捕らえられるんだろう。
頭が悪いかプログラマーじゃあない奴としか思えんが。

195 :関西人:2001/08/10(金) 14:58
cnt_try_firstって何語やねん

196 :仕様書無しさん:2001/08/10(金) 14:59
それがたとえループ変数でも、変数名を1文字ですませている
個所が頻繁に出てくるプログラムのデバッグやメンテはしたくない。

197 :コメント無しさん:2001/08/10(金) 15:10
>>196
やたら長い変数名つけてるプログラムのデバッグやメンテもしたくない。
関数自体は長くても、五行くらいしか使うところ無いのに「cnt_try_first」
とかやってたりね。

198 :仕様書無しさん:2001/08/10(金) 15:20
まぁ、まず「プログラミング作法」第1章スタイル を読んでから議論しようじゃないか。おれはする気無いけど(笑)

199 :コメント無しさん:2001/08/10(金) 15:25
>>198
議論するの?
中途半端な知識と経験をもとに煽ったり煽られたりして遊んでるんだけど、だめ?
ちゃんと調べないと書きこめないなら、194みたいな人が困るじゃないか。

200 :決定厨:2001/08/10(金) 15:26
誰が見ても何をする変数(関数)なのかを判断出来る程度の
長さに省略して命名するのが最善という事で決定。
各社、コーディング規約の更新をお願いします。

201 :コメント無しさん:2001/08/10(金) 15:29
>>200
テンポラリな変数は一文字とかにしとけば、どうでもいい変数ということが
わかりやすいしね。

202 :社会人5年:2001/08/10(金) 15:29
int int_Cnt ;
int int_Max ;

for( int_Cnt=0 ; int_Cnt < int_Max ; int_Cnt++ )
{
処理1();
処理2();
}
ならたいしてウザくもなく見にくくもなくっと思うんだが。
指標値でなくて回数判定用途のみにカウンタ使うんなら
while(1)
{
if( int_Cnt < int_Max )
{
break ;
{
int_Cnt++ ;
}
でもいいと思われ。

ついでに
>>196 マンセー
>>197 変数の内容遷移を追いやすいぞ

203 :仕様書無しさん:2001/08/10(金) 15:30
リストラされたオヤジPGがバカ連呼オナーニしています

204 :社会人5年:2001/08/10(金) 15:31
うぉ。インデントが消えた。ウツダ。

205 :決定厨:2001/08/10(金) 15:33
>>201
1文字変数が多いと、ちょっと長めの関数書いた時に
見直しするとつらくならない?
例えばiWkとかiTmpくらいの名前にしとけば多少は
見やすくなると思うんだけど、どう?

206 :社会人5年:2001/08/10(金) 15:34
>>200
作り手が楽できるだけやろ。
っちゅうか厨房は拡大解釈してなんでもそんなんにしてまう危険が大なのでやめて(悲願

207 :社会人5年:2001/08/10(金) 15:35
うおー>>205での指し示すところは>>200でなく>>201だ〜
逝ってきマス。。。

208 :社会人5年:2001/08/10(金) 15:37
↑おれって決定的に目が変?>>207 (数値間違い再び)

209 :仕様書無しさん:2001/08/10(金) 15:38
頭冷やしてきたほうがいいよ。

210 :決定厨:2001/08/10(金) 15:39
>>207
なんか滅茶苦茶ですな。
お仕事あんまり頑張りすぎない程度にやってくださいね。

211 :コメント無しさん:2001/08/10(金) 15:41
>>205
どうせそういう変数って前後3行くらいしか使わないからどうでもいいことに
してる。

>>206
厨房の拡大解釈は困るけどね。そういうやつらはもっとひどいことしてるから
変数名くらいどうでもいい。見ただけでへたれなことしてるのがわかるという
副作用もあって(゚д゚)ウマー

212 :お胸おっぱい:2001/08/10(金) 15:43
少なくとも、昼間っから 2ch で延々罵倒しあう連中に
ロクな PG はいない、ってことで宜しいか?

213 :仕様書無しさん:2001/08/10(金) 15:46
2ちゃんの投稿番号でパニックするんじゃ、変数名の省略なんかもってのほかなんだろ。

214 :コメント無しさん:2001/08/10(金) 15:48
>>212
多いに同意。
漏れはSEだから関係無いし。

215 :仕様書無しさん:2001/08/10(金) 16:06
つーか、変数名が短くていいって言ってる奴はただ単に自分が
楽をしたいからだけでは?それを逆にみにくくなるって少数例を
だして隠そうとしているだけにしかみえないんだけど。

216 :仕様書無しさん:2001/08/10(金) 16:08
↑ なんつーか、世間知らず

217 :コメント無しさん:2001/08/10(金) 16:11
落ち着いたようだからマジレス
変数名の命名規則などのコーディング規約は、実行・徹底することにそれなりのコスト
がかかるので、実害の無いものはなるべくゆるいものを使っています。
グローバル変数や外から使うクラス変数にはそれなりの規約を設けますが、他に影響の
少ないローカル変数に関しては、実際のコーディングのコストもですが、チェックを徹底
したり書きなおしたりするコストが馬鹿らしいので、どうでもいいことにしてます。

徹底できない規約ほど馬鹿らしいものはないし。

218 :仕様書無しさん:2001/08/10(金) 16:16
>>217
ゆるい規約マンセー!
C++のコーディング規約に「コメントは必ず/**/で囲む事」なんてのが
書いてあって、ちょっと抗議したけど聞き入れられなかった時は
もの凄く鬱になった。

219 :仕様書無しさん:2001/08/10(金) 16:20
>>217

ウチもそんな感じ。
入社当初は、"if"と後ろの"("の間にスペースを置く。なんて規約まで
あったけど、最近はローカルな事に関してはゆるくなった。

220 :仕様書無しさん:2001/08/10(金) 17:09
C言語なのにCOBOLみたく
「何文字目から何を書いて、何文字目からコメントを書く」と
指定されたところがあったな。しかもTAB禁止。

221 :仕様書無しさん:2001/08/10(金) 17:11
>>220
サラリーマンなら会社の規約に従えってゆーの。
何様だ?

222 :仕様書無しさん:2001/08/10(金) 17:18
おれが使ってたソース解析のタコツールは '//' のコメントが通らなかった。
きっと他に理由があるのでは?

223 :仕様書無しさん:2001/08/10(金) 17:56
>>221
契約社員の時だった。
それに従わなかったとは誰も言ってないだろ?ヴァーカ

224 :仕様書無しさん:2001/08/10(金) 18:12
「何文字目から何を書いて、何文字目からコメントを書く」
いうのは カラムに依存する古い言語のなごりですね
その会社まともじゃないですね

225 :仕様書無しさん:2001/08/10(金) 18:32
>>205
一文字変数はさすがにカウンタ以外には使わんなー。
だが、cnt_try_first は長すぎ

>>188
処理単位で分割しているとして、普通に把握できる範囲まで
分割できないのは無能。

まあ、一度に把握できる範囲が人より狭かったりー、関数レベルの仕様書を元に
コーディングするだけの奴隷プログラマだったらまあ多めに見てやるよ。

226 :仕様書無しさん:2001/08/10(金) 18:33
だから、べつにnumberOfHogeHogeでなくてcntでもいいんだって。
変数の宣言にコメント書けば。

/* HogeHogeの数 */
int cnt;

って、書いてあればわかるだろ?

227 :仕様書無しさん:2001/08/10(金) 18:36
>>223
給料もらってんなら愚痴るな!
何様だ?

228 :仕様書無しさん:2001/08/10(金) 18:38
>>225
だれもcnt_try_firstをそんなもんに使えとは書いていない。
バカが勝手にそう解釈しただけ。馬鹿の言うことを間に受けるな。

229 :仕様書無しさん:2001/08/10(金) 18:38
それと、オブジェクト指向言語だったら、クラス名がフルスペルに
なってるから、変数名はほぼどうでもいい。

ErrorMessage msg;

をわざわざ、

ErrorMessage errorMessage;

にする意味なぞない。

230 :仕様書無しさん:2001/08/10(金) 18:43
ループカウンタなら i や cnt で何が困るのか分からない。後で何やっている
か分からなくなるとでも? まあ、それ以外の変数は例えローカルでもあまり
略さず宣言しているけど。

231 :仕様書無しさん:2001/08/10(金) 18:44
>>229
そうだな。

232 :仕様書無しさん:2001/08/10(金) 18:51
>>230
だれもループカウンタの話なんてしてない。
馬鹿が話をごまかすためにループカウンタを持ち出しただけ。
1文字の変数を使うのは馬鹿がすることだといったら
ループカウンタはどうなんだって言い出して、話をごまかそうと
しただけ。

233 :仕様書無しさん:2001/08/10(金) 19:05
ところでさ、暇だろ。おまえら。
俺は仕事終わって喫茶店でまたーりしてるところ

234 :名無しおやぢ:2001/08/10(金) 19:18

SQLの文字列がグローバル変数(現在メンテ中・・・)

こんなモノスゴイのはまさかガイシュツぢゃないよね?

235 :仕様書無しさん:2001/08/10(金) 19:55
cnt_try_firstって何って意味なの?
長いのに意味不明なんですが。型もわからないし。

nFirstTryCountでいいじゃん。

236 :仕様書無しさん:2001/08/10(金) 19:56
>>235

省略似非英語

237 :仕様書無しさん:2001/08/10(金) 20:40
>>220
もしや○○○ABCって会社では?

238 :仕様書無しさん:2001/08/10(金) 21:10
>>234
SQLの変数はグローバルでないといけない
システムはありますが
それの解釈をまちがえてしまったのかもね

239 :仕様書無しさん:2001/08/10(金) 21:13
>>229

メンテする事考えて分かりやすい変数名にしたんでないん?

240 :仕様書無しさん:2001/08/10(金) 21:17
>>235
リストラされた気の毒な元PGを
いじめてやるなよ。

241 :仕様書無しさん:2001/08/10(金) 21:36
短くするにもセンスってのがある
countをcntにしたくせに、別のあるところでは
controlをcntにすんなゴルァ>前任者

今かかわってるのはC言語で1行70文字。
おかげでひたすらネストを浅く書くために腐心する
癖がついたよ。藤原流になっちゃった

242 :仕様書無しさん:2001/08/10(金) 21:42
>>235

このバカが、大文字小文字をで変数名をつけるな。
K&Rを読んでみろ、そんな表記はどこにもないぞ。頭悪いな。おまえ。

243 :仕様書無しさん:2001/08/10(金) 21:46
>>242
こういうのを「K&R厨」と呼ぶことを提案します。

244 :仕様書無しさん:2001/08/10(金) 21:47
 ┌──────────┐
 | 目指せ USO800 認証  |
 └──────────┘
   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)   <  頭の悪いバカにもわかるように
  ( 部長)     |  私が命名してあげよう。
  | | |    |  cnt_first_tryなんかどうだ?
  (__)_)    |
            \___________________
―――――――――――――――――――――――─────
ネイティブどころかインド人にも失笑されますよ。
__  __________
   ∨     ∧_∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧∧ (#   )   <  ハンガリアン記法を知らないのカー
    (,  ;) ( 平SE )    |
    /PG|  | │ |.     |
  〜(__,ノ  (__)_)      \_______________

245 :仕様書無しさん:2001/08/10(金) 22:09
>>244
ハンガリアン房発見です。それを使ってるのはMFC使いだけです。

>>243
ローカル変数に大文字を使うのは普通の感覚ではできないよ。

246 :仕様書無しさん:2001/08/10(金) 22:13
>>242
> このバカが、大文字小文字をで変数名をつけるな。
> K&Rを読んでみろ、そんな表記はどこにもないぞ。頭悪いな。おまえ。

おいおい、正気か?おまえ?
って、夏厨か。マジレスしてしまった。さげ。

247 :仕様書無しさん:2001/08/10(金) 22:18
>>246
K&Rうんぬん以前にローカル変数に大文字使うのは変では?
普通の感覚ではできないけど。

248 :仕様書無しさん :2001/08/10(金) 22:19
ぽーりゃんど気泡

249 :仕様書無しさん:2001/08/10(金) 22:19
MSのサンプルソースがC言語の美しい慣習をぶち壊してしまったんだよ。

250 :仕様書無しさん:2001/08/10(金) 22:20
ぽーりゃんど気泡

251 :仕様書無しさん:2001/08/10(金) 22:20
>ローカル変数に大文字を使うのは普通の感覚ではできないよ。
>普通の感覚ではできないけど。
 そうか?別に気にならん。

252 :仕様書無しさん:2001/08/10(金) 22:23
バカが。K&Rも読んだことないんだろ?似非プログラマーが。
お前みたいなのがいるから、迷惑するんだ。バカ。

253 :仕様書無しさん:2001/08/10(金) 22:23
>>251
そーか?職業プログラマーじゃないでしょ?
他の人はどーなの?

254 :仕様書無しさん:2001/08/10(金) 22:25
>>252
ローカル変数に大文字使ったら
関数はどうやって書いてるの?

255 :仕様書無しさん:2001/08/10(金) 22:27
>>253
俺は職業プログラマーだが、気にならんぞ。
ひょっとして、俺(および俺のいる会社)は
標準から大きく外れてるのか?

心配になってきたから、誰か教えてくれ。

256 :仕様書無しさん:2001/08/10(金) 22:30
>>255
ローカル変数は小文字だけってのは普通だと思うけど。
ハンガリアン記法でもそうだし。
会社の他の人のソースはどーなってるの?
適当なところからソースをダウンロードして調べてみても
たいていの人がローカル変数には小文字しか使ってないと思うけど。

257 :251:2001/08/10(金) 22:31
>>253
ごめん、職業プログラマだ。変か?
逆に cnt_first_try とかの方が、冗長で見にくいと思うのだが……。
つか、あんまり気にしてない。

258 :仕様書無しさん:2001/08/10(金) 22:32
うちもローカル変数は全部小文字。

259 :仕様書無しさん:2001/08/10(金) 22:34
>>257
cnt_first_tryはどうでもいいけど、大文字を使うと、関数名とかと
かさならない?一般的にはグローバル変数は全部大文字で、
関数名は先頭大文字で、DoDraw見たいな感じ。でローカル変数が
全小文字ってのが普通だと思うが。

260 :251:2001/08/10(金) 22:39
>>259
そういう使い分けは一切してない。全部大文字小文字のまぜこぜ。
先頭大文字のパターン。
便利もしくは見やすいのなら、次の仕事でやってみようかな。
ただし、全部大文字ってのは#defineとかぶらない?

261 :259:2001/08/10(金) 22:42
>>260
わける最大の理由は他の人がみてわかりやすくなることだよ。
MFCがハンガリアン記法を取り入れたのもそうだし。
自分だけで開発して、自分だけで保守していくんなら何も
いわないけど。

262 :仕様書無しさん:2001/08/10(金) 22:44
今の話と全然関係ないんだけど、『cnt_first_try』って、すごいな。
そのあとも、全然平気な顔して
>>165
>30行は1画面におさまる範囲の長さってことの基準だよ。
と、「知らないのかそんなことも、この厨房」
みたいな態度なのが特に。
じわじわと笑いがこみ上げてくる。

263 :259:2001/08/10(金) 22:51
>>262
変数名の名づけ方としてはおかしくはないと思うけど。
ハンガリアン記法で書きたいのならべつだけど。

264 :仕様書無しさん:2001/08/10(金) 22:52
職業プログラマのMFC使いですが・・・。

ローカル変数:1文字目が小文字の大文字小文字混在
例:int nLengt; char szName;
グローバル変数:g_の接頭詞をつける(ほとんど未使用)
例:int g_nCountOfNode;
メンバ変数:m_の接頭詞をつける
例:m_hDC;
関数名:大文字小文字混在
例:GetCountOfNode(void)

こんな感じです。

265 :264:2001/08/10(金) 22:54
全部大文字は、#defineと列挙かな。あと、typedefした構造体とか。

266 :仕様書無しさん:2001/08/10(金) 22:55
>>264
別のこと聞いてもいいですか。
MFCって何人かで開発してるの?それとも一人?
何人かではどうやって開発するの。逆に能率下がりそうなんだけど。

267 :仕様書無しさん:2001/08/10(金) 23:00
>>264

バカが。
K&Rも読んだことないのに職業プログラマーを名乗るなカス。
お前みたいなのがいるから、プロジェクトが迷惑するんだ。
バカ。 氏ね。勝手にルールを決めるな。

268 :仕様書無しさん:2001/08/10(金) 23:02
266が何が言いたいのか理解できない。

269 :仕様書無しさん:2001/08/10(金) 23:03
「MFCを使うと、複数人数での開発は能率が悪い。」

という意味じゃない?

270 :4年目:2001/08/10(金) 23:29
>>267
K&Rは読んだけど、俺も264と同じだよ。
ハンガリアン記法だと、接頭辞は型を小文字で書いて、
それ以降は、大文字小文字混ざりでしょ。

いまだにK&Rだけがバイブルということは、
あなたの会社はそこまでの技術で食っていけるってこと?
組み込み屋さんとかはそんな感じなのかしら。

271 :てんさいぷろぐらむぁ(偽) ◆7L5ixu/U:2001/08/10(金) 23:35
正直
もはや小文字のみの変数は読みづらい体になっとります。
Winが多かったからかな。

ハンガリアン記法は結構昔から批判されてるけどね。
個人的にはハンガリアンが一番わかりやすいんだよなぁ・・・・

272 :仕様書無しさん:2001/08/10(金) 23:37
表記規則はともかく、名前に型情報を含めるのはわかりやすいよね。

273 :仕様書無しさん:2001/08/10(金) 23:39
よく解かんないんだけど、ひょっとして↓これってこのスレとリンクしてるの?
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=980003331&st=412&to=416&nofirst=true

274 :仕様書無しさん:2001/08/10(金) 23:40
型情報は意味内容と思う。

275 :10:2001/08/10(金) 23:51
#define あぼ〜ん delete

276 :コメント無しさん:2001/08/10(金) 23:56
ハンガリアンで型を変数名に含めると、クラスの構造がなんかで変わったりして
クラスを変えたときに、変数名まで変更しないといけなくなって、本末転倒。
そもそも、新しいクラス作ったら新しいプレフィックス考えないといけなくなって
なんだかなぁ。
見やすいことに有為差もあまり感じられないし。
ということでハンガリアンきらいなんですが。

277 :仕様書無しさん:2001/08/11(土) 00:02
Javaでも m_ を使ってくれ、読みづれーYO。

278 :仕様書無しさん:2001/08/11(土) 00:02
ハンガリアンとは言わないがキャスト時に型が分かってると嬉しいというのはある。
複数の型が混じってる式とかポインタをキャストする時にはあった方が嬉しいには嬉しい。
ハンガリアンでは接頭辞に型以外の情報(szとかcとか)も入れるがあれはむしろウザい。
そういうのは変数名本体に含まれるようにするからね。
とは言え、実際のところハンガリアンのおかげで特に開発効率が上がったという気はしない。
見た目が統一されることで自己満足はできるけど。

279 :仕様書無しさん:2001/08/11(土) 00:05
ローカル変数小文字ってのはCの話じゃ?
Delphiだと大文字小文字混合が普通でしょ、多分。

280 :仕様書無しさん:2001/08/11(土) 00:06
そもそも型が分からなくなる程宣言と離れている事が問題
ってのはあくまでCでの話か。C++じゃヘッダーだからしょうがないか。

281 :コメント無しさん:2001/08/11(土) 00:06
>>277
Javaはローカル変数は一文字とか適当な名前にして、クラス変数はまじめな
名前をつけることで区別がつくような慣習になってる気がする。

282 :仕様書無しさん:2001/08/11(土) 00:07
>>279
 Delphiは関係ないから気にしなくていいよ。

283 :コメント無しさん:2001/08/11(土) 00:12
>>279
そうだね。
VCLのソース見るとかなりまじめな変数名のつけ方だ。
型名を表わすプレフィックスは使ってないけどね。

ifの中だけとかのローカルな変数が定義できないとか使う場所の近く
で定義できない(よね?)のも一因かと。

ループカウンターは大文字のIだったが。
思われる。

284 :仕様書無しさん:2001/08/11(土) 00:17
クラス変数は
thisかSelfみたいの全部つけてくれれば一目瞭然

285 :仕様書無しさん:2001/08/11(土) 00:21
いいからお前らK&R読め。V&Rじゃないぞ。

286 :コメント無しさん:2001/08/11(土) 00:24
>>283
削除し忘れでごみが。。。
5文字リレー小説みたいになってしまった。

ウツだ。風呂逝ってこよう。

287 :仕様書無しさん:2001/08/11(土) 01:09
ちうかタグジャンプでスコンと飛べるエディタありゃあ
気にならないだろう。班我利あん表記は変数の型を一意に保証
するもんじゃないんだからさ。

288 :コメント無しさん:2001/08/11(土) 01:30
>>287
VC++のエディタは、カーソル持っていったらツールチップで型がでると
聞いたが気のせいか?

289 :仕様書無しさん:2001/08/11(土) 09:05
>>288
Visual Studio はSPが出るたびに当てているけど、変数の型の
ツールチップはときどき出なくなることがある。んなもんで、アテ
にはしていない機能だ。
(何かの拍子にメンバーの補完機能も動かなくことない? 明らかな
コーディングミスに起因するものは別として)

290 :仕様書無しさん:2001/08/11(土) 09:07
>>289
ツールチップに頼るな

291 :仕様書無しさん:2001/08/11(土) 09:08
>>289
めったにないけど、1ヶ月に1度ぐらいはある。

292 :仕様書無しさん:2001/08/11(土) 10:36

#!/bin/bash

kill `ps axw | grep pppoe | cut -b2-6`

なんじゃこりゃ!

293 :仕様書無しさん:2001/08/11(土) 13:06
killallは使えないのか?

294 :仕様書無しさん:2001/08/11(土) 14:30
たまにないことがあるcygwinとか >kilall

295 :仕様書無しさん:2001/08/11(土) 15:15
>>289

ncbか何かが壊れてるんでないの?
削除してみ

296 :仕様書無しさん:2001/08/11(土) 15:16
>>295
お前が削除されねーよーに気をつけな!

297 :仕様書無しさん:2001/08/11(土) 15:24
>>295

? J013161

298 :297:2001/08/11(土) 15:24
ごめん >>296

299 :仕様書無しさん:2001/08/11(土) 15:56
「給料もボーナスも何もいらないから辞めさせてくれ!」

というコメントが書いてあった。何があったんだ?

300 :仕様書無しさん:2001/08/11(土) 16:48
新人なんですが、
難しそうだなー
とか思ってたら変数名が無駄に長いだけだった。

301 :仕様書無しさん:2001/08/11(土) 17:58
短い変数名&関数名嫌い。でも、長すぎも嫌い。
複雑な処理をする関数の場合は、ローカル変数にもフルスペル&コメント。
簡単な関数は、想像できる範囲の長さの名前。
短い関数のループ用変数は、iとかxとかは使う。

302 :コメント無しさん:2001/08/11(土) 18:05
>>301
>複雑な処理をする関数の場合は

「30行以上の関数」みたいな、変な基準じゃないからage
テンポラリの変数も一文字じゃだめ?

303 :仕様書無しさん:2001/08/11(土) 18:07
>>301-302
もういいかげんにしろや。な。
虚しいだけだろ。

304 :コメント無しさん:2001/08/11(土) 18:38
>>303
え?

305 :コメント無しさん 304=302:2001/08/11(土) 18:48
>>303
一画面30行の基地外さんですか?

306 :仕様書無しさん:2001/08/11(土) 21:04
>> 292

確かにイタイ。

普通は素直に killall まあ pidof で調べてから kill してもよい。
こういうものが使えないOSもあるし ps 結果を grep したっていいんだが、

一番の問題は 292 はバグっていることだ。

307 :仕様書無しさん:2001/08/11(土) 21:36
30行規約があるので、開発者はDOS窓でVZかMIFES、
もしくはEMACSかVIをターミナルで使ってください。

308 :コメント無しさん:2001/08/11(土) 21:49
>>307
telnet端末スレのemacs基地外さんと同一人物だったらemacs以外と並べるなヴァカと
怒られてしまいます。

309 :しょわぁ〜:2001/08/13(月) 11:52
ココに書いてあることで、内容に突っ込みを入れられないようだと、
プログラマとして終わっている・・・ってことっすか?
・・・・・・ヤヴァ!何個か、わからねぇ。

310 :仕様書無しさん:2001/08/13(月) 12:47
ツッコミ入れれないのはいいけど、矛盾を感じない、
えっそれ常識でしょ? なんて言ってたらダメだめやね

311 :仕様書無しさん:2001/08/15(水) 11:51
/*
if (条件文) { *//*
処理 *//*
} else { *//*
処理 *//*
} *//*
*/

こうやってコメントアウトされてた。

312 :仕様書無しさん:2001/08/15(水) 12:51
// return (0);
  return (-1);  // エラーじゃゴルァ

313 :仕様書無しさん:2001/08/15(水) 13:03
#include <math.h>
#include "math.h"

ファイル名別にしてくれ〜

314 :仕様書無しさん:2001/08/17(金) 08:55
20Tabと16Tabと0Tabをつかってる
キティなソースをみた。

315 :仕様書無しさん:2001/08/17(金) 08:56
くっさい男がいたもんだー  まーちでばったり  出会ーたらー

こーれはー たまらん 逃げ出そうー

ひーろゆきーくーさいー  電車にのーるーなー

あーんたーがー一番ー  キムタクー二番ー

  はっ! どんどん !

316 :仕様書無しさん:2001/08/17(金) 09:31
sage

317 :◆cyXwTZ4s:2001/08/17(金) 11:13
/*

#世界に広げよう♪#

あなた コンピー辞めますか?

それとも 人間辞めますか?

みつお


*/

318 :VB:2001/08/17(金) 22:58
Select Case 変数
Case 1
If 変数 = 1 Then
Call subproc1
End If
Case 2
If 変数 = 2 Then
Call subproc2
End If
Case 3
If 変数 = 3 Then
Call subproc3
End If
End Select

319 :名無しおやぢ:2001/08/18(土) 10:55
>>318
たぶん、何も考えずに条件反射(?)で手だけ動かして書いたのでしょう。
サル並みの知能ですな。(藁

320 :仕様書無しさん:2001/08/18(土) 11:45
>>318
あいかわらず比較演算子と代入演算子が同じだなVBは。

321 :/名無しさん[1-30].jpg :2001/08/19(日) 23:44
if(XXX)
  {
    AAA
    BBB
    if(YYY)
      {
        CCC
        DDD
      }
  }
こういうインデントつける人やめて欲しい

322 :dj:2001/08/19(日) 23:51
>>321
そりは、GNU のストール万が布教している書き方だな。

323 :仕様書無しさん:2001/08/20(月) 00:13
VBのSelect文って(他の言語でもそうなのかな?)

Select x
  Case 1
    処理1
  Case 2
    処理2
End Select

↑みたいに、
SelectとCaseでインデント2個分下がるから嫌なんだけど
なんかいいアイデアある?

324 :323:2001/08/20(月) 00:14
ごめん。まちがえた。

Select Case x
  Case 1
    処理1
  Case 2
    処理2
End Select

だね。逝ってきます。

325 :仕様書無しさん:2001/08/20(月) 00:15
Select x
Case 1
  処理1
Case 2
  処理2
End Select
で、いいだろ

326 :仕様書無しさん:2001/08/20(月) 00:35
>>320
そうそう勝手に変わっても困るだろう。

327 :仕様書無しさん:2001/08/20(月) 00:50
>>323
325になると見にくい。2個インデント(・∀・)マンセー!!

328 :仕様書無しさん:2001/08/20(月) 01:27
遅レスだが
#define BIT(n) (1 << (n))
ではだめなのか?

329 :仕様書無しさん:2001/08/20(月) 12:00
>>328
いっしょに作業する仲間にもよると思うけど、
素直に直に書くほうがいいかと...
それに、#defineは、多用しないほうがいいとおもわれ..

330 :みのるぽん:2001/08/20(月) 15:04
>>328
これくらいは普通だよな。
この define くらいは社内共通で使うインクルードファイルに
入れてもおかしくない程度の基本だと思う。

331 :仕様書無しさん:2001/08/20(月) 19:34
#include <stdio.h>
#define CALL

int main()
{
 CALL printf("hello, world\n");

 return 0;
}

なぜだか知らんが関数を呼ぶときは
CALL を関数の前に付けることになっている。
関数を呼ぶことを明示的に記述することにより
読み間違いを防ぐ効果があるという理由から。
if (...)、 for (...) など関数と間違えるかららしい。
アホだ・・・

332 :旅人プログラマ:2001/08/20(月) 20:41
>>331
これ、どっかで見た事あるなぁ(w

333 :名無しおやぢ:2001/08/20(月) 21:10
>>331
VB(A)なら一理も二理もありますけど、Cでマクロ定義してまで、というのは
どうも・・・ね。
(Pascal風マクロを思い出してしまった。激しくガイシュツですが)

334 :仕様書無しさん:2001/08/20(月) 22:45
>>331
アセンブラかCOBOLから来てるのかなあ?
C言語に手を出す資格のない会社ですなー。

335 :仕様書無しさん:2001/08/20(月) 22:54
>>331
凄いな。間違えるって、、、、
その職場の人たち、人の名前呼ぶ前に
 (男性の)前田係長、今日飲みに逝きましょうよ!
とか
 (女性の)秋本先輩、彼氏元気ですか〜?
とか喋ってそうだな(w

336 :仕様書無しさん:2001/08/20(月) 23:16
>>331
すっすごすぎる・・・・
if()とかforを関数と間違えるなんて・・・・
むしろ、そんな会社に入ってみたい(藁
体験入社できないかな?

337 :仕様書無しさん:2001/08/20(月) 23:29
>>331
#define IN
#define OUT
#define INOUT

int foo(IN int hoge1, OUT char *hoge2, INOUT char *hoge3)
とかいうのも見たことあるな。

338 :仕様書無しさん:2001/08/20(月) 23:33
>>337
そんな気休めにしかならないマクロは、むしろ「マクロ定義と実際の
使われ方が違っていても、エラー一つ出やしない」という点で、有害
なだけだと思うんだがなぁ。本気でやるなら、エラーを検出できるプリ
プロセッサでも作らないと。

それなら const でも付けたほうが 256 倍マシだね。

339 :仕様書無しさん:2001/08/20(月) 23:34
>>337 でもうちだとどうせコメントでINとかOUTとか書いてるからそっちのほうが
楽でいいかも。

340 :仕様書無しさん:2001/08/21(火) 01:13
"if"や"for", "while"と"("の間には必ずスペース入れる人を見たことあるな。
関数にはスペースを入れないことで、視覚的に区別できるとか逝ってたぞ。

341 :仕様書無しさん:2001/08/21(火) 01:31
それは俺のことか? >>340
あ、関数にもスペース入れるけどな。1行目に関しては俺と同じだ。

342 :仕様書無しさん:2001/08/21(火) 02:41
if for while の後ろにはスペース空けてるよ。普通じゃないのか?
関数のときは空けないよ。あとからマクロになったりすると困るから。

343 :仕様書無しさん:2001/08/21(火) 02:47
そういう無駄な冗長性のある書き方は好かん

344 :仕様書無しさん:2001/08/21(火) 06:28
>>340
BSDスタイルとかいう奴だっけか。
最近慣れてきた……。

345 :仕様書無しさん:2001/08/21(火) 10:06
>>337
CORBA みたいだな。

>>343
どこが冗長性なんだ? 可読性のためだろうが。

>>344
っていうか K&R 流の流れを汲んでいるかもな。

346 :仕様書無しさん:2001/08/21(火) 10:12
皆さんconst付けていますか?
わたしは気合を入れた下位層を作るときしか
付けてないんですけど。

347 :仕様書無しさん:2001/08/21(火) 10:40
>>340
MSのVisualStudio使ってるからあんまり考えたことないな。
色づけしてくれるし。

348 :仕様書無しさん:2001/08/21(火) 10:43
>>346
ローカルな関数にはつけないけど、共通サブつくって、といわれた時は、つけるようにする。
また、後輩君に見られそうなときは、極力つける。

349 :仕様書無しさん:2001/08/21(火) 10:57
ループがベタ展開されていたとき。しかも1000行を超えて鬱だ氏。

350 :仕様書無しさん:2001/08/21(火) 11:55
>>346
関数パラメータのconst char* みたいな場合はつける。
constつけない関数書いて、あとで別のところで使おうとしたとき
上位も下位もconstついててうまくはまらないことがあった。
ライブラリ関数にもconstついてるしconstなものはconst付きで
統一したほうがいいと思っている。

メンバ関数() const;はつけない。
派生クラスでメンバ変数いじりたくなったとき困るから。

351 :仕様書無しさん:2001/08/21(火) 13:13
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "hensuu.h"
#include "kansuu_head.h"

#include "main.c"
#include "graph.c"
#include "sub.c"
#include "keys.c"
#include "filefile.c"


これには流石に参った。

352 :仕様書無しさん:2001/08/21(火) 14:17
>>351
ス・テ・キ・ス・ギ

353 :仕様書無しさん:2001/08/21(火) 14:21
>>351
実はワクワクしながらsub.cあたりを開けてみただろ?

354 :351:2001/08/21(火) 15:01
>>353
まあね(w
なんでも、makefileの記述方法わからなかったからこうした、という話だった。

355 :仕様書無しさん:2001/08/21(火) 19:53
filefile.cがフラフラ.死に見えてしまう

356 :仕様書無しさん:2001/08/21(火) 20:45
filefile.cってどんなプログラムが詰まってるんだろ・・・。
ほかのは想像できるが・・・・。
ところでhensuu.hってなんだ!?
うーん・・・こんなことしやがるならmakefile作れなくても手でやってくれたほーが・・・。
というより、普通makefileの書き方勉強するだろ・・・。
なぜ、こんな手段にうってでた!?

357 :旅人プログラマ:2001/08/21(火) 21:40
>>356
意外といるのよ、その場しのぎでincludeする人が…
っていうか、過去の私もそういう事していた(w

358 :仕様書無しさん:2001/08/21(火) 21:51
>>351
#include "L1-100.c"
#include "L101-200.c"
#include "L201-300.c"
(中略)
#include "L2201-end.c"

これよりかは圧刀b的にマシ…
もちろん、皆さんの想像どうりmain関数をきれいに100行ごと
にファイルに分けただけです。

359 :仕様書無しさん:2001/08/21(火) 21:54
>>358
あはははははは、はぁ。

360 :♯6411:2001/08/21(火) 22:08
>>346
>>350
漏れは char const *p のような書き方が好きだ。
時々、人を罠に陥れるために、
char const *const p とか掻いてみる(藁

361 :351:2001/08/21(火) 22:51
>>356
単なる、そのプロジェクトで使用するファイルを操作する関数群だった。
file.cでは何か問題が起きるかもしれなくて恐いからfilefile.cにした、と
真顔で言われて・・・当時は「俺が間違っているの????」と真剣に悩みそうになった。。

362 :仕様書無しさん:2001/08/21(火) 23:19
コードのインクルードは、大学の研究室(情報系ではなく電子系の
計測用)のソフトでしか見たことないなあ。
就職してからはないぞ。

363 :351:2001/08/21(火) 23:29
>>362
俺は学生時代も見たことなかったよー
社会人になってから、お役所な”前もそうだから変えようと思わない”のが常識な人が
いる職場もいっぱい見てきた。

 対応OS:Windows95
え、Win98は無視しているんですか? と聞いたら「だって前も95だったし」「98入れても同じだと思うし」「95で動くなら98でも動くだろ」
とかいう人もいたしねー。

364 :仕様書無しさん:2001/08/22(水) 00:09
コードのインクルード…
DOSの頃は結構見かけたぞ。統合環境なしだと make の
使い方がわからんから、と言ってやってる人がいた。
その頃の習慣を今も引きずっているのではない?

365 :仕様書無しさん:2001/08/22(水) 00:12
研究室も会社も、ピンきりってことだよ。

NEC-98の寿命がつきつつある頃、N88-BASICで書かれた
計測用のコードが現役だった研究室も珍しくないからね。
(今はしらん)

ガイシュツだけど、就職して"Warning"をワーニングと読むのを
聞いたときは萎えたな。

366 :仕様書無しさん:2001/08/22(水) 00:12

環境のせいでmake使えなくても、せめてシェルにコンパイラの
実行パラメータ書いておくくらいはできると思うんだが…

367 :仕様書無しさん:2001/08/22(水) 00:16
最近のマシンは早いからまだしも、286とか386の時代だったら、
コンパイルにすんごい時間がかかるんでない??

368 :可読性:2001/08/22(水) 00:19
人によって、何が読みやすくて何が読みにくいっていう基準が違うから
こういう議論になるのかも。

俺は1画面になるべく大量の情報を入れる事と、各トークンの見やすさの
トレードオフを重視してる。

で、俺が書いたソースをを他の人間が見ると
「**さんのソースって圧縮率高いっすねー」
って言われるよ。鬱だ・・・

369 :仕様書無しさん:2001/08/22(水) 01:07
makefile知らなくてもバッチファイルで出来るじゃねーか・・

370 :仕様書無しさん:2001/08/22(水) 01:08
>>367
Win3.1の頃は、コンパイル開始!さー40分何もできないな。
みんな休憩だ休憩! ってのが黙認されてたっけな

371 :仕様書無しさん:2001/08/22(水) 12:51
ちと悲しくなったコーディング前にきたメールの文章

  担当者はデファイン名にカナ読みをなるべく使わないようにして下さい。
  従来のデファイン名で流用出来るものがあればなるべく流用して下さい。
  デファイン名が重複することのないよう注意して下さい。

デファイン名って…。

372 :仕様書無しさん:2001/08/22(水) 12:56
続いて

#define MODE_1 0x0101 // 注意!ここはHEXで書かれています!DECではないので間違えないように!!
#define MODE_2 0x0011 // 注意!ここはHEXで書かれています!DECではないので間違えないように!!
#define MODE_3 0x0111 // 注意!ここはHEXで書かれています!DECではないので間違えないように!!

0xで書かれてるのに10進数だと思うバカがどこにいるんだよ…

373 :仕様書無しさん:2001/08/22(水) 13:00
更に

「当プロジェクトはマルチタスクな処理になっています。
 担当者は前回の処理の流れを解析し、タスクについて理解した上で
 作業を行うようにしてください」

main( ** )
{
if( flg & MODE_1 ) start_mode1();
if( flg & MODE_2 ) start_mode2();
if( flg | MODE_3 ) start_mode3();


・・・マルチ?タスク??

374 :仕様書無しさん:2001/08/22(水) 13:53
ちょっとずれるけど一応ソースの話ってことで。

これ移植してね、とソースを渡された。
ためしにビルドして動かしてみたら出荷済みの製品と動作が違う。
これ本当にリリース版のソースなんすか?と聞いてみたら
リリース版のソースを担当者がいじった奴との回答を得た。
リリース版のソースは存在しないとのこと。
パッケージなんすけどこれって普通?

375 :仕様書無しさん:2001/08/22(水) 13:54
>>372
それは、間違えた奴が実際に居たからだと思うぞ。

376 :仕様書無しさん:2001/08/22(水) 15:16
>>374
普通ではないし、普通と思いたくもないが聞いたことも見たこともあるな。
ソースコード納品しないような職場だと、「履歴残してるからいいじゃないか」
「VSSで管理しているからいいじゃないか」と真顔で言う人がたまにいます。

以前いた職場なんて、テストデータは正常動作が認められたら破棄してた。
3時間かかって作っても一瞬で破棄。バグ見付かったらまた3時間かけて作成。
無駄の極地だったのでバックアップとっておいたら「テストデータを作るのも
仕事のうちだ」と訳のわからん説教されたことがある。

377 :IWGPベビー級王者:2001/08/22(水) 15:22
漏れが以前勤めていた某地図情報システムの会社。
お客様に納めた製品のソースを無くしたらしい。
そのとき社長が逝った言葉は、
「ほっとけ」
辞めたあとに聞いたが、辞めたくなるよ。

378 :仕様書無しさん:2001/08/22(水) 16:01
>>376
テストデータを造ることくらいしか出来ないアフォの仕事を
取るなという意味だと思われ(藁

379 :仕様書無しさん:2001/08/22(水) 16:17
>>378
つまんない
マジなら日本語学校逝け

380 :基盤さん:2001/08/22(水) 16:33
>>376
>「VSSで管理しているからいいじゃないか」
その通りだと思うが?
必要なバージョンでチェックアウトせれ

381 :376:2001/08/22(水) 17:04
VSSでバージョン管理しててもサーバーのバックアップを
全然取ってない環境なのであった。説明足らずでスマヌ。
製品出したら、一度ぐらいバックアップとれっつーの。

382 :374:2001/08/22(水) 17:10
やっぱ出荷したらソース保全するのが当たり前だよね。
自分の時は当の担当者が他社出向中で、仕方がないので上司に、
出荷時のソースからの変更点だけでも分からないか、
ってしつこく聞いたら「ぐだぐだ言わずに納期までにやれ!」とか言われたよ・・・。

383 :仕様書無しさん:2001/08/22(水) 17:58
>>378 の文章の意味をきちんと理解できるわしも
日本語学校に行った方がいいのかのぅ

384 :仕様書無しさん:2001/08/22(水) 21:31
をい。今、ウチのPGからあがってきたコード見てたら、
ノードの意味で、

#define SAVE_NODO 4


と書いてあったゾ。農道じゃないんだから・・・
それに、括弧で括ってほしいな。

385 :仕様書無しさん:2001/08/22(水) 21:46
>農道じゃないんだから・・・

これは書かないほうが良かった
その上で

>いや、括弧の問題じゃないだろ
と後続の人につっこんでもらえれば完璧

386 :旅人プログラマ:2001/08/22(水) 21:52
>>384
Const B_KOUDO = 1
っていうのがあったなぁ…(鬱

387 :仕様書無しさん:2001/08/22(水) 22:05
テンパってるな。

388 :仕様書無しさん:2001/08/22(水) 22:35
>>384
どこを括弧でくくればいいの?

389 :仕様書無しさん:2001/08/22(水) 22:46
(#define SAVE_NODO 4)

390 :仕様書無しさん:2001/08/22(水) 23:23
>>384
なぜに括弧でくくればいいの?

391 :♯6411:2001/08/22(水) 23:36
>>390 定数マクロは括弧でくくった、方がよい、ことが多い。
漏れは、演算子の付かない単項定数はくくらない。

392 :仕様書無しさん:2001/08/22(水) 23:38
>>391
>定数マクロは括弧でくくった、方がよい、ことが多い。
それは何故?マジでわからん。
マジレスキボンヌ

393 :仕様書無しさん:2001/08/22(水) 23:45
>>384は勘違いしてるに一票。

394 :ヲレしょぼ:2001/08/22(水) 23:53
>351くらいから、話しについていけないヲレは、失格ですね・・・。
↑のカッコの件も、ワケワカラン・・・デス。

395 :仕様書無しさん:2001/08/23(木) 00:02
>>384
http://www.st.rim.or.jp/~phinloda/cqa/cqa8.html
このページの【括弧】の項目に書いてあるような事を心配してるんだろうけど、
例に出されているような場合だと、カッコはつけなくても問題ないよね。

396 :仕様書無しさん:2001/08/23(木) 00:02
入門書でもマクロの副作用って載ってると思うけどなぁ
そういう俺も例挙げれないけど

397 :仕様書無しさん:2001/08/23(木) 00:04
#define TEST1 (2+3)
#define TEST2 2+3
   の時
a = TEST1*2;
b = TEST2*2;

a = (2+3)*2;
b = 2+3*2
と展開される。
ということだと思う。

398 :仕様書無しさん:2001/08/23(木) 00:08
>>395
 なるほど。サンクス。
そういうのそういえば読んだこと有るような気がしたけど、
そんなややこしいマクロはバカらしくて書かないので気づかなかった。

399 :仕様書無しさん:2001/08/23(木) 01:07
const int TEST1 = 2+3;
でいきましょうよ

400 :仕様書無しさん:2001/08/23(木) 01:54
↑メモリ多い時代だからといって、そこまで無駄なことはするなよー

401 :仕様書無しさん :2001/08/23(木) 03:50
>>400
晒しage

402 :仕様書無しさん:2001/08/23(木) 04:00
>>400
何が無駄なんだか。デバッグ用のシンボルテーブル?

403 :仕様書無しさん:2001/08/23(木) 07:25
enum {
 I = 1+2,
 MY = 2+3,
 ME = 3+4
};

# で逝きましょうよ

404 :仕様書無しさん:2001/08/23(木) 09:29
>>400
コンパイルの時点で計算されるだろ、フツー。

405 :仕様書無しさん:2001/08/23(木) 09:44
define使わずに極力>>399みたいにやるけど。
まず最適化してくれるし。

406 :仕様書無しさん:2001/08/23(木) 10:02
>>404
C++だと最適化されるけど、Cだと実体が確保されちゃうでしょ。

でも、よっぽどメモリが貴重な環境でなければconstを使った
ほうがいいと思うけどね。

407 :仕様書無しさん:2001/08/23(木) 10:27
>>406
Cだと実体が確保されるのは解るけど、C++じゃ違うのか?
どのように「最適化」されるのか説明してくれ。

408 :仕様書無しさん:2001/08/23(木) 10:47
>>407
コンパイル時に値が決定されていて、他からアドレスを参照されない場合は実体が確保されない。
「プログラミング言語C++第3版」の「5.4章定数」で説明されてる。

409 :仕様書無しさん:2001/08/23(木) 10:59
>>408
ふーん、勉強になったよ。ありがとう。
その値を参照するコードの部分に値が直接埋め込まれるワケね。

410 :仕様書無しさん:2001/08/23(木) 11:06
define とほとんど変わらないね。

411 :400:2001/08/23(木) 12:13
ま、そういうことだ。わかったか低脳ども

412 :仕様書無しさん:2001/08/23(木) 17:26
int i1,i2,i3,i4,i5;

for(int i = 1 ; i <=5 ; i++){
if(i == 1)
i1 = ...;
if(i == 2)
i2 = ...;
if(i == 3)
i3 = ...;
if(i == 4)
i4 = ...;
if(i == 5)
i5 = ...;
}

413 :仕様書無しさん:2001/08/23(木) 17:38
見たことある>>412

414 :412:2001/08/23(木) 17:47
書いた本人曰く
「同期の中じゃできるほうだと思います」

ちなみに入社4年目

415 : :2001/08/23(木) 17:47
>411
Cでも処理系によちゃ確保されないよ。
C++の最適化はCで研究成果があがってる物をまとめた物だから。

416 :ab1000:2001/08/23(木) 17:49
>>412
すげー
まわす理由がわからん

417 :そういえば:2001/08/23(木) 18:00

a[1] = ...;
a[2] = ...;
a[3] = ...;
.....
a[20] = ...;

とやってるやつがいたので
「なんでループで回さないんだ?」と聞いたら
(すごい得意げな顔で)「こっちのほうが早いんですよ」と言われた。

ちなみに彼は当時30歳....

418 :名無しおやぢ:2001/08/23(木) 18:45
>>417
>「こっちのほうが早いんですよ」

実行速度のことなのか、完成速度のことなのか・・・?
(いずれにせよ、DQN・・・)

419 : :2001/08/23(木) 19:31
いまどき実行速度なんか気にするのか?
いまどきは実行速度より開発・改良速度だろ。

420 :>419:2001/08/23(木) 20:14
>いまどき実行速度なんか気にするのか?

まだ気にするところはたくさんあるよ
遅いの使ってる仕事まだあるって

421 :♯6411:2001/08/23(木) 20:16
>>420 ループの外側とか初期化部分を
執拗に高速化してるのは、推測するに、
原始人と思われ。
(420氏へのあてつけではないので念のため)

422 :仕様書無しさん:2001/08/23(木) 20:16
>>419
何を作っているかによるだろ>速度
変換ツールや通信ソフトで実行速度が気にならないって言い切れますか?

423 :仕様書無しさん:2001/08/23(木) 20:19
案件の要求上必要ならチューニングすること
もあるけど、20-80の法則くらい知ってろよ、
と思うけどなあ。

424 :仕様書無しさん:2001/08/23(木) 20:20
20-80の法則って何?
10-90ルールなら知ってるんだが…

425 :仕様書無しさん:2001/08/23(木) 20:23
30-70とか40-60つーのもあるぞ

426 :仕様書無しさん:2001/08/23(木) 20:33
>422
そんなさーソースのちょっとしたとこ(ループ使うとか..)
変えたぐらいで、速度なんか変わんないよ。
実行速度の問題は、設計段階で検討ついてないと、終わってるよ。
いやいや、エスケのこと言ってるんじゃないよ...

427 :仕様書無しさん:2001/08/23(木) 20:38
塵もつもれば山となる、そーゆーものです。

428 :仕様書無しさん:2001/08/23(木) 20:43
>>427

可読性最優先でコード書いて、性能試験でプロファイルとって
やばいところだけチューニングするのがスマートです。
しらみつぶしなんて、コスト意識のないアフォの仕業。

429 :仕様書無しさん:2001/08/23(木) 20:58
>427
そんなさー数百ミリ節句の間に、
何十回も呼ばれるよーなサブルーチン、
おいらは書いたことがないよ。
普通ーライブラリにあるようなものを利用するんじゃないの?

430 :仕様書無しさん:2001/08/23(木) 21:10
>>399-401
C だと const 定数は配列添字数指定に使えないのでは?

431 :仕様書無しさん:2001/08/23(木) 21:14
組み込み分野の話かもしれないよ。

432 :仕様書無しさん:2001/08/23(木) 21:44
その通り。
ns〜μsを争う処理を書いてると、数百msなんて途方もなく長い時間だよ。

433 :417:2001/08/23(木) 21:51
ちなみに...

(すごい得意げな顔で)「こっちのほうが早いんですよ」と言った彼が
作っていたプログラムは夜間に出力する帳票プログラムです。

434 :431:2001/08/23(木) 21:54
(ぎゃふん

435 :仕様書無しさん:2001/08/23(木) 22:03
私が今までで、一番ひどかったと思うソースは
こんな感じです。
作ってた外注のオッサンが、途中で仕事を放棄して
俺が、この保守・拡張を任された時はマジ辞めようと思った。
結局、すべて1から作り直したのですが・・・・。
全部で30000行くらいあったんですが。
4000行くらいに小さくなりました。
皆さんには、こんなプログラムが回って来ない事を祈ります。

・15個くらいのプログラムの各ソース(平均2000行)はmain関数のみしかない。
・変数は何故か全てグローバル定義
・ヘッダーファイルがなく、マクロは全てソースファイルに定義している。
・変数の名前のつけ方が適当。( char sagyou1[256]〜sagyou30[256]とかまである )
・なぜか変数の型を大文字でtypedef定義している( char -> CHARなど)
・ソースファイルの名前のつけ方が適当 ( proc1.c/proc2.pc等) 何のプログラムは分からん・・・。
・コメントと実際にやっている事が違う。
・ドキュメント(SS/PS)と実際のプログラムの動きが全然違う。
・謎のコメントが残っている( /* ココは変換していいのでしょうか? */ 等 )
・あまりにドキュメントが意味不明なので、逃げた本人に電話で仕様を確認すると
 「私もよく分からないんですよ・・・。」と言われた。

436 :  :2001/08/23(木) 23:24
>>435
コボラーの香りがぷんぷんと・・・(藁

437 :仕様書無しさん:2001/08/24(金) 00:00
>>433
いや〜お兄さん一本取られちゃったな(藁
はっはっはっは〜

ってな感じの昔のホームドラマのオチのような話だな。

438 :仕様書無しさん:2001/08/24(金) 00:00
426はプログラマーにあこがれている中学生と見た!(・▽・)

439 :仕様書無しさん:2001/08/24(金) 00:02
>>435
>・15個くらいのプログラムの各ソース(平均2000行)はmain関数のみしかない。
 たまに見る
>・変数は何故か全てグローバル定義
 よく見る
>・ヘッダーファイルがなく、マクロは全てソースファイルに定義している。
 よく見る
>・変数の名前のつけ方が適当。( char sagyou1[256]〜sagyou30[256]とかまである )
 かなりよく見る
>・なぜか変数の型を大文字でtypedef定義している( char -> CHARなど)
 よく見る。
>・ソースファイルの名前のつけ方が適当 ( proc1.c/proc2.pc等) 何のプログラムは分からん・・・。
 かなりよく見る
>・コメントと実際にやっている事が違う。
 正しいとこのほうが少ない
>・ドキュメント(SS/PS)と実際のプログラムの動きが全然違う。
 よく見る
>・謎のコメントが残っている( /* ココは変換していいのでしょうか? */ 等 )
 たま〜〜〜に見る

まだまだ世間の厳しさを知らないね。
まあ、知らないほうがいいよ。心荒むからサ。。
・あまりにドキュメントが意味不明なので、逃げた本人に電話で仕様を確認すると
 「私もよく分からないんですよ・・・。」と言われた。

440 :仕様書無しさん:2001/08/24(金) 00:11
>439
いったいどんなヒドイ目に!!?

441 :仕様書無しさん:2001/08/24(金) 00:11
>まだまだ世間の厳しさを知らないね
そりゃそうだろうけど、みんな「俺だけはこんな事しねぇぞ!」と思いつつ、やってる訳じゃんか。
助長するような書き方やめろ。業界のガンになるぞ。

442 :sage:2001/08/24(金) 00:14
>439
typedefは、intやlongなんかのサイズが変わっても
応急措置でそのまま動かせるようにするっていう保険だと思われる。

が、その意義を理解して使っているかどうかははなはだ疑問だ。

443 :426じゃないよ:2001/08/24(金) 00:14
>>438
そーかー?
そもそも、開発中に「ループ」→「ベタ書き」に変更するってのなら話がわかるが、
いきなりでしょ?
Z80CPUで開発してるわけじゃないから、
ループで書けるところは書けばいいんじゃないの?

444 :仕様書無しさん:2001/08/24(金) 00:17
>>442
typedefってそんな考え方で使ってるの?
そんなソースは読みたくないなぁ。

445 :sage:2001/08/24(金) 01:03
#defineでやる方が多かったけど、typedefを使う人もいたよ。
でも、実際に、Cで移植性や互換性を考えた実用コードを書くのは
難しいし、やりすぎちゃって、かえって見づらくなることも多いと思う。

たぶん、そういうコードを見た&書かされてたひとが、
習慣や思いこみで、こういうもんだ、と思ってtypedefしてたんじゃないの?

446 :439:2001/08/24(金) 01:52
すまん、最後1行忘れてた(ワラ
>(引用)
何度か経験している

447 :仕様書無しさん:2001/08/24(金) 02:05
コメントでreadの過去形がreadedになってたことが…

448 :447:2001/08/24(金) 02:06
他にもいろいろスペル・文法ミスがあった。
別に英語のコメントが求められている開発ではなかったんだが…。

449 :仕様書無しさん:2001/08/24(金) 02:29
なんかすごいな。みんな本当の話なのか・・・
プログラマーって誰でもなれるの?一応勉強してから就職するんでしょ?

450 :仕様書無しさん:2001/08/24(金) 03:23
>>449
ウチが元いた会社は何年も前から、パソコンに触った事がないヤツらを
プログラマーとして採用してたよ。
電源の入れ方、Windows・Word等の使い方から、
プログラムのコーディングまで、3ヶ月の研修期間で教える。

451 :仕様書無しさん:2001/08/24(金) 04:21
>>450
ワシの今の会社がそんな感じだけど、、、
研修1ヶ月未満。
そんなんじゃ、まともなプログラムは出来上がらんだろ。。。
鬱だ。

452 :仕様書無しさん:2001/08/24(金) 04:26
それはまたありがたい会社ですね。
未経験者募集とか見かけるけど、趣味で相当やりこんでる人を相手に
してるのかと思ってたよ。
人材不足なんですかね。

453 :仕様書無しさん:2001/08/24(金) 08:13
>>417
Intelのコンパイラを使うと自動的に
小さいループはこうなる

LOOP IS VERTECTED

454 :仕様書無しさん:2001/08/24(金) 09:39
>>449
人間誰でも見かけだけは大人になれるようなもんです

455 :仕様書無しさん:2001/08/24(金) 10:20
>>450-451
そんな会社が他にもあったとは!!
 ・・・まさか、ウチの会社のことかな?

456 :来年就活さん:2001/08/24(金) 10:24
中学の時から六年くらい一人でシコシコとプログラムやってて、
さすがに馬鹿なコードは書く前に気づいたりできるぐらい成長したつもりですが、
グループ開発の経験が無いので、正直な話、こういう現場の生の声って勉強になります。

もっといろいろ聞かせてください。

457 :仕様書無しさん:2001/08/24(金) 11:04
>>456
馬鹿なコード〜の判断基準が根本的に業務用(用途別でさらに細分化)と個人用(その本人もしくはグループ内だけ)とえらい違うことを前提としてもっておくと、すんなり社会になじめるもんぢゃ。

例:「あるプログラムをつくるとき」
個人:「動いてなんぼ」
業務:「他人がみてわかりよいソースでなんぼ」

458 :仕様書無しさん:2001/08/24(金) 11:29
ソースの途中でいきなり#define ってありなの?

main()
{
通常の処理

#define Flag1 = PIO1.PORTA.BIT0
Flag1 = 1;

以下続く
}

って感じだったんだけど...
定義位置と使う位置が離れると分かりにくいから?
上までスクロールさせて#define書き込むのが面倒だから?

ちなみに組み込み系です。

459 :仕様書無しさん:2001/08/24(金) 11:56
>>458
C++ならconstが常道。型付きだし。
Cでも衝突に配慮してあれば特に問題ないと思う。マクロ名の頭が
関数名になってるとか。

460 :426:2001/08/24(金) 12:00
error C2143: 構文エラー : ';' が '=' の前に必要です。

461 :仕様書無しさん:2001/08/24(金) 13:16
>>450>>451
私の会社なんか研修すらないよ。
まともじゃないプログラムがほとんどかも。
鬱だ。

462 :来年就活さん:2001/08/24(金) 14:24
>>457
>動いてなんぼ

おっしゃられている通りです(汗

バイトなどで経験を積められればいいんでしょうけど…
紹介される仕事がHTML書きだけだったりします。

それに自分の現状では、コードを公開しろと言われても困りますし。
裸体を晒すのがハヅカシイのと同じ感覚でしょうか。


今は「半年後に見た時にすぐわかるコード」を目標に頑張っているので、
変数名の名づけ方とかの議論、面白かったです。

自分は基本はハンガリアン、気に食わない部分は自己流です。
たとえば、クラスのメンバ変数にm_は付けていません。


話は変わりますが、charのポインタ変数に付けるszってどういう意味があるんでしょうか?
独学が長かったので、専門用語に関してはわりと無知です。
怖いので付けていませんが。

463 :仕様書無しさん :2001/08/24(金) 14:56
>>462
>話は変わりますが、charのポインタ変数に付けるszってどういう意味があるんでしょうか?

zeroで終端されたstringってことでないかな。

464 :仕様書無しさん:2001/08/24(金) 15:45
ハンガリアン論争は荒れるのでやめようよ....

465 :♯6411:2001/08/24(金) 16:11
>>462
> 自分は基本はハンガリアン、気に食わない部分は自己流です。
(中略)
> 話は変わりますが、charのポインタ変数に付けるszってどういう意味があるんでしょうか?

アフォ、szもいわゆるハンガリアン記法じゃゴルァ
あー痒い痒い痒い…ぞぞぞっ

466 :426:2001/08/24(金) 16:50
みんなも、ハンガリアン記法でコーディングしよう。
Charles Simonyi マンセー!

467 :仕様書無しさん:2001/08/24(金) 16:54
ハンガリアンチョップ

468 :仕様書無しさん:2001/08/24(金) 17:23
ハンガリー精神マンセー

469 :仕様書無しさん:2001/08/24(金) 18:04
ハンガリアン 上ゲ

470 :Be無しさん:2001/08/24(金) 19:43
サンガリヤおいしいお茶

471 :仕様書無しさん:2001/08/24(金) 20:00
ハンガリーチキン

472 :仕様書無しさん:2001/08/24(金) 20:13
はんがりぁん

473 :仕様書無しさん:2001/08/24(金) 20:18
カンブリアン?
ガ━━(゚Д゚;)━━ン!

474 :仕様書無しさん:2001/08/24(金) 20:28
そうですか。自分はローマ字アンであります。

475 :仕様書無しさん:2001/08/24(金) 20:33
はんがりーをばかにするな

476 :仕様書無しさん:2001/08/24(金) 21:30
つぶあん、ねりあん、赤毛のアン

477 :  :2001/08/25(土) 01:06
♪めりーあん、めりーあん、めりーあん、うぉんちゅーすていふぉーみー

478 :かけだしちゃん:2001/08/25(土) 02:47
ハンガリアンのせいで、荒れとるやんけ。

479 :仕様書無しさん:2001/08/25(土) 03:46
えいごりあん

480 :がんばりやん:2001/08/25(土) 06:53
ハンガリアンを採用してるプロジェクトであれば従うまでです。

481 :仕様書無しさん:2001/08/25(土) 06:56
モンゴリアーーーン!!

482 :仕様書無しさん:2001/08/25(土) 07:22
>462
>話は変わりますが、charのポインタ変数に付けるszって

人が土下座してるところです。

483 :仕様書無しさん:2001/08/25(土) 10:13
>>439 >>435
>・15個くらいのプログラムの各ソース(平均2000行)はmain関数のみしかない。
 まだ見たことない
>・変数は何故か全てグローバル定義
 まれにある
>・ヘッダーファイルがなく、マクロは全てソースファイルに定義している。
 まだ見たことない
>・変数の名前のつけ方が適当。( char sagyou1[256]〜sagyou30[256]とかまである )
 かなりよく見る
>・なぜか変数の型を大文字でtypedef定義している( char -> CHARなど)
 まだ見たことないが、
 TRUE=0 FALSE!=0
 SUCCESS=!0 FAIL=0
 がさりげなく定義されているのをかなりよく見る
>・ソースファイルの名前のつけ方が適当 ( proc1.c/proc2.pc等) 何のプログラムは分からん・・・。
 たまに見る
>・コメントと実際にやっている事が違う。
 そもそもコメントがない
>・ドキュメント(SS/PS)と実際のプログラムの動きが全然違う。
 そもそもドキュメントがない
>・謎のコメントが残っている( /* ココは変換していいのでしょうか? */ 等 )
 かなりよく見る あと愚痴がたらたら書いてあったりする
>・あまりにドキュメントが意味不明なので、逃げた本人に電話で仕様を確認すると
>「私もよく分からないんですよ・・・。」と言われた。
 「もう引継いだので知りません(責任はうちにないので面倒みないよの意)」とよく言われる
 大抵の場合、作ったところから引継いだのは俺じゃなくて俺に依頼してくる『ソフトは誰かが自分の意思を
 読み取っていつのまにか作ってくれる』と漠然と信じているメカ屋
 「俺ソフトわかんないから向こうの担当者と相談して」ときたもんだ
 おめぇは図面も仕様書もテスト報告もないメカが入ってきて検収もせずに引継ぐんか?ゴルァ!

484 :とねぞう:2001/08/25(土) 10:18
なんてこったい。

> grep goto ./*.c | wc -l
35

485 :とねぞう:2001/08/25(土) 10:28
共通関数から自作関数をコールされているのを見たとき

ああ、これはイジメなんだな。

と思った。

486 :仕様書無しさん:2001/08/25(土) 10:46
>>483
>>・コメントと実際にやっている事が違う。
> そもそもコメントがない

 これってコメントないほうがまだ幸せだよね。

487 :仕様書無しさん:2001/08/25(土) 14:43
>>3
ワラタ
考えたやつすごいな
前の会社のアホ上司ならやりそうだが..

488 :仕様書無しさん:2001/08/25(土) 14:50

>・なぜか変数の型を大文字でtypedef定義している( char -> CHARなど)

制御系だとたまにやるらしい。intをINTとか
char->CHARはjavaとのクロス環境か?(笑

489 :仕様書無しさん:2001/08/25(土) 15:22
int CANSEL

はぁ

490 :仕様書無しさん:2001/08/25(土) 16:11
>・あまりにドキュメントが意味不明なので、逃げた本人に電話で仕様を確認すると
>「私もよく分からないんですよ・・・。」と言われた。

// もし判らない時は090-XXXX-****まで電話して下さい
// 可能な限りお答えします

マジかよ?と思って電話したら通じた。2年前のソフトで・・。
でも「もう憶えてないので電話しないでください。あと、それ消しておいてください」と
言われた(w

491 :仕様書無しさん:2001/08/25(土) 16:23
char -> CHAR ならまだ読めるけど
B とか UB とかは勘弁してほしいよ。

492 :仕様書無しさん:2001/08/25(土) 16:37
B? Byteか?

493 :仕様書無しさん:2001/08/25(土) 19:31
>>492
そうだと思います。
他にもこんな調子で
http://www.tron.org/tron-s/btron/shared_data/data_type.html
とずらずらと。
移植性をねらってのことなのだろうけど、好きじゃない。

494 :仕様書無しさん:2001/08/25(土) 20:20
・・・・・・・・・・・・・・・・・・・・この会社にいたの???

http://www.tron.org/index.html
↑トロん

http://www.chokanji.com/cksv/
↑超漢字ウェブサーバ

495 :仕様書無しさん:2001/08/25(土) 20:20
ま、書き方がどうであれ仕様通りに動くんならいいよ、まだ。

協力会社の人間の作ったバグとりに今日も休日出勤だよ、ふう。

496 :仕様書無しさん:2001/08/26(日) 04:08
>>490
その人を責めるなよ・・・・
2年ね月日が彼を変えたんだよ・・・・(藁

497 :496:2001/08/26(日) 04:28
間違えた、下記に修正ね。
俺を責めるなよ。酒が俺を変えたんだよ・・・・(鬱

>>490
その人を責めるなよ・・・・
2年の月日が彼を変えたんだよ・・・・(藁

498 :仕様書無しさん:2001/08/26(5) 34:00
いや、ソースコードに電話番号を書くのうがバカ。

499 :仕様書書かないさん:2001/08/26 06:59
> TRUE=0 FALSE!=0
> SUCCESS=!0 FAIL=0
> がさりげなく定義されているのをかなりよく見る
FALSE!=0 は単なる書き間違いだよね。

500 :仕様書無しさん:01/08/26 12:10
>>495
私も、協力会社として仕事をしているけど、貴方のところはどういう契約になっているの?
瑕疵が無くなるまでトコトン付き合う、という契約が普通じゃないの?

仕様通り動かないなら、突返すか製造者を呼びつけるのが普通ですよね。

私は、結合試験から客先検収まできっちり立ち会うのが殆どですし、
結合に先駆けて一部分を早い時期に納品する必要がある際には、
試験用プログラムを添付して、仕様通りに動作していることを納品先の担当者
立ち会いの下に確認して納品というのが普通ですよ。

作りっぱなしでベイルアウトという作業形態があるのが信じられないのですが。

501 :仕様書無しさん:01/08/26 12:57
>>500
言ってることはとても正しいと思うし、そうであるべきだと思う。
でも現実にできてない会社、ずっとやってないから問題とも感じない人が
大勢いるのは事実ですよ。
8年PGやってあちこち行ってきましたが、うち5年はそういう会社でした。

あ、私は495さんじゃないですよ

502 :仕様書無しさん:01/08/26 13:55
仕様をかってに変更してバグ扱いするやつがいるので
危険です。

503 :仕様書無しさん :01/08/26 15:41
void datacopy(void *dis,void *src)
鬱……いやぁ判らんでもないんだが……

504 :仕様書無しさん:01/08/26 15:45
一番凄かったのはバグだらけなのに製品版として出荷したことでしょうか・・・
私はC++で作成して、バグも無い状態だったのにVBに変更したから・・・
スクリプトもおかしくなってしまったし・・・
しかもバグが出たのを全部私の責任にして、辞めさせられたしね・・・
あんな会社、2度と行くか!!

おまけに私が使っていた会社のPCにはredhat6.1jしか入れていないし、残りHDも100M切っているのにどうやってwindows入れろと?
スペックも低いし・・・
CPU:pentium75MHz、メモリ:16MB、HD:1GB

505 :仕様書無しさん:01/08/26 16:33
俺が派遣で行ってた会社は、完成しているものを出来てないと言い張り
どうしても作って欲しいなら値段上げろと途中でストライキみたいなことをして
客が他に依頼すると言ったらこのデータを世間にばらまくと・・・

詐欺同様のことを社長と営業が平気でやってたとこがあったなあ。
社員は見てみぬふり。最低だった。
技術力が高いならともかく、VBでクラスの使い方さえ知らない会社・・・

もう潰れたけど。

506 :仕様書無しさん:01/08/26 18:42 ID:ayKorCLw
>>503
それだけじゃわからん。
datacopy()がmemcopy()と同じ仕様で、memcopy()を使えと言いたいんか?

507 :560:01/08/26 18:45 ID:ayKorCLw
memcopy -> memcpy

508 :仕様書無しさん:01/08/26 18:52 ID:YFCyBauc
>>506

引数がvoid *なのに、複写する長さの指定がないことをいいたいんじゃ
ないのか?>>503は。

509 :仕様書無しさん:01/08/26 19:06 ID:IUwPhXaE
dis じゃなくて普通 dst か、せめて des だと言いたいんじゃないのか? >>503 は。

という、ツッコミどころ満載で欝なんじゃないのか? >>503は。

510 :506:01/08/26 19:41 ID:nQ.cJ8Uk
>>508
なるほど、それが正解かな?

でも、これ実行したらすぐに、まずいって気づくと思うんだが。
たまたま、動いていたんだろうか?

511 :仕様書無しさん:01/08/26 19:55 ID:vpiY54Is
関数へのポインタじゃないの?

512 :仕様書無しさん:01/08/26 20:33 ID:IKUko6.Y
>>503 は特定の構造体のポインタが渡されると仮定されていれば
使える..windowsのapiもよくやってるやつ
他にもいろいろ考えられるだろうけど

例えば
typedef struct obj1 {
...
}Car1;

typedef struct obj1 {
...
}Car2;

datacopy(void* data1 , void* data2)
{
if (sizeof(*data1) == sizeof(Car1) ){
....
}
else if(sizeof(*data1) == sizeof(Car2)) {
...
}

}

みたいな
Cは最近つかっとらんから細かいとこ町がっとるかも

まあ、使えるだけで、実装としては極力やらんほうがいいだろうが..

513 :506:01/08/26 20:41 ID:nQ.cJ8Uk
一応、>>508の考えが正しかった場合の話だよ。

話は、変わるけどIDが付くようになったね。

514 :508:01/08/26 20:49 ID:vbxqpDbk
>>512
その場合は、その構造体のポインタを渡すんじゃない?

>>509の言うように引数名もあやしいね。

>>503は、答え教えれ。

515 :503:01/08/26 21:43 ID:6Zedsi5A
なんか色々物議をかもしてるようで…506,508,509さん正解です
つーか固有データの固定量転送しかしないのになぜvoid*にしますか…

516 :仕様書無しさん:01/08/26 21:45 ID:ckmvcpUo
>>512
>Cは最近つかっとらんから細かいとこ町がっとるかも

いかにも、昔は使ってたような口ぶりだけど、あんたど素人じゃないの?
sizeof をまったく理解してないじゃん。
そんな初心者っぽい間違いは久しぶりに見たよ。

517 :仕様書無しさん:01/08/27 10:44 ID:nMN2ZLwk
>>516

ずっとC++やっとったよ..いまはjavaやけど
sizeofなんてそんなつかわんからね。細かい仕様なんて使う時にちょこちょこっと調べりゃいいだけじゃん
sizeofって変数の種類によって使い方がかわるからわかりにくいって有名だし
javaやってりゃんなくだらねーもんないし

sizeofにずいぶんお詳しいとのことで..さぞかしsizeofを詳しく理解していらっしゃるんでしょう
たいそうなこって
いっしょうセコセコ制御プログラムでもくんででくださいね

518 :仕様書無しさん:01/08/27 10:48 ID:QY1C3w3s
別のファイルに全く同じメソッドが複数作ってあった

519 :仕様書無しさん:01/08/27 11:26 ID:DlTH7712
んで、Warningってホントはなんて読むの?

520 :仕様書無しさん:01/08/27 11:29 ID:7ZTVU0zE
>>519
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=warning&search=%B8%A1%A1%A1%BA%F7&sw=0

521 :仕様書無しさん:01/08/27 11:32 ID:DlTH7712
ああ、了解。
鬱死。

522 :仕様書無しさん:01/08/27 11:36 ID:o47JyrUo
>>512 >>517
痛すぎる。

523 :名無しさん:01/08/27 11:45 ID:BV9MddMg
>>522
そっとしとこうよ。(w

524 :仕様書無しさん:01/08/27 12:03 ID:wgx6cgDY
どうも、誤りを指摘されると自分の思い込みだけを根拠に開き直る夏厨が多いな。
まあ、もうちょっとで夏休み終わるから。

525 :512:01/08/27 12:25 ID:nMN2ZLwk
夏ぼーはキサマらやわ
俺はそーいうこともできるっつっただけでsizeofの細かい仕様がどーのっつー
つっこみはどーでもいいわけだ
まーそーいうツッコミいれるくらいしかのーがないわけだが

526 :512:01/08/27 12:27 ID:nMN2ZLwk
つーかwindowsのapiでほんとにあーいうことやってる部分があるの
知らんのだろう・・

527 :♯6411:01/08/27 12:28 ID:Gdy5fRSM
>>519
>>520
カナで書くときは、ヲーニングと綴るとよろしかと思われ。

528 :508:01/08/27 12:52 ID:BV9MddMg
Win32の構造体には、NETINFOSTRUCTみたいに先頭のメンバに
その構造体サイズをセットするものがあるけど、それを扱うAPIのことかな?

529 :仕様書無しさん:01/08/27 12:55 ID:rH3n9S2o
>>525
>俺はそーいうこともできるっつっただけで
そういうことはコンパイルが通るプログラムを書いてから言え。

530 :仕様書無しさん:01/08/27 13:05 ID:nMN2ZLwk
>>528
そう。で、構造体の種類によって動作が変わるapiがある

>>529
(ほんとにおばかねあなたはーと)

531 :仕様書無しさん:01/08/27 13:06 ID:GxXqbfwM
たまに、異常に構造体の定義名が長いのがある。
なんか宣言するときに、かなり面倒な感じ。

typedef struct {
....
...
} PROC_COMMON_AUTOMATIC_CHECK_FLAG_FOR_CLIENT_SYSTEM;

とか。(あくまで例ね)

あとは構造体がネストのネストのネストしまくってて
大本の構造体の中に30個くらい構造体があったり・・・。
しかも、どう考えてもそんなに要らない構造体ばかり。
実際、誰も使ってないし・・・。

532 :仕様書無しさん:01/08/27 13:11 ID:7ZTVU0zE
>>531
暗いなら自分で明かりをつけましょう。

533 :508:01/08/27 13:21 ID:BV9MddMg
>>530

けど、それにしたって、>>512のコードじゃ動作しないね。

void *をint *にキャストしてその数値と比較したら可。
ただし、前提として構造体の先頭メンバに既定の型(この場合intね。)
で構造体のサイズがセットされている必要がある。
もしくは、その構造体の型を特定できる識別子とか。

534 :仕様書無しきん:01/08/27 13:32 ID:ElSN0SkA
まとめ:
>>512はsizeofを理解していない
多分ポインタを正確に理解できていないから
sizeofに変な誤解を持っている

>>529は間違い
>>512のコードはコンパイルだけなら正常に行える
# 意図した動作をしているかは置いておいて

535 :512:01/08/27 13:41 ID:nMN2ZLwk
>>533

うーんたしかに。間違ってた。voidにsizeofって・・
片手間で勢いで書いてるとこういうことになる・・
ご指摘感謝・・

536 :仕様書無しさん:01/08/27 13:58 ID:ZTKqzTy6
>>517
>sizeofって変数の種類によって使い方がかわるからわかりにくいって有名だし

??使い方は同じだろう???

537 :512:01/08/27 14:17 ID:nMN2ZLwk

>>536
だね。使い方はいっしょ。戻り値の意味が異なる。

538 :仕様書無しさん:01/08/27 14:22 ID:hpckX.2A
#include <stdio.h> /* stdio.hをインクルード */

こんなコメントはいらないと思いますー

539 :仕様書無しさん:01/08/27 14:29 ID:5beWXvYI
>>512
あれだけみんなから指摘されても「夏ぼーはキサマらやわ」なんて喚いて、自分に
間違いがあると思いもしないんじゃ夏厨と言われても仕方あるまい。
おまけに、この期に及んでも「片手間で勢いで書いてるから」なんて言い訳に終始
してるようでは。

540 :仕様書無しさん:01/08/27 14:40 ID:wgx6cgDY
>>538
かといって、こんなコメントはもっとやだ。
#include <MyStd.h> /* stdio.hをインクルード */

541 :仕様書無しさん:01/08/27 14:51 ID:6cGRsEso
512のってJavaのObjectで受けてinstanceofで判断してるつもりくさい
Java房って言われてもしゃぁないな

542 :529:01/08/27 14:56 ID:rH3n9S2o
>>534
> >>529は間違い
> >>512のコードはコンパイルだけなら正常に行える
マジ?僕の環境では通らないよ。

543 :仕様書無しさん:01/08/27 16:31 ID:ENaaiiBA
>>512の間違いを本人は、「sizeofの細かい仕様を覚えてない」で
片付けてるけど、枝葉じゃなくて根本を理解してないから、あんな間違い
をするんだろ?
Cでまとまったプログラムを書いたことのある人間なら絶対にあんな
間違いはしないよ。
512は入門書を読みかじって知ったかぶりをしてる厨房としか思えない。

544 :仕様書無しさん:01/08/27 17:02 ID:QH29D3Bc
>>526
>つーかwindowsのapiでほんとにあーいうことやってる部分があるの
>知らんのだろう・・

そんなAPIはない。
具体的に、どのAPIか挙げてみろよ。

545 :仕様書無しさん:01/08/27 17:58 ID:NYLMt7Y2
>512 はこうやりたかったんじゃ、ないだろうか?
typedef struct OBJ1 {
  ...
} Car1;
typedef struct OBJ2 {
  ...
} Car2;

datacopy ( OBJ1 , void* );
datacopy ( OBJ2 , void* );

間違ってたら、スマソ

546 :仕様書無しさん:01/08/27 18:15 ID:CbLq.TAQ
>>545
それこそコンパイルとおらねえって

547 :536:01/08/27 18:41 ID:ZTKqzTy6
>>512=517=525=537
>>>sizeofって変数の種類によって使い方がかわるからわかりにくいって有名だし
>>??使い方は同じだろう???
>だね。使い方はいっしょ。戻り値の意味が異なる。


だね、じゃないんだよカス! お前の脳内狂ってると指摘してるのに・・・!!
あ、そうか、だから「だね」なのか。納得(w

548 :508:01/08/27 19:01 ID:BV9MddMg
夏だねえ・・・・(ワラ

549 :仕様書無しさん:01/08/27 19:13 ID:m9sPkLCc
>>537
戻り値?
sizeofを関数だと思ってる?

550 :ネタ:01/08/27 19:42 ID:ElSN0SkA
>>549
> sizeofを関数だと思ってる?
関数でないとしたら何なんですか?
演算子などというたわけた事は言わないですよね?
ちなみにreturnも関数です。
さらにシッタカをかますとif(), while()は関数内関数です。

551 :♯6411:01/08/27 19:56 ID:Gdy5fRSM
>>549
>>550
sizeofは演算子でないのはもちろんのこと、
関数ではありませんし、マクロでもありません。

sizeofは、神です。(藁

552 :仕様書無しさん:01/08/27 19:58 ID:CbLq.TAQ
>549-551

もちろん、コンパイル時に定数になるわけがありません。

553 :♯6411:01/08/27 20:05 ID:Gdy5fRSM
>>552 sizeofは神なんですが…

マジレス gccにて、
__builtin_constant_p(sizeof(int))
を評価してみると、
ちょっと楽しい鴨。

554 :仕様書無しさん:01/08/27 20:21 ID:CbLq.TAQ
>>553
それは最適化レベルによって変わるんでわ?
いま手元にgcc使える環境がないんで確認できないけど…

555 :仕様書無しさん:01/08/27 23:39 ID:b6uw3B7s
>__builtin_constant_p(sizeof(int))

win厨なので、分からないんだけど、
どうなるの?教えてくさい。

556 :仕様書無しさん:01/08/28 00:06 ID:8LOALho6
>>554
コンパイル時ではなく、実行時に sizeof(int) を計算するの? それ
はさすがに無いと思うけど。

最適化によって変わるのは、むしろ

const int a = 1;
__builtin_constant_p(a)

とかでしょ。

557 :♯6411:01/08/28 00:25 ID:8QKJAcfc
マジレスなのでsage
__builtin_constant_p(expr)は、
gccのbuilt-in functionで、
「exprが定数となりうるかどうか」を判断します。
よって __builtin_constant_p(sizeof(int)) は
コンパイラによって必ず1にされます。
const intがどうなるかは実験してないので知らぬ。
もちろん、
__builtin_constant_p(__builtin_constant_p(expr))
は、1になります。

ただし、一般に定数と思われている、
「functionへのポインタ」「配列の先頭」は、
上記では定数と見なされないようです。

…デバッグマクロ以外じゃ使い道ねーな。

558 :仕様書無しさん:01/08/28 11:27 ID:HEWceQCw
__builtin_constant_p(expr)が0を返しても、実際のコードは定数になってる可能性はある。
コンパイラがコンパイル時に定数であることを保証できるかどうか。

つか、>>552はネタ。

559 :仕様書無しさん:01/08/28 23:57 ID:DIrNRouo
#define MAX_ARRY 32
#define A_NUM 0
・・・
#define A_LAST 32

unsinged char TEXT[MAX_ARRAY];
・・・
if(TEXT[A_NUM] == A_NUM){}

こんなのばっか。書き直したいけど、権限がないので書き直せない。逃げ出したいよ・・・・

560 :仕様書無しさん:01/08/29 00:11 ID:YREApKQQ
? 下手に実数でやられているよりもいいのじゃないかと思うが・・・
  どうしてマクロが不満なのか教えてほしいな! >>559

561 :仕様書無しさん:01/08/29 00:19 ID:vOB18it6
if(TEXT[0] == '\0'){}

のほうがいいっていいたいんじゃないかな・・・。>>559
A_NUMじゃ、配列の先頭要素とかヌル文字って連想しにくいもんね。

562 :仕様書無しさん:01/08/29 01:15 ID:uikNj3aQ
<何とか.java>
public class 何とか{
 public String なんだか;
 //...
 public 何とかData[] data;
 //メソッドなし!
}
<何とかData.java>
public class 何とかData{
 public String なんだか;
 //...
 public 何とかDataData[] data;
 //やっぱりメソッドなし!
}

//以下延々と…

…設計者、ホンマもんのヴァカだ…
こんなことするなら、そもそもJava
使うなよ…(まあCでもヴァカだけど)

563 :仕様書無しさん:01/08/29 01:20 ID:8u2Snirs
>>562
ワラタ
構造体で充分ですな。
設計者ヴァカ過ぎ。

564 :仕様書無しさん:01/08/29 01:30 ID:uikNj3aQ
>>563
ちょいとちゃう。Javaには構造体はない。
Javaでは、普通はCompositeでやる。

おいらなら、めんどくさいので一階層でCompositeモドキ。
下の例は最低限の実装イメージ。ホントはもうちょっと必要。

562のソースの1/1000のソース量。

public class Node{

 private Map attributes_ = new HashMap();
 private List children_ = new ArrayList();

 public void setAttribute(String id,Object val){attributes_.put(id,val);}
 public Object getAttribute(String id){attributes_.get(id);}
 public void addChild(Node node){children_.add(node);}
 public Node getChild(int index){(Node)children_.get(index);}
}

565 :仕様書無しさん:01/08/29 04:31 ID:AJCsTd0Q
おそレスで、誰も相手にしてくれないかも知れんけど・・

そー言えば、結構前だけど、Cのエミュレータ作りに挑戦した時(挫折したが)
K&Rの本の一番最後に構文が載ってたな。
sizeofは、単項演算子の部類っぽくなってたよ。
ということは、、、コンパイラによって違うのかもしれないけど、
コンパイル時にsizeofは定数に置き換わるんじゃないかな?

例えば、
int a[] = {0, 1, 2, 3, 4, 5, 6, 7};
int size = sizeof(a) / sizeof(a[0]);
みたいなのは通るけど、

void Func(int *a)
{
int size = sizeof(a) / sizeof(a[0]);

なんてのは通らないでしょ?
試してないし、思い付きで書いてるから間違ってるかも

566 :仕様書無しさん:01/08/29 05:00 ID:zFPSp17Q
sizeof(a[0])はsizeof(int)だべ

567 :565:01/08/29 05:23 ID:AJCsTd0Q
>>566
返事ありがと。
そうか、、、それでも後者は駄目だよね?

568 :sage:01/08/29 07:17 ID:p1uwNlQU
>>567
sizeofに渡した式は実際には評価しない決まりがあるから問題ないよ。
>>566の言うとおりの答えが出る。

569 :仕様書無しさん:01/08/29 07:45 ID:YREApKQQ
>>562
>>563
この人はJavaを知らない大ヴァカ組ってことでよろしいのですか?

570 :仕様書無しさん:01/08/29 08:36 ID:mr74JTY6
自信満々の知ったかといい、妙な当て字を得意げに使う自己満足
な文章といい、>>512って氷魚クンじゃないの?

571 :仕様書無しさん:01/08/29 23:37 ID:BkTlbfOc
>565
通るんじゃない?
32bitUNIXだと限定して

void Func(int *a)
{
int size = sizeof(a) / sizeof(a[0]);

sizeof(a)->aはポインタ->4
sizeof(a[0])->a[0]はint->4

よって未確定要素無しなので、必ず1が入る。

ポインタが絡むsizeof()で未確定要素ってあり得ないと思うけど、どう?

572 :565:01/08/30 00:27 ID:qZbH2h7A
>>571
試したよー。
確かに、おっしゃる通りの結果でした。

でも、
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(a) / sizeof(a[0]);
と、やった場合、「size」には「9」が入るわけで、
どっかで、その「size」を使って、
for(i=0; i<size; i++)
a[i]使った処理

見たいなことをやっていて、
void Func(int *a)
{
int size = sizeof(a) / sizeof(a[0]);

を誤解していたら、おっかないことになるなーって思って。
(僕も勘違いしていたけど)
例えば、sizeofを関数かマクロだと勘違いしているとして、
実行時に引数の配列のサイズを取得すると思いこんで
コーディングしたら、えらいことになるでしょ?

まぁ、その程度の間違いにはすぐ気付くと思うけど、
「汎用初期化関数作りました−」とか言われたら鬱になっちゃう。

573 :565:01/08/30 00:27 ID:qZbH2h7A
うぉ!会社からと、家からでIDが違う!!
って、当たり前か…

574 :仕様書無しさん:01/08/30 00:29 ID:.r40QoWg
#define TYUBO 4

575 :仕様書無しさん:01/08/30 01:25 ID:mP6ZzKV.
>>572
やっちまったことある。配列でじかに取ってた既存のソースから
ポインタもらうソースにコピペしたらなぜだか最初の1個しか処理しない。
なぜなんだと悩んだよ・・・打つ出し脳。

576 :仕様書無しさん:01/08/30 01:30 ID:WNBUz1Tg
>>565 = >>567 = >>572 = >>573
        
     ∧_∧___ ユカイナヒトダネ‥♪
    /(*゚ー゚)./\
   /| ̄〇〇 ̄|\/
    |_____|/

577 :仕様書無しさん:01/08/30 01:48 ID:GKa9oNoE
/** 文字列 source 内の指定の文字を別の文字列に置換した結果を result に入れる。
(たとえばプレーンテキストをHTMLに変更するとか */
// String source, result

for (int i = 0; i < source.length; i++) {
char c = source.charAt(i);
String appendValue = "";
if (c == ' ') {
appendValue = " ";
else if (c == '<') {
/* 中略 */
}

result += appendValue;

source が 100KB くらいあったら、一体いくつのオブジェクトが無駄になるんだろう。
ギガバイトレベルの無駄がある。

-verbose:gc オプションの出力見てると一気に "0% free" になって、ある意味で爽快。

578 :仕様書無しさん:01/08/30 01:52 ID:GKa9oNoE
>>577 ソース部分修正

for (int i = 0; i < source.length; i++) {
&anp;&anp;char c = source.charAt(i);
&anp;&anp;String appendValue = "";
&anp;&anp;if (c == ' ') {
&anp;&anp;&anp;&anp;appendValue = "&anp;nbsp;";
&anp;&anp;else if (c == '<') {
&anp;&anp;&anp;&anp;/* 中略 */
&anp;&anp;}
}

579 :仕様書無しさん:01/08/30 01:55 ID:GKa9oNoE
>>578 ぐあー、また間違い。
for (int i = 0; i < source.length; i++) {
  char c = source.charAt(i);
  String appendValue = "";
  if (c == ' ') {
    appendValue = "&nbsp;";
  else if (c == '<') {
    /* 中略 */
  }
}

580 :sage:01/08/30 02:03 ID:kAN7ztDY
落ち付けって。

仕事でそんなリリースの仕方してたら、逆に周りの人がやめたくなっちゃうぞ。

581 :仕様書無しさん:01/08/30 02:10 ID:mEzNcTXw
>>577
Stringの文字列長分だけ+=繰り返しは、記述は簡単でも内部処理は
キツイね。

でも1文字のStringって、内部的にはSoftRefferenceかなにかで
Flyweightオブジェクトキャッシュになってんじゃないの?
いちいちインスタンス生成削除はしてないと思うんだけど。

確かどこかでそんなことを書いていた人がいたような…
VMやランタイムのヴァージョンによるんだっけ?

582 :仕様書無しさん:01/08/30 02:30 ID:7wPQDIxc
>>149
亀レスですが、fp(stdout)の出力先のfd(1)が無いと
バッファがいっぱいになったときに(処理系依存かもしれないが)
失敗します。

このようなコーディング規約のプロジェクトに参加させられたときは
closeも戻り値を見ました。

583 :♯6411:01/08/30 02:39 ID:WaZdXN2I
>>578 &anp; って何だ? (w

584 :仕様書無しさん:01/08/30 02:48 ID:GKa9oNoE
>>581
そうなんだ。
ちょっといま JDK1.3.1 の String のソース見てみたけど
それらしいところを見つけられなかった。
VM で吸収してるのかな。

ちなみに紹介したやつのときは JDK 1.2.2 で Solaris VM です。

585 :仕様書無しさん:01/08/30 06:46 ID:3LEB20p.
>>577
ていうか、素朴な疑問として、
なぜ String.replace や StringBuffer.replace を使わないんだろう?
(または、そのメソッドのソースを見てみようと思わないのか?)

586 :565:01/08/30 12:19 ID:N/i8y7JU
>>576
IDちゃんと出てるジャン。
僕は2台も3台もパソコン持ってません。

587 :565:01/08/30 12:21 ID:N/i8y7JU
>>576
誤爆しました。
自作自演を指摘されたのかと勘違い。
そんなに愉快?
まぁ、僕は愉快ですけど。

588 :仕様書無しさん:01/08/30 12:34 ID:gEE0XK6Q
>>585
replaceでは、charをcharに置き換えることしかできないからでは?
charをStringに置き換えたいんだろ。

589 :仕様書無しさん:01/08/30 12:49 ID:gEE0XK6Q
>>584
つうか、StringがJDKそのままのソースをコンパイルしたもので
あるわけないだろ。アホか。

590 :仕様書無しさん:01/08/30 21:19 ID:WsPkT2M2
何で
String.replace(String old,String new)や
StringBuffer.replace(String old,String new)が
存在しないのでしょうか?

591 :仕様書無しさん:01/08/30 21:37 ID:hqS/Rom6
>>590
それぞれのメソッドの戻り値を何にしたらいいのか考えてみたらどうかな?

592 :仕様書無しさん:01/08/31 00:47 ID:seI0gCvk
>>579
ちなみに、そのソースがそんなに悪いのかいまいちわからん。
もうちょいスマートな書き方はできるが、自然な書き方だろ。

593 :仕様書無しさん:01/08/31 02:15 ID:Uw/LOPIM
自称業務歴8年の男が書いたソースです。

case 1: /* 1 */
処理1
break;
case 2: /* 2 */
処理2
break;
case 3: /* 3 */
処理3
break;
default:/* デフォルト */
break;

ロジックに問題があると言うよりは(以下略

594 :仕様書無しさん:01/08/31 06:30 ID:9jozHDY6
>>593
関数ポインタの配列をつかえって、言いたいのかな?
よくわからん。

595 :仕様書無しさん:01/08/31 06:36 ID:wqxqx0pc
>>594
コメントが頭悪いってことじゃない?

596 :仕様書無しさん:01/08/31 06:53 ID:Tp2awGrs
先輩の書いたコード・・・

ある関数が動作してないってことで、関数見てみた。

void CopyValueOfServer( int x, char* y, char* z ・・・){



}

597 :596:01/08/31 06:59 ID:Tp2awGrs
ごめ・・・
しっぱい・・・

全部の引数の参照先の値を変えないといけないのに int x ってやってた・・・

本人曰く
「代入してんだから大丈夫でしょ??」

char のポインタ はちゃんとやってたのになんで?

しんでくれよ・・・

598 :仕様書無しさん:01/08/31 09:45 ID:Qc9VFrx2
>>597
char のpointer をstring として理解してんじゃないの?分からんけど。

599 :仕様書無しさん:01/08/31 11:13 ID:QAHLtr5o
やたらに引き数だらけ

void f(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j....)
{

しかも、この関数の中でa,b,c,d,e,f,g,...は使っておらず必要なパラメータは
全部グローバル変数。なんで、こんなことをしているのか、さっぱわからん。

600 :仕様書無しさん:01/08/31 12:48 ID:j8wOc87Y
int n;
char filename[13];
for (n = 0; n < 100; n++) {
 sprintf(filename, "HOGEHOGE.A%02d", n);
 filename[13] = '\0'; // 念のため
 ・・・

念のためにバグ入れといたのか?(鬱

601 :仕様書無しさん:01/08/31 13:27 ID:ZA8wDVu.
>>600
[13]に入れちゃまずいな。
でも、明らかに要らないゼロクリアをなぜだかやりたがる人って多くない?

602 :仕様書無しさん:01/08/31 13:46 ID:aPwex0fY
_snprintf (Win系の場合)にしとけばいいのに・・・・。

603 :仕様書無しさん:01/08/31 13:56 ID:VD5r0uV2
break;文入ってるだけマシかも・・・・

604 :仕様書無しさん:01/08/31 14:17 ID:WN2zsPIw
>>601
すまん、俺は1年目に先輩に散々ゼロクリアやれ言われて
仕込まれたので、未だにゼロクリアをついついやっちまうよ
600のようなことはやらんけどな(って過去に同じことやったことあるよ・・・鬱だ)

605 :仕様書無しさん:01/08/31 14:32 ID:M8H0Ygxw
>>600
その昔自分が作ったものにひじょうによく似てるんだが

606 :604:01/08/31 15:02 ID:WN2zsPIw
/* 念のため */

よく使ってたよなあ・・・このコメント

607 :仕様書無しさん:01/08/31 15:33 ID:OprT.83Y
念のため、で思い出したが、
switch (pMsg->wParam)
{
    case xxxx:
        return TRUE;
        break;  // コンパイラ信頼性
}

608 :仕様書無しさん:01/08/31 16:42 ID:.DD1/dA2
ソースコードでは無いが、以前の会社で3台のマシンをLANで接続して、とある
制御を行うマシンの開発にかかわっていた。使っていたOSでは、(多少制限は
あるものの)BSDソケットが使えた。

で、3台のマシン間で通信する必要があるのだが、その方法というのが...
・HDDをNFSマウントする
・コマンドやデータの送信は、特定ファイルをopen, readして該当個所
の値を書き換える。
・受信は受信側マシンでそのファイルをポーリングする(open, raed して以前の
値と変化があるかどうか調べる)タスクを走らせる。

ということをやっていた。
なぜTCPなりUDPなりで通信しなかったというと、開発に関わっていた人が(当時
の俺も含めて)誰もソケットの使い方をしらなかったから。

で、俺はスティーブンスの本を読んで、これなら使える と自分のモジュール部分
の通信でソケット使うように設計書を書いたら、上の人に却下された。
理由は「今までそうしてなかったから」。

ちなみにそのOSはタスク(プロセス)空間が独立していないので、グローバル変
数使いまくりだった。にもかかわらずセマフォなりの排他制御をしていないの
がかなりあった。

給料は良かったけど、やめて良かったと思っている。

609 :仕様書無しさん:01/08/31 17:24 ID:uA5E4Mo2
>>608

OS9の仕事?

610 :608:01/08/31 17:29 ID:.DD1/dA2
>>609

VxWorks 5.1 か 5.2か。
オプションか何かで、タスク空間の保護もできたと思ったけどそれ
はしていなかったのです。

611 :609:01/08/31 18:03 ID:uA5E4Mo2
>>610

うっそ。まじー?VxWorks使う資格ないよ、それは。

612 :608:01/08/31 18:24 ID:.DD1/dA2
>>609、611

スマソ、当時は俺も(今より遥かに)厨房で。
でその上の人とは(メールでだけど)かなりやりとりしたのだが、結局
従来通り fopen, fread, fwrite 方式になった。
何せチームが北海道と本州に分かれてたので、いいかげんメールの
やりとりに俺も疲れたんよ。

ちなみに、GBDのリモートデバッグも使わず、皆 printfデバッグだっ
た(w

ちなみに、その会社(グループ)は業界でもシェア世界 1、2位を争う
会社(の子会社)。
東証1部上場で、今日の終値 6千円強。

613 :仕様書無しさん:01/08/31 18:27 ID:maEh55Qs
>>601
漏れもゼロクリアしたがる一人かも。
使うメモリーはゼロクリアないしは値をセットしてから使うよ。
>>600のfilenameならmemsetでNULLでクリアしてから使う。
無駄なのだろうな。

614 :仕様書無しさん:01/08/31 19:03 ID:M8H0Ygxw
>>613
でも設計書の段階から、初期化の処理で 0 クリアを義務付けている
ものって割とないか?

615 :ミ(゚◎゚)ミ  ◆c2uMaIpA :01/08/31 21:42 ID:NXBBGYUA
メモリをゼロクリアしておくと、デバッグ中メモリダンプしたときに
見やすいと言うね。
オレはやらないけど。

616 :仕様書無しさん:01/08/31 22:14 ID:pqNE9.Aw
とある制御系プログラムを書いてます。
引継ぎしたソース、1つ構造体の中にさらに5つ・・・そこからまた3つ・・そこからまた8つ・・・と、まぁこれは
そんなに珍しいものでもないとして。

 変数の80%が無意味。
 値は入っているが代入のみで参照一切なし。

そこで、これらの変数を削除していいかと聞くと「ダメだ。いつか使うかもしれない」
では使う時までマスクしておいていいかと聞くと「ダメだ。間違って消してしまうと困る」

それで、速度重視の仕様を追加変更しろっちゅーんかい!! と、これも説明したが
「そんなに影響の出るものでもないだろう」 ・・・毎サイクル無意味な変数60個以上
値の代入してたら・・・影響出るだろ。おい。

617 :仕様書無しさん:01/08/31 23:01 ID:M8H0Ygxw
>>616
既存のソースはなるべくいじらず更新せず。
…らしいよ

618 :仕様書無しさん:01/08/31 23:16 ID:9x6zh8wc
グローバル変数は構造体一個しかないんだけど、
それに全ての情報がぶちこまれている。
サイズは1万を超える。

619 :仕様書無しさん:01/08/31 23:30 ID:Hnz3MMbE
ばいと?行?

620 :とねぞう:01/09/01 01:07 ID:i5nJRCXw

for(;i<rec_count;i++){
if (・・・){
goto ERR1



ERR1:
return 1;
}


・・・あら?

621 :仕様書無しさん:01/09/01 01:37 ID:3dLLB/YQ
C言語何ですけれど、
ifを使って
で省いているソースが
500行程続いていた時はホント驚きましたよ。
同じような処理がたくさん書かれているから保守するのも大変
全くオブジェクト指向とはほど遠い作りになっております。
でも、ココで諦めちゃダメですよね。
自分が少しづつでもいいからから体制を変えていく気持ちでがんばりたいです。

622 :仕様書無しさん:01/09/01 01:40 ID:wXllhF8k
<Hage.java>

public class Hage{
 public void func()
  throws AException,BException,CException{/* Some Impl */}
}

別クラスのある関数
public void hoge(int[] return){
 try{
  Hage hage = new Hage();
  hage.func();
  ret[0]=0;
 }
 catch(AException e){ret[0]=1;}
 catch(BException e){ret[0]=2;}
 catch(CException e){ret[0]=3;}
}

なに考えてんだ…
JavaできないんだったらJava使うなよ…

623 :仕様書無しさん:01/09/01 01:41 ID:wXllhF8k
public void hoge(int[] return){
->public void hoge(int[] ret){

ミスった。

624 :仕様書無しさん:01/09/01 01:44 ID:3dLLB/YQ
C言語何ですけれど、
#if 0
#endif
で省いているソースが
500行程続いていた時はホント驚きましたよ。
同じような処理がたくさん書かれているから保守するのも大変
全くオブジェクト指向とはほど遠い作りになっております。
でも、ココで諦めちゃダメですよね。
自分が少しづつでもいいからから体制を変えていく気持ちでがんばりたいです。

625 :622:01/09/01 01:48 ID:wXllhF8k
ちょっと足りないな。

さらに別の関数
public void hage(){
 int ret = new int[1];
 hoge(ret);
 switch(ret[0]){
  /*条件分岐*/ 
 }
}

626 :旅人プログラマ:01/09/01 01:58 ID:8sw/gX7g
>>624
#if 0 自体は仕様変更で機能削除する時に、
万が一やっぱり必要だと言われた時に
劇鬱にならない様にするために使われる手段ではあります。

627 :仕様書無しさん:01/09/01 02:05 ID:jXCmjtPk
>>626
バージョン管理システム使え

628 :仕様書無しさん:01/09/01 02:17 ID:actEF9UM
>>96
爆笑…腹いてぇ。

629 :仕様書無しさん:01/09/01 02:20 ID:actEF9UM
>>627
cvs?いらん。あんなもの。
つかえねぇよ。つかえん。つかいづらい。いらん。
#if 0で切ればいいんじゃないの?>>626に同意。

630 :sage:01/09/01 02:25 ID:fONJnvsY

俺だったらこいつのいる会社やめる。

631 :仕様書無しさん:01/09/01 02:35 ID:GJHYS60.
>>630
俺も。

632 :仕様書無しさん:01/09/01 02:48 ID:VK/6PY3Q
Cでも昔のソースならオブジェクト指向とは関係ないだろ >>624
もしかしてWin95か98辺りでパソコンってものを知った?

633 :仕様書無しさん:01/09/01 02:51 ID:WX7.0bGo
>>628
激しく、同意はするが・・・・
エライ、昔の話だね。(藁

634 :仕様書無しさん:01/09/01 03:22 ID:EmLl9/yw
>>630
でも、時々居そうなのが 恐っ

635 :仕様書無しさん:01/09/01 04:23 ID:GJHYS60.
>>630
使えないのは CVS じゃなくて、お前の方。

636 :仕様書無しさん:01/09/01 04:42 ID:.7/6Kd1k
#if 0が標準なのはキツイが、CVSがそんなにいいか?
それにCVSでやろうとしている事と#if 0でやろうとしている事とは
違うと思うぞ。

637 :仕様書無しさん:01/09/01 05:08 ID:jXCmjtPk
>>636
どう違うか説明しろよ。
無駄なコードをソースの中に残すな。ただでさえ汚いお前らの
ソースが余計に汚くなるだろ。修正する奴のみにもなれ。

638 :仕様書無しさん:01/09/01 10:09 ID:SxMpO4QE
void hoge(int a, Connection con) throws SQLException {
String sql = "select to_date(to_char(date"+a+", 'yyyymmdd')) from hogehoge";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();

以下略

萎えた…

639 :sage:01/09/01 10:10 ID:fONJnvsY
(゜д゜)<使えないっていわりた

いやべつにCVSとかそれっぽいやつ使わなくてもいいけどね。

#if 0
で殺した部分をナニカの機会で戻すときに、
それまで同じ場所に当てた修正も当て直してくれるのならいいよ。

ああもちろん、CVS使えない人がいて、他人の修正履歴無視して
チェックインしちゃった事件のある職場なら同情するけど
やっぱ、俺なら、他の職場を探すよ。うん。

640 :仕様書無しさん:01/09/01 10:11 ID:SxMpO4QE
2行目
String sql = "select to_date(to_char(date+"+a+", 'yyyymmdd')) from hogehoge";
だ…

641 :仕様書無しさん:01/09/01 11:42 ID:7RYoc1HE
/* ここにコメントを挿入すると動くようになった。*/

(゚Д゚)ハァ?

642 :仕様書無しさん:01/09/01 11:43 ID:7RYoc1HE
>>630
( ´_ゝ`)フ−ン、相手を辞めさせるんじゃないの

643 :仕様書無しさん:01/09/01 12:03 ID:3MrKXbAo
if(strcmp(ValueStr, "0") == 0
|| strcmp(ValueStr, "00") == 0
|| strcmp(ValueStr, "000") == 0
|| strcmp(ValueStr, "0000") == 0
|| strcmp(ValueStr, "00000") == 0
|| strcmp(ValueStr, "000000") == 0){
  //.....
  //.....
}


おいおい…

644 :仕様書無しさん:01/09/01 12:13 ID:npSIjMSg
>>641
コンパイラが不出来だとそういうことがあるのだよ・・・まじで

645 :仕様書無しさん:01/09/01 12:45 ID:mg/gFSQA
引数の数が150。

646 :仕様書無しさん:01/09/01 13:39 ID:VK/6PY3Q
>>644
そうだな、昔はよくあった。
/* が閉じられてません、って/*なんて1つも使ってねえよ!
しかたがない、コメント1行追加するか。

/* コメントがないのにコメント閉じてないとエラーになるので追加 */

complete.
error 0.

・・おい。

647 :とねぞう:01/09/01 14:57 ID:/IPGzelo
>>645
ワラタ
もっとも言語次第だけど。

648 :仕様書無しさん:01/09/01 16:22 ID:CvjHwrr2
>>641
学生時代、プログラミング演習で使っていたPascalコンパイラは日本語を
含んでいると、たまに原因不明のエラーが発生するので困っていたよ。
結局コンパイル専用のコメントなしソースを別に作っていた。(鬱)

649 :仕様書無しさん:01/09/01 16:58 ID:GO0rhp5E
>>648
そういう時は、コメント削除のプリコンパイラもどきを、SEDか何かで
作っておくべきかと思われるが…

650 :仕様書無しさん:01/09/01 17:32 ID:iZ2DQ13Q
C++ で「メモリリークしてっから潰してね」と言って返ってきたソース。

CFoo *foo;

foo = new CFoo;
...
...(なんかの処理)...
...
foo = NULL; //←これが追加されてた

「辞めよう」じゃなくて「辞めさせよう」と思った。

651 :仕様書無しさん:01/09/01 18:25 ID:pq40gGQQ
いま仕事途中で放り出して逃げた奴のソース追っかけてます。
オイラも逃げようかなぁ〜と思案中です。
あんなクソコードそうにもできない。

652 :00逝って良し:01/09/01 19:35 ID:pt1C.yAs
仕事途中で放り出して逃げたことありましたけど何か?
最後の仕事はギンギンのオブジェクト指向で作ってあって
割りこみやオブジェクト間の擬似メッセージで動作する
システムだったけど、オブジェクト単位で考えると
すっきりするけど、流れを追おうとするとお手上げだろうなー。

653 :仕様書無しさん:01/09/02 00:30 ID:EZelmJpc
うちの先輩はカプセル化されていないクラスを平気で書くなぁ。
何かに依存する場合はきちんとコンストラクタの引数や、
virtual で差しかえられるようにして欲しいなぁ。

654 :仕様書無しさん:01/09/02 02:08 ID:PfQflN.o
>>643
激しくワラタ。
最大文字列長さまで続くのかな?

655 :仕様書無しさん:01/09/02 03:19 ID:5OlTPQGs
別会社の奴が作ったモノの修正だった上にソースじゃないけど、
テキスト項目を1つ作ってプロパティで複数表示にしてやりゃ
いいものを10項目×30行全部別々のオブジェクトだったとき…

656 :仕様書無しさん:01/09/02 05:04 ID:uTCvb1wY
ソースコードでもないし、俺の会社と取引があるわけでもないが・・・・
就職先探してるときに、こんな感じの求人広告を見たYO!

(株)Hoge
10数年前に当時不可能だといわれた処理を社長が作成に成功した。
(以下、自慢が続く)
そのシステムのソースは未だに社長しかさわれないというほど複雑な処理です。
あなたも、当社で働いてみませんか?

詳細は忘れたが、社長しか触れないソースを、自慢してたような感じだったな(藁
誰がそんなデスマーチに自らはまりに行くんじゃ、ヴォケ!
と思い、候補から真っ先にはずしました(藁

657 :C:01/09/02 06:05 ID:/7nGuvsM
>656(...その文章、生で読みたいW

658 :仕様書無しさん:01/09/02 06:33 ID:S9z51R6w
>>650
それは、明示的にガーベージコレクタを呼び出したんだよ。

659 :仕様書無しさん:01/09/02 06:57 ID:4Opp/P/k
どう見てもファイルが少なすぎる。
コンパイルするとエラーになる。
どうやって動かしてたのか分からん。

660 :仕様書無しさん:01/09/02 07:16 ID:BR65r1iA
>>656
オレの最初の会社(もう存在しない)は、ある時何を思ったか

(株)uhyo
以下が当社の失敗の実績です。
 ・19XX年、〜〜社とのトラブルにより〜〜〜百万円の被害、
  1x人が退社
 ・19XX年、〜〜の開発中に問題が発生、〜〜と〜〜と関連会社の
  〜〜〜に〜〜〜百万円の被害を与える。x人が退職
 ・19XX年、組合との談合中にトラブル発生、解決しきれず1x人が退社
 ・
 ・
このような失敗を何度も繰り返しつつも、確実に仕事を得て実績を伸ばしていっている
根強い基盤を持つ会社です。社長自ら営業に動き、大手メーカーとの強いコネクションにて
会社経営を維持しています。あなたもこんな会社で働いてみませんか?


社員であった俺は、「終わったな」と思い、1年後に辞めた。
そしたら辞めて半年で潰れた(w

661 :仕様書無しさん:01/09/02 14:53 ID:yc0IoDhM
>>645
これって罰ゲームなのか…

662 :仕様書無しさん:01/09/02 15:04 ID:8X..TUFE
>>661
いや、精神修養だろ。

「修行するぞ!」…ふっるー。

663 :仕様書無しさん:01/09/02 15:52 ID:BR65r1iA
>>661
もし引数が
 void aho(int a1, char a2, int *a3, .... USER_STRUCT *a150 );
だったりしたら完全ないじめだな

664 :仕様名無しさん:01/09/03 01:31 ID:XI4sBDEU
ウチ、今C開発なんですけど、
ポインタの使用に申請が必要なんです。
所要期間1ヶ月。
コーディング期間2日。。。
サヨナラ・・・(笑)

665 :仕様書無しさん:01/09/03 01:34 ID:8Yz2Oc.U
>>664
Cでポインタ使わないって、文字列とかはどうしてんの?

666 :仕様書無しさん:01/09/03 01:37 ID:w.H9Q05k
>>664
何でこの板は、こんなネタみたいな話ばっかりなのでしょう…

この業界は、他の業界じゃ信じられないような低レベルな、
適正ない奴バッカリということなのかな?

667 :仕様書無しさん:01/09/03 01:42 ID:2KBg5gac
>>665
とうぜん配列だろ
>>666
それが現実さ

668 :仕様書無しさん:01/09/03 01:48 ID:8RSRUj2A
とうぜん配列。。。。わけわからん。

669 :kote:01/09/03 02:01 ID:tdvhHcqo
if else の間が8000行
else は1行

670 :仕様書無しさん:01/09/03 02:03 ID:2KBg5gac
>>668
それが現実さ

671 :仕様書無しさん:01/09/03 05:56 ID:xqIUHD66
とりあえずCのif〜else文等で{}を省略すんのやめろ。
一行しかなくても{}で括れや。

672 :仕様書無しさん:01/09/03 07:43 ID:McUU4Cik
>>671
どうでもいいけど一応同意
あったほうが見やすいよね。
でも、それだけで辞めようとは思わないなあ(www

673 :仕様書無しさん:01/09/03 10:35 ID:PgBKzc4E
for( i = 0; i < hoge; i++ )
{
if( b > 0 || b < 10 ) continue;
else if( b < 0 ) continue;
else if( b > 30 ) continue;
else if( b == 0 ) continue;
else break;

/* なんかの処理 */
}

674 :2:01/09/03 10:38 ID:PgBKzc4E
c = get_hoehoe();

for( i = 0; i < x; i++ )
{
  if( c != 0 )
  {
    for( k = 0; k < xx;; k++ )
    {
      if( c != 0 ) /* なんかの処理 */
    }
  }
}


xは最高で60000。最低でも2000。

675 :仕様書無しさん:01/09/03 10:40 ID:PgBKzc4E
間違えた。こんな感じだった。

c = get_hoehoe();
x = get_ugyaaa();

for( i = 0; i < x; i++ )
{
  if( c != 0 )
  {
    for( k = 0; k < ((x % 10)+1);; k++ )
    {
      if( c != 0 ) /* なんかの処理 */
    }
  }
}


xは最高で60000。最低でも2000。

676 :sage:01/09/03 11:29 ID:aD2f0JbU
>>675
なんかの処理でcやcのエリアスを更新していないなら、
頭のいいコンパイラはチェックを一回にまとめてくれるよ。

677 :仕様名無しさん:01/09/03 13:19 ID:/HjaLfyg
>>665
>Cでポインタ使わないって、文字列とかはどうしてんの?
トーゼン、配列。
トーゼン、全てグローバル変数。。。

話変わりますが、、、
struct sss{
i_aaa[10];
i_bbb[8];
i_ccc[12];

o_aaa[10];
o_bbb[8];
o_ccc[12];
} zzz;

I/O処理に使う変数だと思って作った本人に聞いたら、
画面を縦にニ分割し、左画面出力用と右画面出力用の変数だと聞いたとき、
こいつとはもう仕事したくないと思った。
他にもdummy1,dummy2,dummy3とかよく使っているみたいだし。
参考にしろといったって、かえって訳わからんなるわ〜!

678 :仕様書無しさん:01/09/03 14:41 ID:tdvhHcqo
int mayumi = 0;

以前その課にいた新人の女の子で、かわいかったからそのまま作らせたと・・・
当然辞めた。

679 :仕様書無しさん:01/09/03 15:40 ID:ibY9Davc
「無駄なコードがあったのでかなり削りました。
 相当速くなったと思います。」

とか言ってコメントを全部削除したアホがいたなぁ・・・。

680 :旅人プログラマ:01/09/03 19:09 ID:fvcc3/22
>>666
いやいや、本当にいろんな会社があるんですよ(苦笑
WinAPI使用禁止とか、
変数名の長さは14文字固定長で、連番付けされているとか、

仕様においては…(以下自粛)
やられた事に付いては…(以下自粛)
聞いてくる質問においては…(以下自粛)

681 :仕様書無しさん:01/09/03 20:18 ID:PgBKzc4E
>>679
コメント削除じゃなくて、#if〜#endifによる履歴削除したやつはいた。

また、「メモリを無駄に使っていたので負荷を軽くしましたよ」と、
long宣言を全部intに変えたやつも。16ビット端末で何やらかすんじゃ!

テストが終わったら「テストは無事完了しましたのでテストシートを廃棄してきました」と
言ったアホもいたなあ。。納品資料だったのに捨てやがったので、800枚ほど再度印刷して
徹夜で1枚1枚○と日付入力をするハメになった記憶が・・・ああ鬱だ。鬱だぁーーーっ!!

682 :仕様書無しさん:01/09/03 23:29 ID:.NTt.rjw
あのぅ、ポインタ禁止だとかポインタ使うのに申請が必要っていうネタが今まで何回かあったけどさ。
肝心のmain()はどーすんの?
argv[]はポインタの配列でしょ?使えなくてどーすんのさ……

683 :sage:01/09/03 23:39 ID:aD2f0JbU
>>682
void main(void) に統一? w

684 :お胸おっぱい:01/09/03 23:55 ID:HIrKEW32
>>682
ポインタ禁止とかぬかす脳足りんには、argv[] は配列に見えるんでしょ。

685 :仕様書無しさん:01/09/03 23:59 ID:inA2p8j6
つーか[]演算子によるアクセスはポインタアクセスに見えて
ないんでしょ。
範囲チェックなんかぜんぜんされなくて言語仕様上も*を
つかったポインタアクセスとまったく変わりないというのに。

686 :仕様書無しさん:01/09/04 00:11 ID:4T6qob.c
Connectionオブジェクトがclose()されてない個所があるようなので
探してください、といわれて20000行くらいのコードを見た。

Connectionオブジェクトがclose()されていなくない個所がひとつも無かった。

687 :仕様書無しさん:01/09/04 00:32 ID:4QCjA5Lk
>>686
Connectionはプールしないの?

おいらは、初期化で一定数Connectionつくって、以降はずっと
使いまわすぞ。シャットダウン以外は一回もclose()よばない。

688 :仕様書無しさん:01/09/04 01:29 ID:o0zPLCkM
この引数、なんか全然使われてないんですけど何ですか? と聞いたら
よく見ろよ! 関数呼んでるここの部分で値セットしているやろ! と言われた。
ふむふむ、本当だ。値セットされてる。でも、毎回=1としか書かれてないですよ? と聞いたら
それでも引数で与えているということは意味があるんじゃ! と言われた。
でも、この変数ってグローバル変数ですよね。なんで引数にするんです? と聞いたら
そういう仕様じゃ! と言われた。
はあ。で、それで引数として与えて、一切参照してないんですけど何故ですか? と再度聞いたら

・・・おおっほんまや、お前結構目ぇ鋭いなあ! と誉められた。

このシステム、こんな状態ばかりで4年も動いてたのか・・・と思うと辞めたくなったよ。
他にも毎回0しか返さない関数、グローバル変数を引数で与えまくっている関数呼び出し部分・・・ここ本当に大手電器メーカー?

689 :仕様書無しさん:01/09/04 12:42 ID:EPr2Usf6
>>632
「 Cでも昔のソースなら 」
このセリフが物語っている。
向上心のない、受身の人生。

690 :仕様書無しさん:01/09/04 13:04 ID:c5MCk71o
>>689
「OOが無かった頃の」という意味と思われ。

691 :仕様名無しさん:01/09/04 13:19 ID:B/PivQEA
>>682
>>683
使えないミドルウェア使用するため、
argv[]は使用しないんですぅ。

ちなみにサーバー、立ち下げに3時間、立ち上げに3時間かかります。
たち下げ失敗するとさらに倍!
F更した日は1日立ち上げに失敗してる。

692 : :01/09/04 13:29 ID:TCXlmXyA
signalの処理のなかでprintf系の関数つかってる。
しかもそのsignalでは、プロセスは終了しない。
辞めようとは思わなかったが、その部分は、知らんぷりしといた

693 :仕様書無しさん:01/09/04 23:08 ID:IAf.u5ug
シグナルの処理ってことは、Unix系OSだろ?
printf系の関数って標準入出力のことか?
それのどこが悪いんだ?

DOSの割り込み中に端末に文字を出そう
する話なら分かるけど。

694 :/名無しさん[1-30].jpg :01/09/04 23:19 ID:UYZVhIb.
Aさんほかの会社の人も見るソースに

修正履歴
 YY.MM.DD 会社名_ペンネーム

は止めてください

695 :仕様書無しさん:01/09/04 23:27 ID:A7P4CjWw
シグナルハンドラの中で使える関数には言語仕様で
制限されていたと思うのですが気のせいでしょうか

696 :仕様書無しさん:01/09/04 23:39 ID:MomfkE1M
>>693
シグナルハンドラから安全に呼べるシステムコール/関数は、きわめて
制限されてます。たいていの環境で、write(), や malloc() 使ってた
らアウトじゃないかな。

Solaris が手元にあるなら intro (3) に詳しく書いてあるはず。ここ
で async safe (async signal safe だったかも) と書いてあるもの
以外は、シグナルハンドラから呼び出してはいけない。

697 :回収されるだけのことはある。:01/09/04 23:46 ID:Dypw/NbE
mo〜いや。 関数にわけろよ・・・。

switch(co){
 case 1:
  switch(do){
    if(){
      switch(){
      }
    }

  }
  break:
 case 2:
  if(){
    switch(){
  
    }
  }

}

こんなのが延々と続く・・・。

698 :仕様書無しさん:01/09/05 00:14 ID:CWosPXu6
ヴァカにはswitch文使われるだけでイヤになるね……

699 :仕様書無しさん:01/09/05 00:48 ID:6wTgQGc6
>>696
勉強になりました。

700 :仕様書無しさん:01/09/05 00:53 ID:cn7Ak9JE
main(){ /*アトハヨロシクネ(・∀・)*/ }

701 :仕様書無しさん:01/09/05 00:54 ID:sOim3Vuo
>>697
doは予約語だと思われ。

702 :仕様書無しさん:01/09/05 02:41 ID:aWM7tz2w
>>632
オブジェクト指向の意味分かってんの?
「オブジェクト指向への招待」
でも読んで勉強したら

703 :仕様書無しさん:01/09/05 07:16 ID:0ea.vZuk
.>>702
> オブジェクト指向の意味分かってんの?
なんて書くやつは学生orDQNだけだよな・・・

704 :632:01/09/05 07:31 ID:UKGCNHv2
どうにも典型的なマニュアル指向厨房が多いなあ、ここ

705 :仕様書無しさん:01/09/05 10:17 ID:qk6m0AuI
>>688
別におかしくないと思われ。
グローバル変数を直接あちこちの関数で変更・参照されるよりも、
パラメータで渡しておけば後で修正・使いまわししやすいし。

706 :名無しさん@Emacs:01/09/05 11:12 ID:XkDk7ZDk
>>696
Stevens の本にはシグナルハンドラから呼び出せる再入可能関数
(システムコール含む)に read/write が上がっているよ。

安全じゃないのは再入可能でない関数に再入してしまう可能性が
あるからで、再入しないことがプログラムの構造上保証されてるなら
呼び出したって構わないはず。内部でリエントラントでない malloc
使ってる奴はぶつかる可能性が高いけどね。

安全じゃないから一律に呼び出し不可というのはちょっと
偏狭なものの見方ではないかと思うがどうよ?

707 :仕様書無しさん:01/09/05 12:43 ID:6SEfoVx2
<<703
やっぱり分かんないんだ

708 :仕様書無しさん:01/09/05 20:21 ID:UKGCNHv2
オブジェクト指向とか騒がれ始めたのって、ここ6〜7年ぐらいじゃないの?
10年前のCのソースとかにそういうのが無くても全然おかしくないと思うけどね。
流行りはじめてから飛びついた人に限って、知ってる知らない論争頑張るっていうけど・・

709 :仕様書無しさん:01/09/06 12:16 ID:m.JVszaM
>>708
昔のソースそのままの状態でいいって言う考え方が
腐ってんだよ!

710 :仕様書無しさん:01/09/06 12:28 ID:oDQjcmPs
>>708
あんた何言ってんの?
>>632は「関係ない」→「昔のCではOOはあり得ない」って言ってるんだよ。
>>632本人があがいてるの?

711 :仕様書無しさん:01/09/06 12:32 ID:m.JVszaM
受身はこれだからいやだ

712 :仕様書無しさん:01/09/06 12:59 ID:lyyIN8lY
>>632ってそんなに変か?
構造化できてないっていうんならわかるが、Cのプログラムがオブジェク
ト指向から程遠いのは昔のCだけでなく今でも当然だ。

713 :仕様書無しさん:01/09/06 13:00 ID:sDbfoi3I
つーか、過去にかかれたソースでもアプリケーションが
まともに動いて実用に耐え得るんなら、わざわざ書き直さないでもいいだろっての。
改修の必要があるなら、オブジェクト指向でもなんでも取りいれて書き直してくれよ。

714 :仕様書無しさん:01/09/06 18:14 ID:goLWIiwc
>>710
>は「関係ない」→「昔のCではOOはあり得ない」って言ってるんだよ。

関係ない=有り得ない?? それ日本語?

715 :仕様書無しさん:01/09/06 19:45 ID:m.JVszaM
>>713
「まともに動いて実用に耐え得るんなら」
受身だね

716 :旅人プログラマ:01/09/06 20:03 ID:CJ0uvd6E
>>715
でしたら、この場合において
書き換える必要性のない物に対して工数を追加する理由
は何?

717 :仕様書無しさん:01/09/06 20:23
>>716
「まともに動いていて実用に耐え得る」にもかかわらず工数を追加して書き換える理由は?
と聞くべきでは?

マジメに議論したいんなら、意見が対立しているおそれがあるのに、「書き換える必要性の
ない」と一方的に判断しては混乱の元だと思うよ。

煽りあいしたいんだったら、ドーデモ(・∀・)イイ!

718 :仕様書無しさん:01/09/06 20:25
>>715
受身だと何か問題が? 「まともに動いて実用に耐えうる」プログラム
が存在するときに、わざわざそれをOOで設計・実装しなおす必要性を
説明してほしいな。

納得の良く理由がないと、予算つけられないし。

719 :仕様書無しさん:01/09/06 20:26
>>718
自己満か暇かのどっちかでしょ。

720 :旅人プログラマ:01/09/06 20:49
>>717
ぁぅぁぅ、冷静に言われればそのとうりで氏…スマソ

721 :仕様書無しさん:01/09/06 20:56
static char buff[32] ;

memset( buff, 0, 80 ) ;

でも、ちゃんと動いている。

722 :仕様書無しさん:01/09/06 21:36
「ちゃんと」ではないだろ(w

723 :仕様書無しさん:01/09/06 22:08
s/ちゃんと/たまたま/
定義と、初期化が近くにあるうちはすぐに気がつくからいいけど
これが離れるとトラブルを起こしやすい。

定義と初期化は一画面以上離さないようにしよう。

724 :仕様書無しさん:01/09/06 22:54
>>722-723
このスレッドは「この会社辞めようと思ったソースコード」だという
ことをお忘れなく。

725 :722:01/09/07 01:19
>>724
はあ? 忘れてないよ。ちゃんとレスってるだろ。
最近2chに来て威張りたい君なのかもしれないけど、そういうのは
全然関係ない話題を振ったり書き込んだりしたときに言うものだよ。
自分が理解できない会話のときに書くんじゃないんだよ。

726 :仕様書無しさん:01/09/07 01:26
ネタスレでマジレスするなって。まぁ >>718 書いてる俺も、人のことは言えんが。

727 :仕様書無しさん:01/09/07 12:43
>>718 設計・実装しなおす必要性

メンテナンスにかかる時間を最小限にする事を考慮して、
コーディングしなければならいからです。
「 自分だけが理解していれば良い 」という方法だと、
引継ぎの時にエライ稼動がかかってしまいます。
この稼動にかかる時間は、仕事に費やすべき時間
の本質では無いと私は思うのです。
いかに保守しやすい状態にするかが重要だと私は感じます。

728 :仕様書無しさん:01/09/07 13:30
>>727
>「 自分だけが理解していれば良い 」という方法だと、
>引継ぎの時にエライ稼動がかかってしまいます。
>いかに保守しやすい状態にするかが重要だと私は感じます。

全くその通りだと思います。
その「もう俺でもメンテできね〜」ソースの修正を
やらされようとしています。
引継ぎたくな〜い。

729 :仕様書無しさん:01/09/07 15:19
>>727
>「 自分だけが理解していれば良い 」という方法だと、
>引継ぎの時にエライ稼動がかかってしまいます。
現在のプロジェクトはそういう人だらけによって始まったもので
引継ぎ作業をする前に「自分だけが」の人がみんないなくなったので
全員死にそうになっています

730 :仕様書無しさん:01/09/07 16:19
上から読んでて思ったことは・・・
はやいとこリファクタリングが浸透して欲しいよね・・・
動きゃいいと思ってるヤツ多すぎ。

731 :仕様書無しさん:01/09/07 16:30
使ってない#ifdefとか
修正履歴を残すためのコメント
を削るだけてもかなり読みやすくなることがある。

732 :ミ(゚◎゚)ミ  ◆c2uMaIpA :01/09/07 16:50
削除せずに、そういう部分を透明あぼ〜んできるエディタって無い?

733 :♯6411:01/09/07 17:26
>>732 透明あぼーんされてるブロックに
いろいろ落書きされたら鬱だ

734 :仕様書無しさん:01/09/07 17:43
>>732
Vim6 の folding とかは?

735 :仕様書無しさん:01/09/07 18:10
>>732
#if 0〜#endifを非表示にするエディタならどっかで見かけたような…

736 :ミ(゚◎゚)ミ  ◆c2uMaIpA :01/09/07 19:17
>>734,735
vimは使ったこと無いっす、どんな感じですか?
希望の仕様は、#if 0 と#endifの間や、指定の任意の領域を折りたたんで「ココに
透明化されてる領域があるよ」ということを示す色付きのマーク行( ------とか)
1行に置き換えて表示し、指示によって自由に開くことができて、保存時も通常テキストと
修飾情報ファイルに分けて保存して再編集時も前の状態を記憶してるようなやつです。

737 :仕様書無しさん:01/09/07 20:31
>> 727
すでにOO以外の設計手法で設計・実装されて動いているものがある場合の話を
してるんだが。

> 「 自分だけが理解していれば良い 」という方法だと、
俺も含めて、誰もそんなことは書いてないと思うぞ。

738 :721:01/09/07 21:04
>>721


memset( buff, 0, 32 ) ; // memset( buff, 0, sizeof(buff) ) ; のほうが理想

となおすと落ちる…。ハァ?。

739 :例えば…:01/09/07 23:16
>>738
static char buff[32];の後ろ48バイトが
0クリアされて「いない」事が原因だったりしてね。

他のstatic変数で0クリアしていないやばい変数(ポインタとか)
なんかが、同じプログラム内にあるんじゃない?

そのmemsetのおかげでバグが発覚してないの。たまたま。

740 :仕様書無しさん:01/09/07 23:57
memsetで落ちるのか、それ以降で落ちるのかで変わりそうだな
そんなアホなプログラムだったら、文字列以外のものをstrcpyで
与えたりしてそうだし。

741 :仕様書無しさん:01/09/08 02:43
>>737
すでにOO以外の設計手法で設計・実装されて動いているものがある場合の話をしてるんだが。

最初の文章でその条件を書けよ。あなたの文章はいつも説明が足りない。

742 :仕様書無しさん:01/09/08 02:54
>>737
OO以外の設計手法って具体的にどういう方法なんですか?
僕も読んでいて思うんですけれど、分かりにくい文章ですよね。
説明というものは、具体的で明確でないと相手に伝わらないと思います。

743 :仕様書無しさん:01/09/08 02:55
>>742
google 逝きましょう。

744 :仕様書無しさん:01/09/08 04:21
>>741
> 「まともに動いて実用に耐えうる」プログラムが存在するときに、
これで意を汲み取って欲しかったけど、確かに門外漢に対する説明とし
ては言葉が足りなかったかもしれません。

まともに動くというのは、少なくとも用意した単体テスト・結合テスト
は全てパスして(請負の仕事なら)検収も済んでいるということで、仕
様書/設計書がない=設計がされていないものは論外です。

OO以外で一昔前まで主流だった設計方法に関しては、「構造化」をキー
に検索すれば見つかりますよ。

745 :仕様書無しさん:01/09/08 04:33
>>744
バカはどんなに説明してやっても理解出来ないし、
理解しようともしないから気にすんな。

746 :仕様書無しさん:01/09/08 17:44
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998844931

747 :仕様書無しさん:01/09/08 18:00
i)

#undef NULL

ii)

$ grep pthread_create *.cpp | wc -l
56
$ grep mutex *.cpp | wc -l
0

748 :仕様書無しさん:01/09/08 20:02
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=1000000000

749 :仕様書無しさん:01/09/08 21:07
>>747
オモロスギ

ツウカ
ウゴイテンノカソレ

750 :747:01/09/08 21:08
ポシャータYO

751 :747 ◆enYRNelY :01/09/08 21:16
>>745
もう少し理解力のある人間であることを期待したんだが >>749-750
を見るに、相手を買いかぶりすぎてたね(w

騙り防止でトリップ入れとくね。

752 :747:01/09/08 21:24
意味がわからん・・・基地外か?

753 :749:01/09/08 21:25
被害妄想でしょう。
自意識過剰厨房。

754 :/名無しさん[1-30].jpg :01/09/08 21:28
751は作った奴だと思われめ

755 :仕様書無しさん:01/09/08 21:33
単に誤爆なんじゃないの?

756 :/名無しさん[1-30].jpg :01/09/08 21:39
誤爆にしては番号が合いすぎだと思うが

757 :747:01/09/08 21:43
まーいいや
俺は >>1 に対して体験談を書いてみただけだから、なんだかわからんが
あんま怒んなや >>751

758 :仕様書無しさん:01/09/08 23:57
>>747
semaphoreは?
semget, sem_wait, sem_init, semctl

何でも同期、排他が取れるんならいいよ、がっこで習わない?

759 :はぁ:01/09/10 14:22
http://mfc.acty-net.ne.jp/ml/mfc/00034560.shtml
誰かこの人に愛の手を...

760 :仕様書無しさん:01/09/10 15:08
面白い人だ

761 :仕様書無しさん:01/09/10 15:30
>>759
一応、ウプしときます。

>はじめまして、荒川 と申します。
>プログラム歴半年です。
>日付操作で、GetLocalTime()でローカル日時を取得したのはいいのですが、
>現在から昨日の日を知りたいのです。systime.wDayを-1にしたらいいと思った
>のですが、
>1日の日を-1すると、なんと9月0日になってしまったのです。
>今から、X日前を知る方法なんてあるのでしょうか?

http://mfc.acty-net.ne.jp/ml/mfc/00034560.shtml

762 :仕様書無しさん:01/09/10 17:05
お前がガッコで習ったこと全部書いてみれば?(藁 >>758

763 ::01/09/10 17:51
>>759
「最低限の努力を惜しむ人にアドバイスするのも気が引けるのですが....」
といいながら こういう爆笑回答をしてしまう人ってすてき!

764 :仕様書無しさん:01/09/10 21:26
$find / -name '*.c' | xargs grep const /dev/null
$

765 :764:01/09/10 21:28
すまん。/ は誇張しすぎだった。鬱氏。

766 :仕様書無しさん:01/09/10 21:31
>>759

これってMFCのMLなんだよねぇ・・・・。

笑えないよね。。。。。

767 :仕様書無しさん:01/09/10 22:15
>>764
Cプログラマがconstを使用しないのは周知の事実(涙)。

768 :仕様書無しさん:01/09/10 22:24
>>767
いや、Cに const があることさえ忘れていたよ(w

769 :仕様書無しさん:01/09/10 22:27
Cは、熟練者ほど型の概念が崩壊してVBのようなコードになるから鬱だ。。
つーかマジスカ・・>>768

Cプログラマが、マンコありゃなんでもいいよ というか ガキできたら責任
とるからさぁ というか コンパイルできりゃ俺があとはケツもつから好きに
させてくれや というヤケバチな気分になるのもわからんではないが、貴殿ら
(Cグラマ)の書いたコードを利用せざるを得ない身分のC++,JNIグラマというか
俺の身にもなってくれー。

770 :768:01/09/10 22:50
>>769
っていうか、define があるわけだから、
const を使う理由が見当たらない…(マジレス)

型の概念が崩壊しているってどういう状況を示しているのでしょうか?
まさか、データ格納用ライブラリでvoidのポインタを使ってるとか
その類ではないよね?

771 :仕様書無しさん:01/09/10 23:01
>>770
引数の const でないの?
変更しないであろう引数が const 付いてない時で
たま〜に問題感じることあるけど。

772 :仕様書無しさん:01/09/10 23:42
真のCプログラマーは言語仕様などに頼りません。
定数として定義したモノを壊すことがあれば
それは自分の責任なのです。
レブリミッター付きのクルマには乗りたくないのと同じです!

…とか言ってみたりして…
ホントは面倒くさいだけだよ。
元々、Cには const も void も無かったんだから。
アセンブラ++ である C に、そう多くは望まない。

773 :仕様書無しさん:01/09/10 23:43
Javaのコレクションクラスはvoidのポインタを格納するのが流儀

774 :仕様書無しさん:01/09/10 23:46
>>763
この藤田さんは、この程度のことに最大限の努力で挑んだんですね(w

775 :仕様書無しさん :01/09/11 02:56
>>772
確かvoidって初期のころからあったんじゃなかったっけ?
単にアンドキュメンテッドだったってだけで。

776 :仕様書無しさん:01/09/11 03:35
>>771
そう。そんだけ。

>>773
知ってると思うけどもうすぐ変わるよ。
http://www.research.avayalabs.com/user/wadler/pizza/gj/index.html

777 :仕様書書かないさん:01/09/11 04:25
>>771
Cは値渡しだから、ポインタでなければ変更されないでしょ?
・・・あ、変更しないポインタか。

778 :やれやれ:01/09/11 09:35
>>763
「どこかおかしなところがあればご指摘願います」といいつつ
「全然おかしいじゃねぇか」と指摘されると逆切れですか....

http://mfc.acty-net.ne.jp/ml/mfc/00034583.shtml

779 :仕様書無しさん:01/09/11 11:24
>>778
ワロタ

780 :仕様書無しさん:01/09/11 14:43
>>778
http://mfc.acty-net.ne.jp/ml/mfc/00034566.shtml

訂正。
> system.wMonth--;
system.wMonth = (system.wMonth+11)%12;

"+11"が妙にワラタ。こういう奴いるな…

脳味噌、古回転みたいだね。

781 :仕様書無しさん:01/09/11 16:25
>古回転
ナイス当て字! このネタどっかで使わせてもらおう

782 :仕様書無しさん:01/09/11 18:30
#defineがあるからconst使わないんじゃなくて
const知らないだけでしょ。

783 :仕様書無しさん:01/09/11 21:29
const の使い方がわからない奴<逝ってよし!

784 :仕様書無しさん:01/09/12 11:30
ちょっと古くてゴメン。
>>624
Visual Studio で Ctrl + k、Ctrl + j 使っとけ。

785 :7743:01/09/12 12:32
const覚えたての頃は調子に乗って使ってたけど、自分の関数では問題ないけど
そっからAPIや標準関数呼ぶときに引数がconst宣言されてなかったりすると
よくエラーや警告が出るんだよね?あれがうっとうしい。

786 :仕様書無しさん:01/09/12 13:17
言語仕様理解しないやつ <逝ってよし!

環境依存コード->引継いだ奴 <- (泣)

逝ってしまいたい、、

787 :仕様書無しさん:01/09/12 13:26

次の一見間違っている計算式は、ある一定の規則に従い
成り立っていると言える。その規則とは何か答えなさい。
1−4=9
注意:その規則によって常に上の式が成り立たなくても構わない。
要するに、適当に“へ理屈”こねて来いって事。

788 :仕様書無しさん:01/09/12 13:45
>>787 13を法としたモジュラ?

789 :仕様書無しさん:01/09/12 14:07
午前1時マイナス4時間=午後9時
ちゃんちゃん。。。

790 :仕様書無しさん:01/09/12 14:13
1-2=1.2
1-3=3.6
1-4=9.0
1-5=6.8
...

791 :仕様書無しさん:01/09/12 15:01
>次の一見間違っている計算式は、ある一定の規則に従い
>成り立っていると言える。その規則とは何か答えなさい。
>1−4=9
>注意:その規則によって常に上の式が成り立たなくても構わない。
>要するに、適当に“へ理屈”こねて来いって事。

俺が法律。

792 :仕様書無しさん:01/09/12 15:09
One for Nine
Nine for One

ラグビーって9人だっけ?

793 :仕様書無しさん:01/09/12 15:23
one for all
all for oneだお。

794 :仕様書無しさん:01/09/12 15:26
次の一見間違っている計算式は、ある一定の規則に従い
成り立っていると言える。その規則とは何か答えなさい。
1−4=9
注意:その規則によって常に上の式が成り立たなくても構わない。
要するに、適当に“へ理屈”こねて来いって事。

795 :仕様書無しさん:01/09/12 15:28
次の一見間違っている計算式は、ある一定の規則に従い
成り立っていると言える。その規則とは何か答えなさい。
1−4=9
注意:その規則匂って常に上の式が成り立たなくても構わない。
要するに、適当に“へ理屈”こいて来いって事。

796 :( _。。) _ バタ。 :01/09/12 15:28
BYTE *p; *p++=0x63;

こんな感じなプログラム。 メモリポインタの記憶容量決めずにイキナリ書くなよ。

797 :仕様書無しさん:01/09/12 15:29

じゃ、調子にのってもう1問。

1 3 5 7 □ 10 □
上の数列(?)はある規則によって並んでいます。
□の中に当てはまる数字を答えなさい。
また、その規則も答えなさい。

798 :( _。。) _ バタ。 :01/09/12 15:30
それと、某無料公開DXライブラリ……
初心者用だし…私もお世話になったし…内容もおそらく最大の充実だと思うが……

CLASS構造体の中、全部publicなのはどーかと思うぞ……。

799 :仕様書無しさん:01/09/12 21:16
某都銀の某システムの共通関数はCで書かれてるんだけど、引数が全て char * だ。
そんで、中身はたとえばこんな感じ。

#define ONE 1
#define TWO 2
...

f(char *type)
{
switch (atoi(type)) {
case ONE:
...
break;
case TWO:
...
break;
...
}
...
}

富士通って、バカの集団ですか?

800 :仕様書無しさん:01/09/12 21:55
>>799
COBOLを無理矢理Cに移植した後遺症って所ですか…

>>797
8,12
規則:有休を使いたい月

801 :西向く侍:01/09/12 22:10
>>797
31日まである月ということで
8,12

802 :傭兵:01/09/13 16:20
>>785
例えば標準C++のstringオブジェクトからは const char* しか取り出せないからねぇ(str.c_str())。
警告が鬱陶しいとかいう問題でなく、呼ぶCの関数がしっかり引数にconst宣言しているのとを願い、
もしそうなってなければconst_castするしか道がない(自分で保証しながら書いてきたココードの堅さ
が一気に崩れ去る瞬間)。

constはプロジェクト全体でキッチリつかうかまったく使わないかの2択だからねえ。C++には
const objectってオイシイ概念があるけど、これなんかまさに2択。

で、ちょっと使ってみて警告(C)やエラー(C++)がでるからって、プロジェクト全体の規約に
「constは使用しないこと」なんてアホな条項付け加えて緩いコードを推奨するアフォには
俺も閉口せざるを得ない>>元発言の人

803 :仕様書無しさん:01/09/13 16:21
>>799
そんなことはない
データベースが文字ベースだからだよ
ONE、TWOは笑うけど

804 :ワラタ:01/09/13 17:43
>>799
頑張りやさんなんだよ。きっと。

805 :仕様書無しさん:01/09/13 20:22
>>799
せめて const char * にして欲しいよな。って違うか(藁

806 :傭兵:01/09/13 20:40
>>805
あー賛成w

807 :仕様書無しさん:01/09/13 21:02
引継ぎで受け継いだVBのアプリ(指摘されたまま放置された不良が数件あり)
のデバッグをしていたところ、なぜかコンパイルが通らない
調べてみると、標準モジュールにて

  Global Const SPACE xxx(この部分忘れた)

を筆頭になんだこりゃ状態
頼むから、最低限ステートメントと同一名称で定数宣言するなよ

808 :仕様書無しさん:01/09/13 21:05
>>800
COBOLって型ないの?

809 :ミ(゚◎゚)ミ  ◆c2uMaIpA :01/09/13 22:00
>>802
const_castするしか道がない?
せっかくconstで流してきたものを、どうしてもconstで無いところに
渡さなきゃならないなら、コピーを作って渡すべきなんぢゃないの?

810 :sage:01/09/13 22:06
>>809
コピーを作るコストが無視できるならそれもいいね

811 :傭兵:01/09/13 22:59
>>809
そうですね。いちばん最近のが、 渡した文字列が変更されることは
ありえない・頻繁に呼び出されすぎてコストが無視できない ものだっ
たので心情的につい。申し訳ないです。

812 :仕様書無しさん:01/09/13 23:06
XMLファイルをパーサやDOMを使わず
Cの標準ライブラリ関数で処理しているうちの会社に乾杯。
新しいものには大変疎い連中の集まりです。

813 :仕様書無しさん:01/09/14 02:13
>>812
まー書き出すだけだったらえんちゃう?

814 :ミ(゚◎゚)ミ  ◆c2uMaIpA :01/09/14 09:53
>>810,811
んじゃ、デバッグビルドではコピーを渡し、ついでに呼出しの前後で値が変化してないか
チェックする事までやって、それで問題なければリリースビルドではキャストで済ますとか。(わ

815 :仕様書無しさん:01/09/14 14:32
Const A As string ='あなたはアホ'
Dim B As Boolean
B = A
潜在バグですってこんなんありかよ。まぁVBだからそーゆー
高貴なお方もなかにはおられるかも氏れませんが


816 :この間違いを初心者ではない人がやっていた。過労だ。:01/09/14 15:21
#define LEN1 5 * N
#define LEN2 10 + M * 3

char buffer[LEN1 * LEN2];

/******** 逝ってよし。 ********/

817 :お胸おっぱい:01/09/14 15:28
>>816
それは初心者と呼んでも間違いではないかもよ。

818 :仕様書無しさん:01/09/14 15:30
漏れの先輩のソースコードは、ローカル変数が
aaa
bbb
ccc
とかばっかだ。

819 :仕様書無しさん:01/09/14 15:33
>>817
本当に初心者じゃないんだってば。長年やってる人。
怖いだろ。

820 :お胸おっぱい:01/09/14 16:01
>>819
俺の隣にも“初心者歴 6年”ってのが座ってるよ。
今、覗いてみたら

char bf1[16], bf2[16];
int i, icchi;

icchi=0;
for (i=0; i<16; i++) {
 if (bf1[i]==bf2[i]) {
  icchi=icchi+1;
 }
}
if (icchi==16) { /* 同じ */
  :
  :
}

だって。あー目まいが…

821 :コメント無しさん:01/09/14 16:07
>>819
長年初心者やってる人では?
たしかに怖い。
ところで実際にやりたかったのは
 char buffer[LEN1][LEN2];

 char buffer[LEN1 + LEN2];
のどっちだ?
どっちにしろおかしいが。

822 :仕様書無しさん:01/09/14 16:10
>>820
 strcmp()を知らないってこと?
 つっこみどころ満載だけど、個人的に、i++とは書くくせに、icchi++とは書かないところがウケル。

823 :ネタ(いまいち):01/09/14 16:20
>>820
> だって。あー目まいが…
そうだな。
一致しなかったらループを抜けるようにしたほうが速い
icchi=0
for (i=0; i<16; i++) {
 if (bf1[i]==bf2[i])
  icchi++;
 else
  break;
}

memcmpなんて関数を使うと関数の呼出しコストが馬鹿にならない。

824 :デフォルトの名無しさん:01/09/14 16:27
>816 たまたまM>=5だったのか…あえて知っててやってたらまさに逝って良しだな。
>822 memcmpでは?

825 :お胸おっぱい:01/09/14 16:30
>>821
 char buffer[(5 * N) * (10 + M * 3)];
のつもりで、実際は
 char buffer[5 * N * 10 + M * 3];
になっててマズイ、って話だと読んだんだけど…

>>822
彼にとって“++”は、for の括弧の中でしか使えないらしい。

826 :少し付き合ってあげようさ:01/09/14 16:33
>823
一般に0と比較したほうが高速だから、
 for (i=0; i<16; i++) {
よりは
 for (i=15; i>=0; i--) {
だろう?

827 :良いネタは難しい:01/09/14 16:39
>>823
ん〜、そういう細かいことは最適化の観点から見ると重要じゃないんだよ。

まずね、変数名が無駄に長い。1文字にしたほうが早くなる、常識だよ?
それから、定数と比較するときは定数を右側に書いたほうが早くなるんだ。
このくらい知って無くちゃ、ハズカシイよ?

はい、最適化版。オレの足をひっぱらないように、がんばってくれよ!
char bf1[16], bf2[16];
int i, j;
for (i=j=0; i<16; i++) {
 if (bf1[i]==bf2[i]) {
  j=j+1;
 }
}
if (16==j) { /* 同じ */
 ;
}

828 :仕様書無しさん:01/09/14 16:42
>>823
>memcmpなんて関数を使うと関数の呼出しコストが馬鹿にならない。
優秀なコンパイラならinlineで展開されるんじゃないの?

829 :ネタ(いまいち):01/09/14 17:08
> 一般に0と比較したほうが高速だから
そうだ、忘れてた
あと0を代入するのではなく、xorを使った方が速くなるな

>>827
> 定数と比較するときは定数を右側に書いたほうが早くなるんだ。
知らなかった、と言う事は
> if (16==j) { /* 同じ */
if (j==16) {
の方がよりベターだな。

>>828
> 優秀なコンパイラならinlineで展開されるんじゃないの?
真のプログラマはコンパイラを選ばない
ちなみに俺愛用のコンパイラLSI C-86(試食版)は展開されないぞ。

830 :デフォルトのネタ名無し:01/09/14 17:10
ループなんか使ってたら遅いじゃあないか。

char b1[16], b2[16];
int j;
if (b1[0]==b2[0]) j=j+1;
if (b1[1]==b2[1]) j=j+1;
if (b1[2]==b2[2]) j=j+1;
   :
if (b1[16]==b2[16]) j=j+1;
if (16==j) { /* 同じ */
 ;
}

831 :ネタ(いまいち):01/09/14 17:19
>>830
> ループなんか使ってたら遅いじゃあないか。
しまった、そこまで考えが回らなかった。
カウンタもいらなくなるんでメモリ節約にもなるな
# メモリの1byteは血の1byte

しかし、しゃくに障るので揚げ足でも取っておこう。
> if (b1[16]==b2[16]) j=j+1;
if (b1[15]==b2[15]) j=j+1;
だよな?

832 :仕様書無しさん:01/09/14 17:22
こうすればさらに変数が減るから速くなるよ

char bf1[16], bf2[16];

if(
  bf1[ 0 ] == bf2[ 0 ] && bf1[ 1 ] == bf2[ 1 ] && bf1[ 2 ] == bf2[ 2 ] && bf1[ 3 ] == bf2[ 3 ] &&
  bf1[ 4 ] == bf2[ 4 ] && bf1[ 5 ] == bf2[ 5 ] && bf1[ 6 ] == bf2[ 6 ] && bf1[ 7 ] == bf2[ 7 ] &&
  bf1[ 8 ] == bf2[ 8 ] && bf1[ 9 ] == bf2[ 9 ] && bf1[ 10] == bf2[ 10] && bf1[ 11] == bf2[ 11] &&
  bf1[ 12] == bf2[ 12] && bf1[ 13] == bf2[ 13] && bf1[ 14] == bf2[ 14] && bf1[ 15] == bf2[ 15]
 )
{
/* 同じ */
}

833 :830さん:01/09/14 17:24
>>831
ニヤリ

834 :最速のネタ職人:01/09/14 17:28
longなら4回の比較ですむじゃあないか。
char b1[16], b2[16];
long* p1=(long*)b1;
long* p2=(long*)b2;
int j;
if (p1[0]==p2[0]) j=j+1;
if (p1[1]==p2[1]) j=j+1;
if (p1[2]==p2[2]) j=j+1;
if (p1[3]==p2[3]) j=j+1;
if (4==j) { /* 同じ */

835 :ネタ(いまいち):01/09/14 17:28
>>832
> こうすればさらに変数が減るから速くなるよ
さらに、bf1[ 0 ] == bf2[ 0 ] が偽の場合、
次の判定に逝かないからこれが最速みたいだな。

# やはり、俺のネタはいまいちだったか...

836 :仕様書無しさん:01/09/14 17:30
ネタスレ化してるな

837 :ネタ(いまいち):01/09/14 17:46
>>833
???

>>834>>832の手法を組み合わせた
char b1[16], b2[16];
if (*(long *)b1==*(long *)b2
  && *((long *)b1 + 1)==*((long *)b2 + 1)
  && *((long *)b1 + 2)==*((long *)b2 + 2)
  && *((long *)b1 + 3)==*((long *)b2 + 3)
{ /* 同じ */ }
が最速かな?

838 :デフォルトの名無しさん:01/09/14 17:52
Dim 受注 as Integer

VBで漢字が使えるからって「avは止めて欲しかった。

839 :お胸おっぱい:01/09/14 17:52
みんな、ありがとう!
早速、隣の彼に教えてあげ…

…帰ってやがる!

840 :!= 833:01/09/14 17:54
配列のレンジミスで落ちた時って確かに思わずニヤっとするかも。

841 :仕様書無しさん:01/09/14 18:34
>>837
p+1, p+2とかやるよりp++のほうが速いぞ

char b1[16], b2[16];
long* p1=(long*)b1;
long* p2=(long*)b2;
if (*p1++==*p2++
&& *p1++==*p2++
&& *p1++==*p2++
&& *p1==*p2)
{ /* 同じ */ }

842 :♯6411:01/09/14 18:51
>>841 古いmipsだとポストインクリメントより
オフセットの方が速いぞ。

68kとかだと理想のコードが落ちるものなあ。
Pentium以降だと、インクリメントが同時実行される
はずだから、「ほとんど変わらない」んじゃないかなあ
(未確認)

843 :仕様無しさん ◆NwLv.g/w :01/09/14 18:58
で、それがこうなってるのを見ると会社を辞めようと思うわけだ。

char b1[16], b2[16];
long* p1=(long*)b1;
long* p2=(long*)b2;

// 分岐のストールが少なくてハエーヨ
if ( (*p1++==*p2++) & (*p1++==*p2++) & (*p1++==*p2++) & (*p1==*p2)){
 /* 同じ */
}

844 :仕様無しさん ◆NwLv.g/w :01/09/14 19:10
>843
ちなみに、ここの例にあわせてあるけどこんなコードは実在した。
が、私が辞める前にそいつが辞めた(つーか首にさせた)のでとりあえず
私はまだ辞めてない。
良かったんだか悪かったんだか。

845 :( _ 。。) _ バタ。:01/09/14 19:47
>>843

……ミスってるじゃん。(汗)  > &
#b1 ・ b2 共に 記憶全てがNULLでなければ…って処理だな。 これじゃ。/* 同じ */ じゃないだろ……。

それと…ポイント移動させたら戻しませう。

846 :仕様書無しさん:01/09/14 20:37
一部の職場ではネタではないのが恐い

847 :良いネタは難しい:01/09/14 21:27
きみたちねぇ、速度ばかり気にしていちゃだめだよ。
*p1++==*p2++ってのが何度も出てきているのを見て気持ち悪いと思わない?
こーゆー部分は一カ所にまとめなくちゃダメだよ!

char b1[16], b2[16];
long* p1=(long*)b1;
long* p2=(long*)b2;
#define i (*p1++==*p2++)
#define ta && (*p1++==*p2++)

if ( i ta ta ta ){
 /* 同じ */
}

インクリメントが二個余分だけど、ずいぶんスッキリしただろう?
ほんの少し速いコードばかり追求していちゃぁ、一人前とは言えないぞ。まったく。

#みんなこーゆーネタ好きね(w

848 :sage:01/09/14 21:33
出遅れたが、
先頭から比較した方が速いか、
後方から比較した方が速いか、
きちんと統計を取ってからコード書けよ!

849 :仕様書無しさん:01/09/14 22:16
>>847 イタタタ…

850 :♯6411:01/09/14 22:17
>>845 ツッコミどころが違くないかい?

851 :a:01/09/14 22:24
*p++ 使うか *(p + 1) 使うか p[1] 使うかの違いで
速度が変わるようなコンパイラは機能が低いのでは?
それともわざと最適化レベルを最低にしてソースに
忠実にコンパイルさせた時の話か?

852 :仕様書無しさん:01/09/14 22:27
#include <stdio.h>

int
main(){
 char a[16]="...............";
 char b[16]="...............";

 long long *lla = (long long *)a;
 long long *llb = (long long *)b;

 if(lla[0]==llb[0] && lla[1]==llb[1])
  printf("OKEY\n");
 else
  printf("NOGOOD\n");

 return 0;
}

853 :sage:01/09/14 22:32
128bitコンパイラならきっと、intの比較で一発だね

854 :さげすきー:01/09/15 00:00
>>838
大昔、「群コード」を一部、「郡コード」って書いて、まる一日バグ原因
が判らなかった事が在って以来、変数名の漢字使用は厳禁としてたけど・・・。

今日、「データ」と「デ−タ」で久々にやっちまった・・・学習力ねぇ。

855 :仕様書無しさん:01/09/15 00:07
っていうか、漢字使用の変数とか関数は、暗黙のルールで禁止になってないか?

856 :仕様書無しさん:01/09/15 00:39
同じプロジェクトにいる奴のソース見てみたら
長いswitchの中に、長いswitchとか入れてる。バカじゃん、こいつ。
そいつがプロジェクト仕切ってるからやりずれーよー。俺的にはクビ決定。

857 :仕様書無しさん:01/09/15 00:55
>>11
どこのスレだったか
そういうのを正しいって言ってた
ヴァカが居たな。

コンパイル通るだろ?
OKじゃん。

…ヴァカ過ぎてつっこめなかった。

858 :仕様書無しさん:01/09/15 00:59
>>40
COBOLERが上だと
かなり苦労する。
マシン無くても良いと
思ってたりするからなぁ。

おまえ、頭の中に
メモリ空間とか全部描けて
コンパイル一発で通せるのか?
ゴルァ、と良く怒鳴りたくなる。

859 :( _ 。。) _ バタ。:01/09/15 03:58
>>847
お。 なんか、見た目カッコイイぞ。   外部ツッコミ覚悟で俺的採用。
でも…よぉぉく考えたら「他にも使うかもしれないから、真面目に関数作れ」 と頭が警笛ならしてるんだが……。
ま。いっか。 いいよな。 よし、警笛OFF。

>>850
ボブ…気にするな。 というか、気にしないでくれ。 たのむよママン。
自分でそう思いながらも書いてしまったのさね。

>>851
…やっぱ速度変わるんじゃないか? クロック単位で。
気にする程のモンじゃないたぁ思うけど…それでもこの手の議論は何時までも熱いのさっ♪
(ホント…古今、ずっとクロック単位になりそうな速度の話は尽きないよね…)

860 : :01/09/15 08:46
dataとdateを間違ってて判るまで一日かかったぞ
それ以来dataとdateは使用禁止にしてやった

861 :仕様書無しさん:01/09/15 10:42
つまり、バカの集団だからバカのミスに気付かなかったって訳だね! 

862 :仕様書無しさん:01/09/15 23:44
>>860
そゆレベルで禁止なんて
久しぶりにドキュソ発見。
きみだよ、きみ、
ぜったい一緒に仕事したくないYO!!

863 :仕様書書かないさん:01/09/16 02:33
>まずね、変数名が無駄に長い。1文字にしたほうが早くなる、常識だよ?
1文字だと自動的にレジスタ変数になるわけ?
バカなコンパイラだね。

>>826
一般に0と比較したほうが高速だから、
 for (i=0; i<16; i++) {
よりは
 for (i=15; i>=0; i--) {
だろう?

変数そのものを評価した方が高速です。
0を含む正の数より負の数かを評価した方が高速です。パイプラインで効率がよくなります。
デクリメントよりインクリメントの方が高速です。
i!=0 ならTRUE
i==0 ならFALSE
forのループは評価式がFALSEで抜けるから
for ( i = 15; i; i-- ) {
または、
for ( i = 0; i<16; i++ ) {

iがunsignedの場合、常に0か0以上なので、i>=0の評価は常にTRUEになり、無限ループに陥ります。
よほどの理由がない限り、このようなバグりやすいコーディングはしないでしょう。

TRUEとFALSEは間違ってないよね?
なんかCとWindowsとでは逆だったような・・・

864 :仕様書書かないさん:01/09/16 02:39
>>860
どの変数で問題が起きているか分かったら、
その変数がどこで使われているか列挙する。
それぞれで適切に使用されているか見るだけだから、
問題解決に1時間もかからないでしょ。

目が悪いなら見やすいフォントに変えたら?

865 :仕様書無しさん:01/09/16 02:44
>>863
>変数そのものを評価した方が高速です。
>0を含む正の数より負の数かを評価した方が高速です。パイプラインで効率がよくなります。
>デクリメントよりインクリメントの方が高速です。

うそばっかり書くなよ。

866 :仕様書書かないさん:01/09/16 03:10
ちょっと間違い。
15回のループがある場合、i==0で抜けるとi==0の時実行されないので、
16〜1の間で処理することになり、使いにくい。

>>865
変数にはゼロフラグがあり、ゼロであるかを調べるのは高速です。
また、負であるかどうかも、1ビットを調べるだけなので高速です。
しかし、正の整数であるかはどうやって調べるでしょう?

分岐の問題については、
例えば、i < 15 を評価する場合、i - 15 の結果が負であるかどうかを調べます。
右辺が0の場合には計算をしないとしても、
i >= 0 の評価では、0であるかを調べ、さらに0より大きいかをしらべます。
パイプラインでは同時にいくつもの命令を並行して演算しますが、分岐がある場合は確率的に高い結果が出るものとして演算を続けます。
もし分岐して予測が外れた場合、演算は無駄になり、分岐処理がパイプラインから抜けてから次の演算を続けることになります。
最新のCPUではどうか知りませんが、数年前までのCPUでは予測がヒットする確率が高いのは1つの分岐のときです。
パイプラインはCPUの高速化のための技術ですが、予測が外れやすいコーディングではその恩恵を受けられません。
演算結果が0であれば抜け、正であれば抜けるような処理をするよりは、
演算結果が負であれば抜け、それ以外は続行した方が効率がいいのは明らかです。

867 :仕様書無しさん:01/09/16 03:24
>>866
>変数にはゼロフラグがあり、ゼロであるかを調べるのは高速です。
>また、負であるかどうかも、1ビットを調べるだけなので高速です。
>しかし、正の整数であるかはどうやって調べるでしょう?

これって、どのCPUの話?
君の知ってるCPUって、条件レジスタ(フラグレジスタ)にゼロフラグしか
なかったの?

というか「変数にはゼロフラグがあり」ってなんのこと?
変数ごとに条件レジスタもってるアーキテクチャなんて初耳なんだけど。

868 :仕様書無しさん:01/09/16 03:30
>>866
どう見ても、アセンブラ知らない厨房が背伸びして書いてるようにしか
見えん。

869 :仕様書書かないさん:01/09/16 03:33
そうか、変数にはゼロフラグはなかったか。
コーディングには影響しないから大した問題じゃない。

870 :仕様書無しさん:01/09/16 03:44
>>866
>例えば、i < 15 を評価する場合、i - 15 の結果が負であるかどうかを調べます。
>右辺が0の場合には計算をしないとしても、
>i >= 0 の評価では、0であるかを調べ、さらに0より大きいかをしらべます。

この前提が大間違いだから、これ以降のパイプラインがどうこうって
話はまったく意味なし。

つーか、なんでここでパイプラインを持ち出す必要があるんだよ。
小難しい話をして、相手を言い負かそうってつもりなのか?
大笑い。リアル厨房か?

871 :仕様書書かないさん:01/09/16 03:47
>>870
じゃあどうやって i < 15 を判断して分岐するのか説明しろ。

872 :仕様書書かないさん:01/09/16 03:53
確かアセンブラでは、
無条件ジャンプと条件ジャンプがあって、
0のときと負のときの条件ジャンプがあったと思うが、
(正のときがあったか覚えてないけどあるんだろう)
for ( i = 0; i < 15; i ++ ) {
を処理するときに i と 15 を比較して上記ジャンプを利用するしかないと思ったが、
計算方法が違ったか?

873 :仕様書無しさん:01/09/16 04:01
>>872
だから、どのCPUか言ってみろよ。
あれだけ断言口調で言ってるんだから、そうとう知ってるんだろ?(o^-')b

874 :仕様書無しさん:01/09/16 04:02
キャリーフラグも知らない知ったかぶり厨に説明するだけ無駄。
まあいちおう書いといてやるか。Intel系なら
cmp eax, 15
jc XXX
それ以前に>>826はネタであることを理解してる?

875 :  :01/09/16 04:05
忘れたけどこんな感じだったっけ?

  mov  ax,0
  mov  si,i_work
  mov  ds:[si],ax
loop:

  mov  si,i_work
  mov  ax,ds:[si]
  cmp  15
  jmp  c,loop

って感じで15なんか引かないと思われ。
(スペースが削除されませんように)

876 :仕様書無しさん:01/09/16 04:07
>>863 を見た段階で、知ったか厨房だってことはバレバレじゃん。
「まだばれてない、ハッタリで言い負かせる」って思ってるのは本人だけよ。

877 :仕様書無しさん:01/09/16 04:20
>>876
いや、彼らの目的は違うところにあるかも?
ひょっとしてヤツらは、イスラム原理主義者で
ソフトに意図的にバグを入れることにより、
経済を停滞させる、新たなテロかも・・・・
もっとも、テスト段階で発覚しそうなことばかりだが。(藁

878 :仕様書書かないさん:01/09/16 04:21
>>875
だから、15と比較(つまり差を取る)して結果をレジスタに入れるんでしょ?
負であるかを調べるときは1ビットシフトするだけだから、2つのデータが必要な差を取るより1つのデータで済む論理演算のほうが高速でしょ?
命令数が少なくてもそれを処理するのにかかるサイクルが多ければ意味ない。

>それ以前に>>826はネタであることを理解してる?
それが分からなかった。

879 :仕様書書かないさん:01/09/16 04:24
あ、差を取る必要なんてなかった。
内部のロジックでビット演算すればいいのか。
どうせキャストして同じサイズになるし。
・・・。

880 :sage:01/09/16 04:27
なんかずいぶん突っ込みどころがかわってきたな、おい。

881 :仕様書無しさん:01/09/16 04:31
>>878-879
必死に論点をずらそうとしてるが、それがまたマトはずれ。
痛すぎる。

882 :仕様書無しさん:01/09/16 04:39
1) i < 15
2) i >= 0

1)のコードは条件分岐が一回で済んで、2)のコードが条件分岐が
2回になるって言ってるやつは、どんなCPU使ってんの?
すごくマイナーな8ビットCPUでも使ってんの?

883 :仕様書無しさん:01/09/16 04:59
COMETUではないかと思われ。

884 :仕様書書かないさん:01/09/16 05:05
>>883
大当たり!

885 :仕様書書かないさん:01/09/16 05:12
いやあ、ちょっと変だとは思ったんだけど。
遅くないなら別にいいや。

886 :仕様書書かないさん:01/09/16 05:19
アセンブラで組んだりはしないんだけど、コーディングで最適な分岐になるように考慮してるつもり。
こういうの↓を参考にして
http://www.csl.sony.co.jp/person/fnami/pentopt.htm#JUMPS

887 :仕様書無しさん:01/09/16 05:34
漢字を読めない男が、他人の手紙を覗き見て
文中のひらがなだけを無理やりつなげて読んで
とんちんかんな解釈をしたあげく
ついには殺人を犯してしまうという小説があったのを思い出した。

888 :仕様書無しさん:01/09/16 05:34
下手な考え休むに似たり
ふつーの人間よりゃコンパイラの方がCPUについてよく知ってるよ

889 :仕様書無しさん:01/09/16 05:38
>>886
アセンブラで組むわけでもないのに、そういうレベルのことを
考えてコーディングしてんの?
┐(´ー`)┌

890 :仕様書無しさん:01/09/16 05:46
この一連の話題のように、知ったかぶりとハッタリが完全に見透かされてるのに
必死に反論してるヤツってこの板でたまに見かけるけど、うすら寒いものを感じるな。
虚言癖ってこういうのを言うのか?

>>887も指摘してるけど、反論の内容は、検索かけてそれらしいものを
ツギハギしてるようにしか見えないし。
そんな事で、本気でごまかせると思ってるかな?

891 :仕様書書かないさん:01/09/16 06:12
はいはい、実際のアセンブラなんて知りませんよ。
高速化のためにところどころかじってるだけでね。

892 :お胸おっぱい:01/09/16 06:48
もう >>863 の時点で“ネタにマジレス、しかもデタラメ”なんだけど。
…はっ!そういうネタ?

893 :良いネタは難しい:01/09/16 08:25
一連の話題が示している可能性
・ネタを理解するには、相応の知識と経験が必要。
・「ネタにマジレス」と「ネタにマジレスするふりをしたネタ」の区別は難しい。
 もう少し正確に表現すると「ネタに(マジレスするふりをしたネタに)* マジレス」と
 「(ネタにマジレスするふりをした)* ネタ」の区別は難しい。

さて、どちらの解釈がより適切でしょうか。

894 :仕様書無しさん:01/09/16 11:04
さて、上記のような文章だけではわかりずらいと思いますので、次に示す下の図をごらん下さい。

895 :仕様書無しさん:01/09/16 11:06

     ∧,,∧    / ̄ ̄ ̄ ̄ ̄
    ミ   ,,ミ < ♪パッパッパッパ・・
    ミ   つ   \_____
    @  ミ
     'ヽし' キュッ


キュピィィィン   +   / ̄ ̄ ̄ ̄ ̄
     ∧,,∧   < 踊ろ♪騒ご♪
    ミ,・∀・,ミ .  \_____
  (( ⊂    つ ))
 +   ミ   ミ
     ''とノ'' クリッ

           / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧,,∧  < ッパッパッパッパ
    ミ,・∀・,ミ   | パパパでゴリュア♪
    (    つ ), \__________
    ミ   ミ
    "U'''(ノ゙   イッテヨチ!

896 :仕様書無しさん:01/09/16 11:59
プッチモナーか。懐かしいな。

897 :仕様書無しさん:01/09/16 17:05
つまり、高速化したコードの話題がネタだったことに気付かなかった奴が
何人もいるってことか?
情けない…

898 :仕様書無しさん:01/09/16 18:51
>>897 完全版
つまり、高速化したコードの話題がネタだったことに気付かなかった奴が
何人もいるってことか?
俺と同レベルの奴がそんなにいるとは、情けない…

899 :仕様書無しさん:01/09/17 11:07
>>893
ポインタのポインタのポインタのようだ。

900 :仕様書無しさん:01/09/17 12:27
>>838
変数の漢字名なんぞあたりまえのように使ってるあほ業界も
あるぞ。
そんな業界には逝ってほしいのだか。。(w

901 :仕様書無しさん:01/09/17 12:38
>>866
ずいぶん新手のCPUだな
オリジナルならマイクロコード見せてくれ(w

902 :名無しおやぢ:01/09/17 12:39
>>838

以前、AccessのVBAコードでコントロール名に「ナンバー」を
使用したら、実行時に暴走してアプリケーションエラーとなった
ことがあります。(W

903 :あ」:01/09/17 16:05
>866

pentium4 は整数演算が遅い
整数演算が遅い
特に shl, shr が遅くなった
従来の最適化は通用しない

904 :あ」:01/09/17 16:06
詳しくは www.intel.com に software optimization for pentium4 ... っていう
pdf があったな

905 :あ」:01/09/17 16:09
というか、866はあほ

906 :仕様書無しさん:01/09/17 19:42
そこまで考えるならアセンブリ言語で書けばいい、と思うが。
もっとやるなら CPU ごとにルーチン変えて用意しろ、と思うが。
その前に 16 くらいのループが普通ホットスポットなんかになるか、と思うが。
そんなどうでもいい処理まで高速化してソースの管理を難しくするな、と思うが。
そんなソース読む方の身になってみろ、と思うが。

907 :仕様無しさん:01/09/17 21:54
823以降866より前はどうでもいいことを知っててやってるネタだろ。
866以降は知らんが。

908 :仕様書無しさん:01/09/18 09:11
>>906
s/が。/。/g

909 :仕様書無しさん:01/09/18 09:37
>>906
s/が。/YO!/g

910 :仕様書書かないさん:01/09/19 00:31
ここの人アセンブラ使ってるの?
アセンブラ使うのってどんなソフトのどの部分?
地図を高速でスクロールするときでも必要ないんだけど。
MMXとかSSEでガンガン高速化してるの?

911 :仕様書書かないさん:01/09/19 00:35
デバドラとかエンコーダをアセンブラで小さく速くするのは大歓迎だよ。
でも実際アセンブラ使ってるのかな?

912 :仕様書無しさん:01/09/19 00:42
>>910
ジュースの自動販売機。
パチンコ。
スロットマシン。
エレベーター。

913 :♯6411:01/09/19 00:59
ポータビリティを無視してでも高速化したくなる
場面ってのは、確実にあるのだよ。
たとえそれが、x86 PCで動くものでも。

反論松

914 :仕様書無しさん:01/09/19 03:22
>>910
この世にアプリケーションプログラマしか存在しないとか、この世にx86の
CPUしか存在しないとかいうような発想は捨ててくれ。

デバドラなんかでタイミングを正確に取るためにアセンブラで書くとかいう
のはわりと当たり前。
あと、OSのブートコードなんかは当然のようにアセンブラで書くわな。

昔はx86のアセンブラも使ったが、最近はやってないなぁ。
MIPSやARMのアセンブラならつい最近も書いたが。

スレと関係ないのでsage

915 : :01/09/19 09:48
>>タイミングを正確に取るためにアセンブラ
速いCPUにしたらプリンタが文字化けしだしたのは
お前のしわざたな

916 :仕様書無しさん:01/09/19 11:32
>>910
μsオーダーでの同期を要求されるリアルタイム処理なんかざらにありますが何か?

917 :仕様書無しさん:01/09/19 16:39
>>915
組み込みやっちゅーねん。
基盤に半田ゴテあててCPUを引っぺがして交換したっていうならしかたな
いけどさ。そんなもん保証外に決まっとるわい。

それ以外なら、文脈を読め。

918 :仕様書無しさん:01/09/19 19:29
思いきり低レベルな話で申し訳ないが。
今日見た Access の VBA のコード、ループカウンタを Public で宣言してあった。
...まさか VBA ってそういうものなの ?

919 :仕様書無しさん:01/09/19 19:42
WoW
iをExternしてあるソースみたことあるぞよ

920 :仕様書無しさん:01/09/19 19:53
>>918
んなわきゃない

921 :仕様書無しさん:01/09/19 20:20
int ntt;
int jt;
char jr[20];


なにこれ?と質問したら、「なんとなく」
こんな変数ばっかしで動いているのか、この管理システムは・・・と思うと
辞めたくなった。

922 :仕様書無しさん:01/09/19 23:39
株でもやってるのかと思ったけどそんな株買える奴がPGやってるとも思えず

923 :918:01/09/20 12:39
>>920-921
ちょっとほっとした。
Access ははじめてどころか Microsoft の環境自体が N88BASIC(86) 以来で、
ついこないだ Jet の排他は信用するなという話にひっくり返ったばかりなんで
スコープも気をつけなきゃいけない理由があるのかと、半分くらい本気で考えてた :-)

924 :918:01/09/20 12:41
919-920、か。失礼。

925 :仕様書無しさん:01/09/20 12:44
具体的なイメージがすぐに湧くソースのほうが、バグが少ない。
意味のない aaa、bbb とかよりははるかに良い。
そいつは実はすごいんじゃん。
ほれも真似しようかな。 >921

926 :仕様書無しさん:01/09/20 22:05
>>925
変数名はnttだけどNTTとは何の関係もないとかいう
オチじゃないのか?

927 :名無しおやぢ:01/09/20 22:37
>>918
ちょっと前に別の板でも書いたんですが、SQL文字列変数が、
PublicなPGを見たことがあります。(メンテしたくねぇ!)
あちこちがめちゃくちゃで、とてもプロが書いたコードとは
思えませんでした。
(宇津田士農・・・)

928 :仕様書無しさん:01/09/21 00:12
6次元配列っていったい何?(鬱

929 :921:01/09/21 00:46
賢いのは>>927だけのようだ。

konami = getDATACOUNT();
for ntt = 0 to konami
...
next ntt

てな感じだったんだよ

930 :仕様書無しさん:01/09/21 00:49
>>928
4次元配列使ってる奴をドラえもんPGとか言って笑ったけど、
更に上がいるのね・・・

931 :仕様書無しさん:01/09/21 01:52
力学系で、6階のテンソルとかはでてくるけどね(w
たぶん関係ないからsage

932 :仕様書無しさん:01/09/21 21:42
■新スレ

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

933 :仕様書無しさん:01/09/22 15:48
http://inter-city.ktplan.ne.jp/

j

934 :   :01/09/22 16:15
if
  if
    if
      if
        if
・・・・・・・・・・・・・
・・・・・・・・・・・・

「直しといてね♪」
「・・・・・・・」

935 :仕様書名無しさん:01/09/22 18:34
select A,B,C from T where D not is null

936 :仕様書無しさん:01/09/22 21:14
■新スレ

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

937 : :01/09/23 23:33
かちゅ〜しゃ用
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=1001076034

938 :仕様書無しさん:01/09/30 00:26
>>745
具体的明確な説明ができないという事は
あなた
本当に説明したい内容を理解していないんですよ。
あなた
本当に頭の回転がわるいですね。
あなた
自覚しろよ

939 :仕様書無しさん:01/09/30 15:06
なんかの歌詞みたい。

940 :仕様書無しさん:01/10/01 01:09
          ___                    |  \ \
    /    / ))))                    |
   /    /_ ⊂ノ               | ヽヽ |\
  /   / /            i 、、 | ヽヽ |\   |  \
 / / \ \  ∧ ∧   ド ド |ヽ   |\  |    |
/ /    \ \( ゚Д゚)      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ /     ヽ      ⌒\ < 今だ!940番ゲットォォォォ!!
/       ノ      /> > \_________
        /  ×  / 6三ノ
       /  / \ \ ` ̄
―    /  ん、  \ \
――  (__ (   >  )
⌒ヽ   ’ ・`し' / /
  人, ’ ’, ( ̄ /
Y⌒ヽ)⌒ヽ、 )  |
         \_つ

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)