にげと てか500以降可って何だよw
グローバル変数の議論も定期的にやらないと理解出来ない・しようとしない奴が増えることが前スレでわかったからいいと思う。
全部のソースから読まれる大きいヘッダにグローバル宣言 変数名には g_xxx G_XXX など一目で分かる prefix をつける
>4 まだ500いってないから。 >1を百辺声に出して嫁。
hoshu
7 :
仕様書無しさん :2006/07/12(水) 00:52:43
>>1 が誘導もしないでいきなりマ板に移動するから閑古鳥が鳴いてんじゃん。
>>1 は責任とってム板にもう一度立てなおせ。
んで、900近くまでいったらこっちに誘導してこい。
8 :
1 :2006/07/12(水) 01:12:50
剥いたにはすれた手できなかった。 誰か後を頼む
9 :
仕様書無しさん :2006/07/16(日) 21:45:19
With Hoge ’Hoge以外の処理 End With 氏ねって感じ。
10 :
仕様書無しさん :2006/07/16(日) 22:06:19
さぁ今日も祭りだ祭りだ!
- - - - - - - - - - - - - -緊 急 招 集- - - - - - - - - - - - - - - - - - - -
架空請求業者撲滅スレより緊急招集
このスレに住む貴君には、栄えある勇者王になる権利がある。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
現在、下記スレにて架空請求業者撲滅の壮大な作戦が進行中
よって、勇敢なる貴君に作戦に参加して頂きたい。これは義務ではない。
だがしかし、貴君のキーボードとパソコン一つで世界を変えることができる。
我 々 は 貴 君 の よ う な 勇 者 を 待 ち 望 ん で い る
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
架空請求撲滅スレ
http://ex16.2ch.net/test/read.cgi/news4vip/1152976747/ まとめサイト(仮
http://vip2ch.com/click/index.html 〜我々は勇者を待ち望んでいる〜
ヘッダに変数の実体を宣言するのってイヤだなぁ。 ifdef で extern 宣言でもするの?
一つの関数が9千行超えてる 文章にするとネタくさいが、実際に見た
>>13 そこまで行ったらもう「作品」だな。
ていうか、1000行超えたらもう俺は作品として認定する。
1つの関数では6千行弱までしかみたことないな。 まさか、9千行があるとはな。 1ソースなら2万5千行まであるがな。 表示とコンパイルができるVCはすごいと思った。 でも、VC6だとインテリジェンスがどうにかなって落ちたな。確かw
17 :
仕様書無しさん :2006/07/19(水) 00:33:01
それを言うならインテリセンスですぅ
>>11 だな。
ヘッダには定義のみ納めて欲しいな。
obj.fieldA.fieldB.method(obj.fieldA.fieldB.fieldC[A]); obj.fieldA.fieldB.method(obj.fieldA.fieldB.fieldC[B]); obj.fieldA.fieldB.method(obj.fieldA.fieldB.fieldC[C]); obj.fieldA.fieldB.method(obj.fieldA.fieldB.fieldC[D]); obj.fieldA.fieldB.method(obj.fieldA.fieldB.fieldC[E]); obj.fieldA.fieldB.method(obj.fieldA.fieldB.fieldC[F]); // 以下同文 先輩、そこはfieldBへの参照を変数に入れて使えば良いんです… (まあそれ以前にループか何かに書き直せそうな悪寒満載だが)
君のコードねえ、上に飛んだり下に飛んだりして読みにくいんだよ。 「関数」とか言うやつ、使わないでくれる?
コボラーだ!コボラーがきたぞ!
goto 使って飛ばしまくってやる。
23 :
仕様書無しさん :2006/07/19(水) 12:42:15
下手というか馬鹿なコードで 15: Private Sub func( aa as Integer ) 20: Dim i As Integer 21: 22: For i = 0 to 20 23: if data[i] = aa Then 24: goto 30 25: else 26: goto 40 27: End if 28: next i 29: 30: msgbox "OK" 35: goto 50 40: msgbox "NG" 45: goto 50 50: 51: End Sub 先日ある現場で見た「俺はVBのプロフェッショナル」と言う48歳のおじさんの 書いたコード
下手とか馬鹿とか言うより、懐かしさを感じるコードだなあ。 昔々のBASICのコードを思い出す。 今のVBってこんな書き方しなくてもいいんでしょ? VB知らないからわからないけっども。
>>23 N88BASIC!!
VBだけど
カンマ区切りのCSVデータを配列に分解するとき
Split関数を使わないプログラム
27 :
23 :2006/07/19(水) 14:49:25
>>25 これがBASICのソースを元に、VBに直したとかいうのならともかく
完全新規のソースだったので、クラクラというか「あれ今もしかして1989年?」とか
思ったぐらいだ。
ある会社のシステム部に一人で出向したのだが、そのプロフェッショナルおじさんは
今資料整理役になってます。
俺はBASIC風VBのソースをまともなソースに全部修正中・・・・
>23
これって、data[0]とaaの値の比較しか行われない(data[0]とaaが一致
しない場合26行でForループを抜けるので)と思うんだけど、それで動作
として、仕様通りなの?
配列要素の全てとaaを比較するのなら、25行、26行がなくて、29行目が
goto 40だと思うが?
>>23 が書き直した「まともなソース」を見てみたい気がする。
29 :
23 :2006/07/19(水) 17:31:49
>>28 勿論仕様どおりではありませんでしたよ
だからそのプロフェッショナルさんは、現在資料整理係
char hoge[20]; /* 初期化 */ memset(hoge, NULL, sizeof(hoge));
NULLはゼロじゃねーとかそういう奴だな、うん。 実際にゼロかどうかは問題じゃなくって、概念上の使い分けができてないのが問題と。 でもってマにはこの辺粘着質的なまでにこだわる奴が多いと。
char hoge[20]; /* 初期化 */ memset(hoge, '\0', sizeof(hoge)); なら普通だと思うけどね
俺は char hoge[20]; /* 初期化 */ memset(hoge, 0x00, sizeof(hoge)); 派だな。
NHKスペシャル映像の世紀 「民族の悲劇果てなく」
おれは memset(hoge, 0, sizeof(hoge)); だなあ。 気分的にこのときに '\0' は使いたくない。 使っても同じだが、memset() だからな。 chrset() とかの関数があるなら '\0' を使うな。 同じだけど気分の問題。
ゼロ初期化したいならこう書け。 char hoge[20] = ""; int hoge[20] = {0}; struct Hoge hoge = {0}; malloc/new の時は仕方ないので許す。
newのときは必要ないんじゃね? mallocはcalloc使うように
>char hoge[20] = ""; >int hoge[20] = {0}; それって最初の一個しかゼロは行ってなくね?
>>39 char choge1[10]="", choge2[10];
int ihoge1[10]={0}, ihoge2[10];
int i;
for(i=0; i<10; i++) {
printf("char: %03d/%03d, int: %05d/%05d\n", choge1[i],choge2[i], ihoge1[i],ihoge2[i]);
}
LSI C-86
char: 000/000, int: 00000/00330
char: 000/000, int: 00000/04057
char: 000/239, int: 00000/04057
char: 000/015, int: 00000/00000
char: 000/240, int: 00000/00000
char: 000/026, int: 00000/00000
char: 000/004, int: 00000/00000
char: 000/017, int: 00000/14592
char: 000/203, int: 00000/13056
char: 000/008, int: 00000/13620
むかしむかし、Windows3.1とか出始めの頃、UNIXのプログラム開発で float InputBuffer[1000000]; こ、この配列は? いやあ。それでも、論理的な最大値の半分くらいなんだよね こんなでっかい配列取って大丈夫なんですか? 実機はメモリ16M積んでるんで大丈夫です そ、そっすか ちなみに、人がデータを手入力するためのワークエリアである
>>40 それってCの仕様だっけ。
不勉強で見た事がないんだ。
配列の初期化では、初期化の足りない要素は 0 で初期化されます。これは仕様です。
>>43 構造体は?
struct { int a, b; } x = {0};
で b が初期化される保証はあるの?
K&R日本語第2版だと付録A8.7(p273)辺りに詳しく書かれてます。
ほんとだ。載ってた。知らなかったーよ。ありがとう。
48 :
仕様書無しさん :2006/08/12(土) 00:01:30
ここ次スレでよくね?
49 :
仕様書無しさん :2006/08/12(土) 00:18:15
>>11 ,18
亀レスすまそ
実体ではなく定義だけ
ってどういうこと?
メンバ変数は先行宣言してポインタor参照にしろ
ってこと?
50 :
仕様書無しさん :2006/08/12(土) 00:19:17
あほなコメント文 a = b + c; // bとcを足してaに代入 わかっとるんじゃい
ソースの中盤に突如現れる#define constを知らんのか。
コメント皆無 インデント滅茶苦茶 コピペ満載 TextBox1.Text TextBox2.Text TextBox3.Text TextBox4.Text ....
C++使ってると、普通にマクロが出ただけでゲって気分になりますな。 テンプレートにインライン関数、どこでも書ける定数のおかげで、 Cの悪しき慣習はほとんど根絶できてるはずだ。 なのにうちとこの会社のコードってば、なんだってこんなにマクロまみれなんだろう… namespaceもショットガン乱れ撃ち状態だし… もうぬるぽ。
実効処理とは全然関係無いコード が無闇矢鱈と書き殴られているブツを解析させられたトキ ...まぢイヤガラセかと思ったYO!
>あほなコメント文 // コンストラクタ とかも見りゃわかるわいとは思うんだが、書かないのも不義理な気がする。 どうしよう?
可読性があがるんならいいんじゃねえか?
/* * どう見てもコンストラクタです。 * 本当にありがとうございました。 */
>>51 続編
やはり、というか、案の定、引数付マクロとinlineが混在していた。
>59 boost見たら卒倒できるかもね。 #馬鹿と天才は紙一重
>>51 defineの有益な使い方を知らない初心者だね(^-^ll
むしろマクロは有益過ぎで困ります
メインをメインから呼び出している奴見た時眩暈がした。 void main(){ 何か処理; main(); 何か処理; main(); return ; } もうね、何がしたいのかと小一時間
再帰
そんなもんは再帰とは言わんw
メモリリークとかバッファオーバーフローとか。 【適当にそれっぽい単語を羅列してみただけ】
>>63 そのコード、そもそもスタックオーバーフローで
落ちると思うんだが、書いた奴は動かしてすらいなかったのか?
何かの処理ん所にstatic変数をごちゃごちゃするところがあって、適当に抜けて帰ってくるんじゃね? あほらしすぎて脱糞しそうだけど。
Cの組み込み系で #define ADDR100 0x100 #define ADDR101 0x101 #define ADDR102 0x102 #define ADDR103 0x103 #define ADDR104 0x104 ・ ・ ・
結構見るな…つか携帯ゲーム機のライブラリなんか今でもそんなだぞ。 型のサイズがゆらぐ可能性のあるenumとかを使いたくないんだろうけど、もうちっと考えろよと。
73 :
仕様書無しさん :2006/08/23(水) 14:31:38
>>71 #define num_0000 (0)
#define num_0001 (1)
.
.
.
#define num_9999 (9999)
という定義があり、「数値は直接使わずコレ使ってネ」といわれ、しぶしぶ使っていた。
ある時、どうしても腑に落ちないバグが発生。有り得ないけど数値が突然狂って
動作がおかしくなったり、カウンタが一定値から増えなくなったりする。
原因
#define num_1111 (1111)
#define num_1112 (1111)
#define num_1113 (1111)
だから、訳のわからん定義使うなと・・・ orz
調べたらあちこちに誤りがあった。聞いたところ、全て手打ちだったらしい。Excelぐらい使えよと・・・・
>>73 すべて手打ちすんげー。
そんなもん、20行超えて打ち込むのなら、書き捨てでもプログラム書いて吐かせるだろうに。
それ以前に、この「ルール」の目的が謎…… まさか、定数がどこで使われてるかgrepするためか?
76 :
73 :2006/08/23(水) 16:05:42
>>74 それまでは数値で500以上使うことがなかったらしく、
「同じヘッダファイルを3年以上使っていて、一度も不具合が起きなかったため
間違いがあるとは思わなかった」
・・・のように言われたよ。501以降、打ち込んだ人が疲れてたのかコピペミスか、
数値が入れ替わっている場所もあった。
もう全部作りなおしちゃるーと言ったのだが、「作り直しにより過去に動いていたものが
動かなくなったら困るので、全行調べて間違っているところを見つけて報告してくれ」と言われた。。
タブ編集後Excelにぶちこんで、数値でソートして、マクロで左辺値右辺値の異常を抽出して報告。
501以降は400以上の誤りがあったので、いちいち直しておれんーと、こっそり全て作り直した。5分程で。
>>75 他にも色々謎ルールがある現場だったよ。
そこの社員さんは「これが常識」と言い張る、他では笑い話にしかならないルールとかね。
77 :
仕様書無しさん :2006/08/23(水) 17:55:11
>76 まさに、井の中の蛙エンジニアだな。他所の事情を知らない大手企業の エンジニアに案外ありがち。
コーディングが下手以前に、規約が変なんだな。
VBだが SendKeys (゚д゚)
>>79 ?
使い方次第なので、それだけでは何とも。
>>80 (゚д゚)
^^^^^^この部分がへただと思ったんあろ^^;)
>76 >そこの社員さんは「これが常識」と言い張る、他では笑い話にしかならないルールとかね。 kwsk
>>71 マクロネタか
#define BUFSZ256 256
#define BUFSZ256 512
#define BUFSZ1024 1024
#define BUFSZ2048 2048
まあ、こんなコードなんて日常茶飯事
#define OK 0
#deinfe NG 1
#deinfe ERROR -1
#define SUCCESS 0
・・・これはどう使いわけろと?
それなりに。
なんとなく。。
何が悪いと言われているんかわからない。
もう最近は上手い下手以前にマクロ見るだけで食欲が落ちるな。
return (SUCCESS + OK) * NG / ERROR * 3.14;
>>83 OKとNG逆ならまだ許してやってもいいが
>>83 前半は・・・ネタ作成時に2行目ミスったのか、2行目がネタなのかどっち?
後半は、よくある話。気分とかコメントに合わせるとかいろいろ。
同じ値の場合、文句言う香具師は結構いるが、defineは
数値だけではわかりにくいものを文字にしてわかりやすくしたり、
同一値定義のミスを減らす目的にも使われるから、その定義は間違いではない。
91 :
76 :2006/08/25(金) 10:30:31
>>82 kwsk書くと、身元や行っていた逝ってる会社がバレるので許せ頼むお願い
>>87 マグロなら食欲がわくけどな
ごめん、言ってみたかった。
93 :
76 :2006/08/25(金) 10:36:20
ひとつだけバラすと、 「VSSで1分以上チェックアウトする奴は仕事ができない奴」 と言われたことがある。その現場の常識。 VSSのチェックアウトは、ファイルをチェックインするための作業であり チェックアウト状態を維持するのは他の人に迷惑がかかるので、 変更⇒確認⇒チェックイン準備完了⇒チェックアウト⇒チェックイン をスムーズにやるのが礼儀だ、といわれたよ。 じゃあ、チェックインしようと思ったときに(複数で共有している)ファイルが 更新されていた場合はどうするんですか?そのためのチェックアウトですよね? と聞いたら、 運が悪いと諦めて、最新を取得し、マージしてから コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト⇒チェックイン こうやるのが常識だ、と言われた。 13年以上仕事し20社以上回ったが、あの会社のみの常識だった。 他の会社ではどうなるかって? 単なるネタというか休憩時間向けの笑い話だよ。
94 :
仕様書無しさん :2006/08/25(金) 10:38:17
+ +
∧_∧ +
ガッ! ('(´∀` )
人ヽ つ
Λ__ < .と⌒_ノ
(`Д´ V  ̄し'
>>92
>>93 そういう連中には理屈が通じないんだねえ…
言語Java ループごとに条件の一部がパラメータで変わるSQL文を StringBufferで組み立てている。 ORM使えとは言わないから、PreparedStatementくらい 使ってほしい。 動かしてみたら果てしなく遅かった。
97 :
仕様書無しさん :2006/08/25(金) 13:01:03
へたくそっていうかなんというか、 javaでTextUtilっていう文字列ユーティリーティを作って もちろん全メソッドstaticにしたんだけど わざわざTextUtil tu = new TextUtil();とインスタンス作っている PG暦15年の人。
PGネタじゃないが、数人で同じMDBにアクセスする仕事のとき 「そのままアクセスするとロックが何とかっていうエラーが出るから」 と言って、サーバから手元にコピーして作業し、作業が完了したら サーバにコピーし直すということをやっていた人たちがいた。 どうなったかのか知らない。
99 :
76 :2006/08/25(金) 13:29:36
>>98 そんな現場も見たことがあるような希ガス
>>93 とは別で
で、見事にバージョンダウンとか起きまくり。どうなったか?
対策:
このパソコン以外でMDBは編集するな。
使いたい奴は、このパソコンから最新をフロッピーにコピーして持って行け
結果:
そのPCの前に長蛇の列
コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒ファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたまたファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたまたまたファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたまたまたまたファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたまたまたまたまたファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたまたまたまたまたまたファイルが更新されていた ⇒運が悪いと諦めて、最新を取得し、マージ ⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト ⇒またまたまたまたまたまたまたまたファイルが更新されていた ヽ(`Д´)ノ
101 :
76 :2006/08/25(金) 16:12:06
>>100 それまだマシ
コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト
⇒ファイルが更新されていた
⇒運が悪いと諦めて、最新を取得し、マージ
⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト
⇒またファイルが更新されていた
⇒運が悪いと諦めて、最新を取得し、マージ
⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト
⇒またまたファイルが更新されていた
⇒運が悪いと諦めて、最新を取得し、マージ
⇒コンパイル⇒動作確認⇒チェックイン準備完了⇒チェックアウト
⇒完了、やったー!!
⇒「全員チェックイン終わりました」⇒よしテスト開始だ!
⇒さ〜て帰ろうかな〜〜 「76さんのバグひとつも直ってませんとの報告が」「な、なんだっt(AA略)」
⇒最新を取得⇒反映内容全部消えている・・・誰かがマージミスったらしい・・
⇒残業
・゚・(ノД`)・゚・。
1つのファイルを寄ってたかって編集するのがそもそも間違いな気が・・・ 一体何の為のバージョン管理ソフト?
> 一体何の為のバージョン管理ソフト? デグレさせた張本人を洗い出す為
104 :
仕様書無しさん :2006/08/25(金) 19:15:34
ソース管理の話で盛り上がってるところをぶった切って悪いが 俺が今まで見た中での最凶はこれだな とある上場企業に派遣されてるときに見たコードだが void hoge() { struct S s1; int dmy1[100]; // 消すな struct S s2; int dmy2[100]; // 消すな 何らかの処理 subhoge(&s1); subhoge(&s2); 何らかの処理 } void subhoge(struct S *s) { バッファオーバーフローな処理 } --------------------- warning C4101: 'dmy1' : ローカル変数は 1 度も使われません。 warning C4101: 'dmy2' : ローカル変数は 1 度も使われません。 --------------------- いろいろつっこみどころ満載なプロジェクトだったが、これはびびったw。 ローカル変数のメモリ配置?最適化?なにそれ。
(特殊な環境下で)余分な変数を確保するというのは見るけどねえ・・・ ハードウェアのバグ対策らしいけど。
>>104 むうう??
命に関わるような製品じゃなければいいんだけど。
>>93 Eclipse使って会社全体でユーザ名一つのまま使ってるようなとこもある。
競合してマージ作業が必要になるのは当たり前のことだと思ってた。
If (セックスフレンド == サイバーテロリスト){ セキュリティホール = チンコ }
うちのルールはこんなだ。 (1)チェックアウトせずソース取得 → (2)製造 → (3)単体テスト → → (4)チェックアウト → (5)マージ → (6)正常系のみ動作確認 → (7)チェックイン (6)で取りこぼしたマージミスは、最悪結合テストで拾う方針。
せっかく管理ツール使ってるのにもったいないなあ。
つーかその使い方だったら使ってる意味ないよな
>>96 >ループごとに条件の一部がパラメータで変わるSQL文を
>StringBufferで組み立てている。
へぇ、どうやってやるの?
自分はオーソドックスにパラメータはPreparedStatementでやってるのしか
見たことない。
そして蛇蝎のごとく嫌われる共有チェックアウト。 なんでやねん。
別にDBアクセスなんて遅くたって使う側はこまりゃしねぇのに、 何故かDBが混雑してると画面操作のレスポンスまで遅くなるソフト 作ってる田中は普通に死んでねw 送信ボタン押したら、データが全部送れるまでスレッド作ってゆっくりやってくれりゃいいって お客さん言ったのになんでエラーログだけ吐いて終わっちゃうように作っちゃうの? お前、脳みそついてるのかよ?田○。お前だよ。誰がリアルタイムで反映させろつったんだよ。 無理に決まってんだろ、あのショボイ環境でそんなに早くできるわけねぇし、誰もそんなもの作れって言ってねぇよ。 ○中。お前、そうやって人のいうこときかねぇから無駄な作業ばっかりしてんだぞ。 今日も田中、明日も田中、田中、田中、田中、もう今月は田中ばっかだなw
田中乙
117 :
109 :2006/08/27(日) 01:25:15
>110,111 使ってるのはVSSだからまぁ良いかと思ってたりする。
共有チェックアウトしようよ… よほどのことが無い限り、マージでしくじる奴なんかいねーよ…
>>104 それくらいありがちだと思うオレはやばい?
y=ー( ゚д゚)・∵. ターン
119番ってあたりで消防車呼んで火消さないとイカンくらいにはやばいだろう。
>>93 > VSSのチェックアウトは、ファイルをチェックインするための作業であり
> チェックアウト状態を維持するのは他の人に迷惑がかかるので、
「共有チェックアウト?何それ?」とか言われそうだな。
VSS6.0以前の話を未だに引きずってんだもんなあ。 しかもそういう手合いは決して少なくないってのがまたなんとも。 奴らソースコードのUNICODE化とか考えたことあんのかな。 必要に迫られてVSSを一時的にでも切り捨てなきゃならなかった時期とかだって あるはずなんだが、CVSだのSVNだのも使わないんだろうか。 謎過ぎる。
はーい。 解散解散。 で、へたなコードってなんかあった?
125 :
仕様書無しさん :2006/08/27(日) 16:53:37
if(hoge == true) とか if(hoge == TRUE) とか、「ヘタ」というより「ヤダなぁ」と思った(;´Д`)
オレそれしばらく書いてたな 条件に比較演算子が無いのが落ち着かなくて もちろん今は書いておりませんが
>>125 あべし「普通こう書きますよww?なんでだめなんですかww?」
カエレ
#define TRUE (1) と #define TRUE (-1) が混在していると悲惨なことに
そもそもCでは0以外全部真だからhoge==TRUEなんて書く奴は問題外
あべし「でも==TRUEって付けたほうが解りやすくないですかww?」 シネ
え、駄目なんスか?じゃ、これからは !=FALSE にしときますね
TRUE以外の真になる値を排除したいとか?
enum BOOL { FALSE, TRUE, PURETRUE, REALTRUE, PEERLESSTRUE }; とかになってんのかな。
そりゃ古いタイプのCならダメだろうけど、 今時のドトネトやJavaならいいんじゃないの?Boolで返ってくるなら。
だーかーらーbooleanに対してわざわざTRUEやFALSEと比較する理由がねーだろうがー
んなもんコンパイラで適切なもんに直してくれるんだ、 可読性高いほうがいいに決まってるだろ == TRUE とか書かないやつって、今まであったやつの殆どが 自己満足 俺はデキる って奴ばっかりだったな
== TRUEと比較しておいて、その結果をTRUEと比較しないとは矛盾ではないかね? と考えると、無限に比較しないといけなくなる。 全くの無駄。
>138 > == TRUEと比較しておいて、その結果をTRUEと比較しない とはどういう意味ですか? 釣りでなく本気で教えてください。
(さらに、もし君が「if((a == b) == TRUE)」が「if(a == b)」の改良版であると信じるのなら、な ぜそこで止めるのか。なぜ「if (((a == b) == TRUE) == TRUE)」を 使わないのか)
(((XX == TRUE) == TRUE) == TRUE) 以下繰り返し
アホか。 hogeだけで条件判断できるのにわざわざそれを hoge == TRUEと比較しなきゃいかんってことはhoge という式だけでは真か偽か判断できんと言うに等しい。 つまり (hoge == TRUE) == TRUEと書かなければいかんということだ、そしてこう書かなければいかんということは ((hoge == TRUE) === TRUE) == TRUEと書かねばいかん事を意味する。 これが無限に続く事になるだろうが
#define TRUE 0 #define FALSE 1 こんなマクロが入っているなら==TRUEは必須でしょうな・・・
なんじゃそりゃー!
145 :
139 :2006/08/27(日) 23:46:02
そういう意味だったのかw 変数に入ってるブール値との比較なら データ内容が本当にブール値か確かめる意味で ==TRUEもまぁ良いか、な気がするが 論理式の隣にTRUEは無いなーw
C言語に比較演算の結果がTRUEになるなんて仕様は無いんだが なんの言語の話をしてるんだ?
余計なお世話だがC言語にはbooleanなどない。 しかも0だけが偽であとは全部真だ。 hoge==TRUEなどと書くのは愚の骨頂なのだ。
148 :
仕様書無しさん :2006/08/28(月) 00:50:44
if(hoge == TRUE) は好みの問題だと思ってたけど否定的に捉える人が多いんだな。 忙しいときはif(hoge)で暇なときはif(hoge == TRUE)で書いてたよ。 気をつけよう。
少なくともbooleanのないC言語で==TRUEと書くのはアホだ。
== 0 はどうでしょう?
== 0 == FALSE == NULL
152 :
仕様書無しさん :2006/08/28(月) 01:07:56
とりあえずWin32APIの定義するBOOLは1バイトの変数であって、 FALSEが0と決まっているだけでTRUEは0以外になる。 別にTRUEが1に定義されていないというわけではなく 関数の返すBOOLの値が1ではないということ つまり hoge = Win32APIの何か(); if(hoge == TRUE) はバグる。マジで。
>>148 hogeにTRUEが入ると明示的に規定されてるなら、別に問題は無いけどね
C言語の論理値の仕様を考えれば避けるべき記述だし、あえてそう書く必要性も薄い
154 :
仕様書無しさん :2006/08/28(月) 01:10:11
9.2:Isn't #defining TRUE to be 1 dangerous, since any nonzero value is considered "true" in C? What if a built-in logical or relational operator "returns" something other than 1? A:It is true (sic) that any nonzero value is considered true in C, but this applies only "on input", i.e. where a Boolean value is expected. When a Boolean value is generated by a built-in operator, it is guaranteed to be 1 or 0. Therefore, the test if((a == b) == TRUE) would work as expected (as long as TRUE is 1), but it is obviously silly. In fact, explicit tests against TRUE and FALSE are generally inappropriate, because some library functions (notably isupper(), isalpha(), etc.) return, on success, a nonzero value which is not necessarily 1. (Besides, if you believe that "if((a == b) == TRUE)" is an improvement over "if(a == b)", why stop there? Why not use "if(((a == b) == TRUE) == TRUE)"?) A good rule of thumb is to use TRUE and FALSE (or the like) only for assignment to a Boolean variable or function parameter, or as the return value from a Boolean function, but never in a comparison.
The preprocessor macros TRUE and FALSE (and, of course, NULL) are used for code readability, not because the underlying values might ever change. (See also questions 5.3 and 5.10.) Although the use of macros like TRUE and FALSE (or YES and NO) seems clearer, Boolean values and definitions can be sufficiently confusing in C that some programmers feel that TRUE and FALSE macros only compound the confusion, and prefer to use raw 1 and 0 instead. (See also question 5.9.) References: K&R1 Sec. 2.6 p. 39, Sec. 2.7 p. 41; K&R2 Sec. 2.6 p. 42, Sec. 2.7 p. 44, Sec. A7.4.7 p. 204, Sec. A7.9 p. 206; ISO Sec. 6.3.3.3, Sec. 6.3.8, Sec. 6.3.9, Sec. 6.3.13, Sec. 6.3.14, Sec. 6.3.15, Sec. 6.6.4.1, Sec. 6.6.5; H&S Sec. 7.5.4 pp. 196-7, Sec. 7.6.4 pp. 207-8, Sec. 7.6.5 pp. 208-9, Sec. 7.7 pp. 217-8, Sec. 7.8 pp. 218-9, Sec. 8.5 pp. 238-9, Sec. 8.6 pp. 241-4; "What the Tortoise Said to Achilles".
つか、マジでWin32APIのBOOLは8とか10とか32450とか普通に返ってくるから気をつけろよ。 return (BOOL)size; ってやっても0以外を1にしてくれるわけじゃないし、C言語的にもあってる。 C++のboolは ture falseが1 0って決まってた気がするけど。
この原文厨が! 貼り付ければいいってもんじゃないぞバカモン!!
間違えたw 32450じゃなくて32とか4とか50な。
黙ってコンパイラ様の言いなりになっとけば、間抜けコードの半分は殺せるよなあ。
俺は頭にIsが付いてない限りは != FALSE付けるようにしてるけどな。 if (IsHoge) { if (hoge != FALSE){
>>142 アホか。
セミコロンだけで文できるのにわざわざそれを
セミコロン、改行しなきゃいかんってことはセミコロンだけでは文か判断できんと言うに等しい。
つまり
セミコロン、改行、改行と書かなければいかんということだ、そしてこう書かなければいかんということは
セミコロン、改行、改行、改行と書かねばいかん事を意味する。
これが無限に続く事になるだろうが
>>150 ,151,161
0(FALSE)と比較することは問題ない。
TRUEと比較する場合とは違って、同じ結果をもたらす。
if(hoge) は if(hoge != 0) と同義だ。従って if(hoge != FALSE) とも同義だ。
>>136 > んなもんコンパイラで適切なもんに直してくれるんだ、
> 可読性高いほうがいいに決まってるだろ
試しにコンパイルしてバイナリを比較してごらん。
3 は1,2 と同じバイナリには絶対ならないから。
1. if(hoge)
2. if(hoge != FALSE)
3. if(hoge == TRUE)
>>136 を普通に
== TRUE とか書くやつって、今まであったやつの殆どが
と読み違えてた。
いま見て目を疑った。
いや、あのほら。ネタだよね?
ね?
ね?
ぱっと見るまでもなくゴミスレ
FALSEとの比較も不要だ。 偽の場合の条件なら if(!hoge) {...} で充分。
while(*t++ = *s++); どこにTRUEだのFALSEだの入れる?
ifやその他の条件式は0と非0の区別しかない。 FALSEもTRUEも代入の時にのみ使用する。 そんだけだアホどもが。
while( (*t++ = *s++) == TRUE ) これだから子供は・・・
>>169 いやおまえ、ほら、その、なんだ。
そもそもぱっと見て評価順依存って時点でネタコードだって気づけよ。
ていうか、頭沸いてるだろお前?
普通なら
>>168 でFAだと思うんだが…
while( (*t++ = *s++) != FALSE ) TRUEと比較するなとあれほど
ブーリアンとの比較以前に、
>>167 は普通ヘタコードだよな
美しいとか思う奴もいるのかも知れないが
>>168 C FAQ に書いてあるな。
TRUE,FALSEは代入値、引数、戻り値にのみ使用しろ。
比較には決して使うな、と。
A good rule of thumb is to use TRUE and FALSE (or the like) only for
assignment to a Boolean variable
or function parameter,
or as the return value from a Boolean function,
but never in a comparison.
>>135 でもあべしは書いた方がみやすいって言ってるんでしょ?・・・@
で、それに対してCならダメダメだって話でしょ?・・・A
で、それに対してJavaならいいんじゃない?って話なわけじゃん?・・・B
で、
>>136 が書く必要ないって言ってるんでしょ?・・・C
書く必要ないけど@の言い分を満たすならBならOKじゃない?Cである必要はないと思う。
>>157 なるほろ…そういうもんか
あんまりAPIとか弄らんし普段は別言語で
C弄るのプラグインぐらいだから今度から気ィ付ける
>>174 あべしを出している時点で、全ての常識が通じないことを考慮しる。
過去に出会ったあべしのPGの7割が、ポインタを理解してなかったなぁ。
「え、だってコンパイル通りましたよ」
とか、動かした瞬間即落ちするんじゃこのボケ!
酷いスレだがマ板でやっていることに一筋の良心を感じた
#define TRUE 1 #define FALSE (-1)
次は、半端に「真は非0、偽は0」だけ知ってる香具師が、 &&や||の結果の利用について云々すると見た。
#define TRUE (!FALSE) #define FALSE (!TRUE)
warningは2箇所出るな
>>171 せっかくだから、
while( (*t++ = *s++) != '\0' );
とか書いてもらえないだろうか。
つまらん
while( (*t++ = *s++) != NULL); なんてどうよ。
#define IS_TRUE(exp) ((exp)!=0) #define IS_FALSE(exp) ((exp)==0) #define SET_TRUE(exp) (exp=1) #define SET_FALSE(exp) (exp=0)
天才現る。
しかし、typedefで地獄行く!(細木風)
>>185-187 言語的には185が一番自然なんだが
つか、'\0'と0を厳密に区別する香具師って絶滅したんじゃw
>>191 t と s が char* だなんて誰も言ってないと思うが
ぱっと見て誰もがstrcpyのコードという前提で話しているのに一人突っ込む空気を読めてないなぁと思うレス
ろくにK&Rも読んでない素人が釣れましたなw
>185 流れ的には while (((*t++ = *s++) != '\0')==TRUE); だろ
>>191 >'\0'と0を厳密に区別する香具師って
ノシ
(*t++ = *s++) ↑↑ (((’-’*)))) ウズウズ
>>197 代入したのがTRUEかどうかって話をしてると解釈したが違うのか?
漢なら whlie (*t++ = *s++) {...}
流れをぶった切って悪いが Hoge* pHoge = new Hoge; if(!pHoge) ... とかいうのはどうなのよ? ちなみに俺は if(pHoge == NULL) ... と書くのがイイ!と思ってるんだが
↑ヘタクソ
コンストラクタが例外を投げるのはどうかねぇ
コンストラクタから例外を投げて、問題が出るから、回避するのはへたくそ。
釣り禁止
210 :
196 :2006/08/29(火) 23:29:18
>>202 俺も流石に C++ で NULL 使おうとは思わん。
NULLがゼロで確定したのっていつの話だったっけ。 俺ももうNULLなんて全然使ってないよ。 void* p = 0; .... if(!p) { // do anything. } って感じだ。
>>212 というかC言語はポインタに 0 を代入したら該当する値に変換してから
入れるということになっているが、大半の実装ではそのまま 0 を入れて
いる、ということだな。
>>212 NULLは最初から0番地のアドレス。
ポインタ変数には整定数の0だけは代入できて、それがNULLである。
整数ゼロをポインタに変換するとNULLが意味する値になるだけで、 それがアドレス0番地とは限らないだろ。
続きまして、 mallocした領域は必ずfreeするべきか? をお送りします。
じゃぁ fopenしたファイルは必ずfcloseするべきか? ってのは?
空気読めない香具師が居る件について。に変更で。
空気読めないのは許すが、K&R読めない奴は許せん。
てかそれぞれ脳内文脈で好き勝手に書き散らしていて全然かみ合っていない件
>>216 >>218 お前が実際にあったヘタなコードを挙げれば、そこから話題が広がるかもしれないな。
でもここはアンケートをとる場所じゃないってことぐらい、わかるだろ?
今更だが
>>83 #define BUFSZ256 256
#define BUFSZ256 512
>>220 こう言っちゃ何だが、K&Rもいい加減古すぎて今更なあって気もするぞ。
読みやすい本でも無いしな。
原典だ聖典だと持ち上げる奴はいくらでもいるが、改行スタイルまで右に倣えする必要もないだろうし。
つーかきょうびC自体が以下省略。
今から人に薦めるなら、まだプログラミング言語C++とかの方にするなー。
このスレちょっと読み返してみるだけでK&R読めない奴らがいっぱいだな。
くにお & りき ????
FFの開腹魔法
呪文名は「ストマク」だろうか
230 :
仕様書無しさん :2006/08/31(木) 18:54:02
クエイクとの合成魔法で、ストマックエイク!!!
231 :
仕様書無しさん :2006/08/31(木) 19:00:10
Javaにて。 boolean b; ・・・ if (b == true) {
芸術だな
いったい何行あるんだ?なにがあったんだ?
>230 お腹急降下しそう
boolean b; ... if( b != false && true == b ) { 俺ならこう書くぜ ・・・
好きにしろ
if ( (...(b == true) == true) == true) == ...) と書かないとだめだよな。
そうめんつるつる
boolean isTrue( boolean b ) { return isTrue( b == true ); }
if (isTrue(hoge == true) == true){ ... }
>>212 NULLがただの0になったのはC++から。
それまでは適当だったり((void*)0)だったりしたような。
ちなみに、おれはNULLは使う派。ポインタのところに0と書く人の気が知れない。
まったく、K&Rすら誤読してる奴らが多いな ポインタが取れる値はゼロかなにかのオブジェクトの値に限定されていて、 ゼロのアドレスは有効なオブジェクトのアドレスとは一致しないことは確定してた。 結局、NULLは単なるゼロ番地だったってことだ。 だからifの条件部では常に条件の不成立として使って問題ない。
まあ、例え問題あるっていう奴がいたとしても俺は if(!pUnko) なんだけどなw だって、初期化が memset(pUnko,0,sizeof(UNKO)); だしw
>>241 ごめん、俺もうC++しか使ってないんだ。
NULLを0で書くのも、C++のスタイルに合わせただけ。
生Cにはもはや戻れんし、戻らんだろうから、気にしてない。
俺も if(!pChinko) だが、続く memset(pUnko,0,sizeof(UNKO)); の意味がわからん。 何を主張したいんだ?
お子ちゃまなだけでそ
ちんことかうんことか大好きだよね、お子ちゃまは… 俺も大好きなんだけどさ。
俺たちが作るものなんてみんなウンコだ、それを持ち運んだり 磨いたり、トグロの巻き方を考えたりしてるだけだ。
でもマンコは見たこと無い奴が多すぎる罠。
淫ターネットのおかげでマンコ飽きるほど見ました
>>245 構造体の中にもポインタがあり、その初期化と長年の経験から予想。
>>242 >結局、NULLは単なるゼロ番地だったってことだ。
NULLは0だが、それがCPUアドレスの「ゼロ番地」だとは言ってなかったはずだ。
そのあたりは処理系依存だろ。
K&R読み直してこい
K&Rだとゼロ番地って書いてあるが、
http://www.kouno.jp/home/c_faq/c5.html だとゼロは単なる予約定数だな。
ポインタへのゼロ代入の解釈はコンパイラがやるため、コンパイラが理解できるキャストじゃないと
誤動作を生じる可能性がある、ということなのか。
たとえばポインタ自体ををmemsetとかでゼロクリアした場合、クリアされたポインタが
ぬるぽになるとは限らない、という理屈の様に思える。
C++はこの辺が整理されてぬるぽ=概念上はゼロから、実値としてもゼロになったってことなのか?
教えて、モヒカンの人。
/|| <だガッ断る ( ゚Д゚)<流石モヒ毛様ぬるぽだけは見逃しませんね
>>253 K&Rは規格ではない。今となっては古文書だとさえ言える。
鵜呑みにしてえらそうに言わないようにな。
ここでいうK&Rとは初版のことなのか、ANSIのハンコがついてるほうなのか。 両方?
いくらなんでも初版のわけないだろ
最近みた馬鹿コード マルチスレッドで、 while (flg) {
>>259 でも中に
PeekMessage
TranslateMessage
DispatchMessage
が入ってたら、また、違う結果なんでしょ?
それだけじゃ吊るし上げとして十分じゃない。よってお前も馬鹿。
ぱっと見下手な煽りだなあ。
つーか制御系なら頻出とまで言わんでもよくあるロジックだしな
>>259 つか、何が問題?
変数名が馬鹿まるだしってんならわかるが、マルチスレッドがどうした?
スレッドの同期にむき出しのboolean使ってるとか、そーいう話と違うのか? 実際に問題になったのを見たことは無いが、噛み付く奴は多そうだな。
マルチプロセスでグローバル変数書き換えている馬鹿コード見たことはあるけどな マルチプロセスのプロセス内条件判定で、どっちのプロセスからもいじれる グローバル変数を使うなよと・・・
>>265 どうでもいいが、おまいプロセスとスレッドの区別付いてるか?
>265 ぱっと見なくても「ヘタだなぁ」と思うコードの作成者ですか?
268 :
265 :2006/09/04(月) 12:05:10
4時間で二人しか釣れなくて残念でした
釣りもヘタなんだな
つられた人が必死になってるね
ちょっと笑えんなそのレスは 哀れ
>>259 用途によってはそういうコードも書く。
前提条件なく言われても「それで?」としか思えない。
下手と思う理由が欲しいとこではあるな。
コードは一見ヘタげだが、バグ少ない&作りもよく理解してる 人ってちょくちょくいるよな。 上手げだけど強烈なバグを出す人もいるし、世の中不思議が多いぜ。
274 :
仕様書無しさん :2006/09/05(火) 11:49:02
int cunt = 0;とかあった・・・orz
これはひどい
int a; a=a; ・・・何がしたいんだろうか?
デバッグ用のコード(Breakpoint用)が残っているとか。 ・・・「ヘタだなぁ」コードから、「ボクの解析できなかった、私の理解できなかったコード」の スレに変わりつつあるようだな
>>273 MBAもってる奴が優秀な経営者になるわけじゃない。
文芸評論家が作家のような小説を書けるわけでもない。
そういうことだ。
280 :
仕様書無しさん :2006/09/05(火) 21:25:59
「上手い」と思われそうなテクニックや記述を頭でっかちに吸収してるだけの奴も多い。 以前一緒に仕事した某ソフトハウスなんかその典型だった。 ドキュメントも綺麗だし、ソースも立派、でもバグまみれ。
281 :
仕様書無しさん :2006/09/05(火) 21:43:34
282 :
仕様書無しさん :2006/09/06(水) 10:22:48
>282 てへ
まあ、NULLというのは0の定数みたいなものだからな。
つまりこういうことなんだが、 static const int NULL = 0; int ZERO = 0; void* p = reinterpret_cast<void*>(0); // ぬるぽ void* p = reinterpret_cast<void*>(NULL); // ぬるぽ void* p = reinterpret_cast<void*>(ZERO); // ぬるぽくさいけどぬるぽじゃないかもしれない あまり理解されてない傾向。 したところでどうってネタでもないが。
∧_∧
── =≡( ・∀・) ≡ ガッ ∧jio∧
─ =≡○_ ⊂)_=_ \ 从/-=≡ r( )
── =≡ > __ ノ ))< > -= 〉# つ
─ =≡ ( / ≡ /VV\-=≡⊂ 、 ノ ←
>>285 ── .=≡( ノ =≡ -= し'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
| 仕 様 変 更
//$sql = "select username from usertable where userno = $no"; $sql = "select username from usertable where userno = $no"; どうした?何があったんだ?
下の行の説明じゃね?
>>287 コメントぐらい大目に見ろよ
それぐらいで慌てていたら、
「動いたら奇跡」「動いてはいるけど、将来必ず大変な目にあうので直すこと 1991.12」とか
読めないぞ
>>287 変更しようとしてコピッタものの忘れててそのままチェックインしたのではないかと
>290 おまえ,マジレスて・・・w
>>289 >動いてはいるけど、将来必ず大変な目にあうので直すこと
そのコメント、俺も時々やらかすわorz
>>289 ○○年問題に対応してませんみたいなのはOK?
//華麗にスルー
295 :
仕様書無しさん :2006/09/09(土) 23:43:15
全体的に統一感が無いのがイヤだ Hoge* pHoge / Hoge *pHoge とか if文等の中括弧の位置 とか インデント とか コメントの書き方/位置 とか... きっと他の事に関しても ダブルスタンダードなんだろうなぁ と感じてしまう
>295 滅茶苦茶な使い方は嫌だが、使い分けならする。 例えば2項演算子の両端は、俺の場合基本的に ==はつけて、それ以外は離す。(==でつけるのは=と区別したいが為) 但し長い式の場合は結合度が高い物はつけて、低い物は離す。 …インデントの統一感って2タブか4タブか8タブかって事か? 後でブロック一段追加した時に面倒だからそのまま、ってのは たまにやるがそういうこと?
離して書けよここ 誰だくっつけて書いた奴 俺か。
>==はつけて、それ以外は離す。(==でつけるのは=と区別したいが為) そこまで明確に理由付けて使い分けたことねぇなあ。 感覚的にがーっときてばーっとなってアッー!ってなもんだ。 見直してみたら結構揺らいでるのかも知れん。 反省したもんだか、どうしたもんだか。
>>298 >>==
>=の書き間違いかと思った。ちゃんと>使えや。
>>299 書いた後で俺も思った。
が、そんなコンパイラみたいにかっちりしないでもいいやんか。
へらへら。
>>295 つまるところ「ヘタだなぁ」と感じるの?それ。
俺はあんまり細かいこと言う奴を見ると「使えなさそうな奴だなぁ」と感じる。
あんまり揺らぎが酷いと、書いた奴の思考論理そのものが疑わしく思えることは 無いではないかな。
>>301 プログラマなのに細かいところに注意が向かないやつは
頼むからプログラムを書かないでくれ。バグのもとだ。
他人のコード読んでてもあんま
>>295 の言ってるようなことは気にならんけどなあ
そうだ!俺の書いた清潔なコードを汚さないでくれ! つまらないことでトラブル起こして、俺の仕事の邪魔をしないでくれ! 糞でも食らってろって感じだな。
昔からあって複数人が編集したソースも多い。 そのへんの統一感は求めるだけ無駄。
確かにスペースを空けるくらいはしてほしかった。 だが、「>」の使用を勧めるのはどうかと思う。
どうでもいいが、んな時間に結構レス数が増えてて驚いた。
だが俺とお前しかいないというオチ。 勿論目的は尻の穴。
310 :
仕様書無しさん :2006/09/10(日) 05:00:11
checkstyleがウルセー、 漏れのコード、真黄黄 へたなんだろうか?
312 :
仕様書無しさん :2006/09/10(日) 08:59:48
ところでみんなVCの警告レベルっていくつで組んでる? 俺、警告レベル4の警告ってあんまり取る意味感じ無いんだ。
>312 趣味でやってるならいいんでない? 仕事でそう思うなら去れ!
314 :
仕様書無しさん :2006/09/10(日) 10:03:21
>>313 てか、VCのソースからいって警告レベル4は相手にしてねぇじゃんw
標準テンプレートライブラリからもボロボロ出るんだけど?
マジックナンバー使いまくりのプログラム 何のためにその値と比較してるのか書けよ
>>297 ちゃんと離せよ!
可読性って言葉知らんのか?
if(a==b){c();ab(a);b!=2?d(b):ab(d);while(d!=a){e(d)}
こんな感じで、普通なら数行に渡っているはずのコードが横に最大250バイトずつ
書かれているソースを見たことがある
main()のみでそれが200行
318 :
316 :2006/09/10(日) 10:55:58
自称「少ない行数で多機能なプログラムを書けるイカした俺」な、ある会社のあべし。
319 :
仕様書無しさん :2006/09/10(日) 11:20:06
コードをたくさんのソースファイルに分けたり関数をやたらと作るのはやめてください。 君のコードはあっちにとんだりこっちに飛んだりしてとても読みにくい。 それだけを見れば済むように一本のファイルにまとめて下さい。 main関数だけを見れば済むようにして下さい。 共通関数などもってのほかです。これはCVSにあげるんですよ?
Javaじゃ1メソッド1クラスって考えがある罠。 でも1クラス1ファイルではない罠。 でも今のPJのソースも結構ファイル細かく分けてる。 ソース追うのめんど草。 でも関数作るのはかまわんだろ。見やすくなる。 それがあっちこっちに作られたものでなければ。 たとえば、 main() { kansu1(); //○○をする kansu2(); //××をする kansu3(); //△△をする } う〜ん、みやすす(^ω^)
321 :
仕様書無しさん :2006/09/10(日) 11:52:55
とてつもなく巨大なmain関数、ifのネストも深い深いw
322 :
仕様書無しさん :2006/09/10(日) 12:37:08
スクリプトみたいなソースがみやすいって奴、時々いるよな
>322 スクリプト使い同士でも読めないコード書く奴居るけどね。 例えばPerlerとかPerlerとかPerlerとか。
>>323 perlは言語仕様的にそうなりやすいって聞くけど実際そうなの?
perlの場合9割は何書かれてるか解析するより一から書いたほうが早い
>>326 馬鹿な子ぼらーと一緒に仕事したことがあるのならば理解出来たかもしれないけど
子ぼらーはホントにこんなこと言うよ。
htmlだから微妙にスレ違いだが、1文字ずつ丁寧にテーブルでレイアウトされた 有り得ないソースを見たことがある 納品先からクレームがきて上司が土日使って直してた
void unko() { int stat = 0; LABEL_BEGIN: switch(stat){ case 0: ・ ・ go to LABEL_XXXX; break; case UNKO_CHINKO: ・ ・ go to LABEL_XXXX; break; case ・ } LABEL_XXXX: すんごいながい処理 go to LABEL_BEGIN; LABEL_XXXX: めっさながい処理 LABEL_XXXX: 超長い処理 LABEL_XXXX: ・ } unko関数だけで20000行ぐらいいく。序盤のswitch文は2000行ぐらいで終わる。 ステータスがかわるたびにLABEL_BEGINにもどって何か処理をして またLABEL_XXXXの処理をいくつか経由して元の場所に戻ってくるw
>329 何そのhtml簡易難読化ツール
>>330 構造化プログラム以前の人だと、そんなコード書いたりするな。
某RPGのキャラクタのスクリプト解釈周りがそんなコードで吹いたことがある。
ファミコン時代の人とかにしてみれば、そんな変なコードじゃないのかもな。
>>329 昔ファミベか何かでそんなコード書いてた。
小学生の頃のはず…。
スタック256バイトしかないんで迂闊にFORとかGOSUBとか使えん。
336 :
335 :2006/09/11(月) 23:25:22
アンカー間違えた。6502の世界に逝って来る。
ふぁみべといえば、ふぁみべのとっしんとかいうのがいたな、むかし
338 :
仕様書無しさん :2006/09/12(火) 17:38:59
319はただ単にソース解析できないへたれ こういう馬鹿が一つの関数(メソッド)にアホみたいに300行とか書いてるんだろうな
>>332 >某RPGのキャラクタのスクリプト解釈周りがそんなコードで吹いたことがある。
yaccかlexで吐いたコードだったらあり得る。
perl使ってると面倒で一つの関数が長くなってく
>>330 それは何かツール使って自動生成したソースなのでは?
yacc とか lex とか (bison とか flex とか)、物凄いの作るぜ。
>>323-324 自分で書いたのを後で見てもすぐに理解できない。
それが Perl クオリティ。
かなり気を付けて書けばいいだけなんだがな。
いろんなことできちゃうからな。
>>343 めっちゃハンドメイドだって。
すっげ、手作り感あるもん。
インデントにタブとスペースがめちゃくちゃなハーモニーをかもし出してるし。
確かにyaccとかlexとか俺の書いたCゲロッパー(ツールの名前)とかは そんなコードを吐き出すんだが、手で書く奴もいる。 下手だなあとかじゃなくって、技術の世代が違いすぎて手に負えない。 書いた当人が保守する限り性能的には優れてるのがまたなんとも。 まあ、言いたかないけど、職人芸のひとつだよね。 弟子はつかなそうだが。
>Cゲロッパー くわしく
いや、まんま。 ゲームのキャラクタ達の状態遷移をへっぽこなスクリプトもどきで 記述できる様にしただけ。 へっぽこなんで、スクリプト内で定義できる関数もどきは そんな風なコードになる。 C++向け版はクラス内クラスに放り込むようになってるんだが なんでか今でもC版が生き残ってる。 なんてマジレスはちっとも求められて無いと思いました。 引き続きスレをお楽しみください。
boolean flag = true; while(flag){ : (何らかの処理) : if(…何らかの条件…){ flag = false; } }
>349 どの辺が下手なんだ? 俺何度か書いてる気がするから参考にしたいな。
while ( ! 何らかの条件) { ... } と書けと言うことかと。 JavaでThreadのrunで無限ループさせてるのを止めようと思うと この手のflag変数に頼るしかないんだけどな。
>>351 >while ( ! 何らかの条件) { ... } と書けと言うことかと。
いやそれ
>>349 と等価じゃないから。
do 〜 while だろ。
ネスト次第だが、breakで抜けろと言いたいのかな?
何がどう下手なのか、
>>349 にしかわからないあたり・・・
349が............. ヘタ....
あー、確かに do 〜 while だわ。
一行IF文にしてない・・なわけないか
flagって変数名がつっこみどころじゃねーの?
>>349 do {
:
(何らかの処理)
:
} while(!…何らかの条件…);
こう書けってことでFA?
349の無駄な判定1回省いてくれる最適化する処理系ってあったりする?
日本語でおk
定数指定のforループとかで、最初の判定をジャンプで飛ばす処理系はある。
>>349 のwhileを飛ばす奴がいるかは知らんが、考え辛いかもしれないな。
最近のCPUなら分岐予測の餌食になって消えそうなコストだとは思うが。
多階層ループだったら普通にフラグだよな? もしくはgoto
普通にgotoだろうなー。
ABESHI abeshi;
SQLひとつ発行するごとにコネクションから生成しては破棄。 PreparedStatementなんて使ってない。 テーブル内のデータが、全部文字列。 言語はJava。
何万件あろうと SELECT * FROM TABLE してコード内で選択射影
そういや数字しか入らないのに平然と文字列で行くテーブル設計をした人いたなあ。 なんなんだろう? COBOLERなのか? Oracle には桁指定できる NUMBER ってのもあるというのに。
>368 >367 を実際にやるCOBOLerを知ってる。ネタにならねぇ…
SQL文を覚える気がゼロってことか?
>>369 数字も日付も、バイナリデータすら文字列なとこもあるしな。
日付や数字の項目に"てすと"とか入っていてもまったく気にせず
動作し続けるシステムを見ると、純粋に感動できる。
>>371 覚える気も何も、自分が分かってないことを分かってないからな。
誰かが言ってやらんと変わらないだろう。
SQL以前にRDBをわかってない、分かってない以前に、分かろうともしない。 という人が多数派な現場だと、全部文字列はあたりまえ、 DBなんてリリース直前に決めればいいだろという恐ろしい提案が通ったりします。 今作ってるシステムは結局DB登録システムでしょ?と言っても不思議な顔をされる。
>>367 前に別会社から引き継いだVBのソースで、そういうSQL発行しているのがあったなあ
SELECT idx FROM TABLE
で8万件から取り出し、idxのリストを作り、クリックされたら
SELECT * FROM TABLE
で8万件から抜き出し、バッファに溜めたものからidxの番号のデータを取り出し、
画面で変更がかかったら、
SELECT * FROM TABLE
で取り出し、idxと同じ番号のデータを更新し、、、
あまりの糞さに、WHERE文使った処理に書き直したら、起動からデータ更新まで
当時のPCで1件につき30分かかっていた処理が30秒弱になって、客からむちゃくちゃ感謝されたことがある。
>>374 それまでずっと30分で我慢して使ってたのか。
お客さん可哀想過ぎ。
376 :
仕様書無しさん :2006/10/23(月) 14:50:25
常人の100倍近い生産性を誇る天才ハカー現る
正に「無知は罪」だな。
For i=1 To DtCnt If SelID=Dat(i).ID Then SelDat=Dat(i).Data End If Next i だから見つかった後にぐるぐる回しても無駄だっての。
C言語でこんなのを見たことがある。 for (i = 0; i < strlen(s); i++) { // ... } ま、今時のコンパイラなら最適化するかも知れないけどね。 ループの中で s の指す先を変更していたら最適化できなくて 毎回 strlen() 呼び出されるだろうね。
>>379 他スレッドから弄られる可能性もあるんで
そーゆーのは最適化され内気ガス
まったく富豪プログラミングの概念を理解できない 骨の髄まで貧乏の染み付いたオッサンばっかりなスレだなここは
>379 に関連だけど for(i=0; str[i]; i++) ってどう思う?
>>382 str配列の上限を考慮していないので危険だね。
384 :
379 :2006/10/24(火) 17:31:08
>>380 マルチスレッドじゃないプログラムだったのが唯一の救いか。
>>382 微妙だな。
>>383 の言う通りではあるが、C言語の場合は文字列の最後を
0にする慣習あるしな。まあ str が文字配列とは書いてないわけだが。
>>379 実はsが変更されることを予期した処理だったという可能性があるかもしれな。
>>379 strlen()の定義をコンパイラは仮定しない(できない)だろう。
# するコンパイラがあったらそれはやりすぎだと思われ。
よって、コンパイラは最適化しない。
>>380 ポインタの場合、ループ内に別のポインタがあればそれが同じ領域を指している
可能性があるために、コンパイラは最適化できない。
# これは、マルチスレッドかどうかにまったく関係がない。
詳しくは、C99でrestrict修飾子が追加された理由を調べてみ。
>>387 可能性の話だが、strlenは組み込み展開される処理系もあるのだし、
ループ内でsが弄られてないなら最適化されないこともないこともない…気がする。
ほんのり。なんとなく。気持ち程度。お茶漬。
まあどの道forの中にソレがぶちまけられてるのは、それなりにビビるな。
動きゃなんでもいいのかも知れんが、ほどがあるッつーか。
金勘定が絡むのに計算がdouble。
グローバル変数の嵐。 しかも排他してないし。 それをレビューで指摘したら逆切れ。 「いままで問題おきてないからいいじゃないですか」 もうなにも言うまい。
>>391 俺の総資産を計算するにはdoubleじゃ精度が足らん。
>>389 丸められた誤差をかき集めて自分の口座に振り込むわけか。
常に四捨五入切り捨て
>>392 丼勘定でもだめか?
下の方の桁のはした金なんてくれてやれ。
つうかヘタじゃなくてバグですから
1. 同じデータが複数ファイルに分散。 2. 更新のたびにそれを全て書き換え。 3. バグっててたまに途中で落ちて更新が半端に終わる。 4. 画面Aと画面Bで違う値が表示される。 5. コールセンターに真夜中に電話が入る。 6. コールセンターから俺の携帯に電話が掛かる。 7. 朝まで対応。 8. プログラムは当然スパゲティ。 9. orz
>>392 うんうん。0.1は2進数で循環小数になるからね。
399 :
仕様書無しさん :2006/11/01(水) 21:48:39
400 :
仕様書無しさん :2006/11/01(水) 23:02:24
すぐ一時変数使うやつ、 ・・・つーか友人・・・
それはそんなに悪くないでしょ。 なんでも一文に押し込むよりは。
へ? 一時変数普通に使って何か問題があるのか??
必要ならしょうがないが bool x; if (y > 0) { x = true; } else { x = false; } func(x); みたいなのをみると func(y > 0); にしろといいたい。
そうする必要がないところまで・・・とか言いたいんだろうけど 問題があるとは思えんってのが正直な感想 a = xxx(); if (a == 0) { 〜 } じゃなくて if (xxx() == 0) { 〜 } と書け みたいな? 違うかもしれんけど
>>404 1関数がクソ長くて一時変数を色んな用途に使いまわされると
結構残念だと思うよ。一時変数が外部変数なのよりはマシだけどさ。
C言語で1関数が1000行超えててtempなんて変数名があると本当に残念だよ。
1000行超え自体だけでは残念て言えない今の職場もどうかと思うけど
>>405 は確かに微妙だとは思うが、目くじら立てるほどのことでもねー気はしないでもないかな。
>C言語で1関数が1000行超えててtempなんて変数名があると本当に残念だよ。 >1000行超え自体だけでは残念て言えない今の職場もどうかと思うけど まあなんつーか、職場そのものが残念だな、それは。 関数内で適当に中括弧切って、寿命整理して使ってるわけで無くって int nullpo(int a) { int temp; ...以下千行tempもaも大活躍… } とかのパターンなんだよな? よく見かけるっちゃ見かけるが、まあ、残念だよな。
>>405 このケースは最初は
func(y > 0);
って書いてて意味わからんって指摘受けて渋々直した可能性もある。
クソコード読むよりも、周りのレベルとか修正元のクソコードに合わせて
自分がクソコード書かなきゃいけないときのほうがキツイ
三項演算子使うなとかな。 三項演算子を数珠繋ぎで四連してる奴とかは、それはそれで問題だが。 ところでひとつ教えてくれ。 tcshのソースん中に、 int f = 0 > value; Node * p = a[f]; みたいなコードがあったんだが、これはお前ら的にどうなのさ。 ちなみに二分木の左右を辿るコード。 古式ゆかしいというか典型的というか、俺的には別に超OKな感じなんだが、 論理演算の結果を01固定で考えるのはアウトでつか?
アウトだな int f = (0>value) ? 1 : 0; 面倒でもこうしてくれ
三項演算子読みやすいと思うんだけどなあ ダメってとこも多いしな
いや、俺に言われても。 ただ、tcshなんて環境選ばずどこにでも移植されてるよーなもんのコードの中が こんなんだったんで、少し驚いたってだけなのさ。 下手っつーか単に確信犯(故意犯)なだけなんだろうけど。 ちなみにその辺書き直そうとすると、コードのレイアウトがガラっと変わって 量も処理も結構増えそうな気配だった。 きょうび流行らんのだろうけど、いわゆる「ハッカーのコード」なんだろーな。
>>411 >論理演算の結果を01固定で考えるのはアウトでつか?
アウトと言いたいけど、C言語なら01固定であることが保障されてるしいいんじゃない?
ただ何故こう書いて動くかをクドイぐらいコメント入れとかないとあとあとで
トラブルの火種になりそう。職場のレベルにもよるけど
416 :
415 :2006/11/02(木) 04:07:00
もっと言うなら、 Node * p = 0 > value ? left : right; とかにするべきなんだろうな。 件のソースは二分木の親と左右のノードを3つのポインタ配列に持っていて、 回転操作を効率よく回していたのだけれど、ソースは極めて簡潔ながら、 ロジックは複雑なものだった。 少なくともぱっと見で何やってるかはわからないレベル。 これを上みたいにベタ書きするのとで、実行効率に差が出るのかは正直わからん。 きょうびのコンパイラ事情考えると、ベタ書きのほうが速かったりしそうだし、 流行らないだろうなーと思ったよ。
そこでくる、と。 ・三項演算子は使ってはいけません んなことゆーやつ('A`)シネ
>>410 > クソコード読むよりも、周りのレベルとか修正元のクソコードに合わせて
> 自分がクソコード書かなきゃいけないときのほうがキツイ
だよな…orz
Win の API のコードってどう思う
>>390 >いままで問題おきてないからいい
ある意味正論なんだがなw
前に「この変数の記述はおかしい、この関数は素人っぽい、この処理はもっと最適化できる」と
言って、リーダーに許可も取らずにある機能を自分流に書き換えたやつがいた。
確かに理屈で言えば、そいつの言うとおりである。
しかし動いているものを書き換えるというのはリスクが伴うことをそいつはわかってなかった。
ま、そいつが悪いんだが、結局そいつが書き換えてはアップ、書き換えてはアップと
誰も知らないうちに機能を少しずつ改変していってくれたおかげで、
動いていたものが突然動かなくなったり、データ吹っ飛んだりという大惨事が起きて
泊り込みとか3週間帰れないとかいうのが発生。
原因調査して突き止めた時のそいつの一言は
「確かに修正はミスったが、こんなプログラムのまま運用を続けるなど愚の骨頂だ」
クレーム→そいつの会社の社員30名引き上げ→賠償請求→そいつは結果的に負債背負ってクビ、となったけどなw
>「確かに修正はミスったが、こんなプログラムのまま運用を続けるなど愚の骨頂だ」 せりふはかっこいいな。 しかしなんでそいつが負債を負うんだ? 一人の勝手で本番環境の機能を入れ替えられるような体制自体に 問題があるんじゃねーの? そいつは将来のさらなる大惨事を未然に防いだのかもしれないぞ…
訴えれば勝てるだろうな、そいつ
>>411 それ、C言語? Cって初期化の順序の保証ってあったっけ?
f が不定値の時に p の初期化が動いたら終わりだよな。
>>424 C言語の基礎も知らんのによくそんな見当違いのコメント書く気になるもんだ。感心する。
「ラーメンって麺類だったっけ?
もしパンの一種だっら汁に入れたときドロドロになって終わりだよ」
とか言ってるのと同じレベルだぞ?
よかった。424が何を言ってるのかわからんかったのは正常なんだな
本当は「そんなに簡単に修正出来てしまうような管理体制の方が、愚の骨頂」 なのだろうが
>それ、C言語? Cって初期化の順序の保証ってあったっけ?
>f が不定値の時に p の初期化が動いたら終わりだよな。
Cでは
>>411 のように宣言されたローカル変数の初期化の順序は宣言された順に
行われると決められている。
グローバル変数の場合規格上は未定義だが、
>ちなみに二分木の左右を辿るコード。
って書いてあるからそれもないだろう。
比較演算子の値が0,1のいずれかであるというCの規格を利用したコードは
(正しく動くが)コーディングスタイルとして妥当かどうかとか話してるときに、
ピントはずれな事実にも反する前提をおいて「〜終わりだよな」なんて批評してるから、
「見当違い」と書いたわけです。
>>429 0か1かについては他の人が書いてるから書かなかっただけなのだが。
なんつーか前提が違うとどうしようもないよな よくあるけど
関数の戻り値の意味がてんでバラバラな奴 if (func1()) { エラー処理 } if (!func2()) { エラー処理 } とか、ぱっと見混乱する。 そういや、戻り値がBOOL型で非0、0、-1のどれかを返すWin32 APIとかあったな。
BOOL型は、名前がBOOLなだけで、真偽値を表すものではないからな〜 変態な命名法というだけだね。
.iniファイルに格納された数値を Stringで読み込んで キャストもせずにBooleanに放り込む そんなVBAを押し付けられたことがある。
なんでCは本当の真理値としてのbool型を導入しないの
面倒だから
>>435 言語仕様を変えたら、それはもはや「Cのようなもの」で「C]ではない。
「Cのようなもの」でよければ
>>435 がいうようなアレもあるんじゃないの?
C99には入ってんじゃねーのか? つーかCに文句あるならC++使え。
拡張子cppにするだけだから問題ないよね。 一行コメントだって使えるようになるんだし
C99 は bool でなく _Bool 型があって 入る値は 0 1 のみって仕様だったかな んで #include "stdbool.h" すると bool を _Bool として typedef されて 定数 true false が 1 0 と定義されるって感じ
どうせC99の時点で言語仕様は変更されまくってるし コンパイルには-std=c99フラグが要るのだから、 中途半端なことせず言語でサポートするboolを導入したバージョンも出せよと。
それなら素直にC++使えって話なんだろうな。 C99の拡張は、過去のCの資産と齟齬起こさないのが前提なんだろうし。 __func__なんて、ベンダ独自に実装してる__FUNC__に気を使ってなのか小文字だったりするあたり、察しろというか。
C99ではぶらさがり文がブロックに置き換えられるため 旧来のCと動作が異なるコードが存在するというトリビア
ぶら下がり文ってなーに?
鉄棒大好きな文菜(ふみな)ちゃんのこと
ぱっと見てというスレタイからだと・・・ やっぱりboolの比較かなぁ どうしても演算子が書きたいなら、 せめて否定にしてほしい
じゃあ二重否定で
true == booleanVariable だの false == isXXX() だの しかもXXXが略字で、英文法的にも意味がわからなかったりしたり、 メンバにアクセスしないのにstaticじゃなかったり、 あああもう
>>448 とか
>>405 みたいな書き方する奴ってのは
if ( /* ここは関係式じゃないといけない */ )
とでも思ってるんだろう。
恐ろしいな
staticかどうかってメンバにアクセスするかどうかで決めるものなのか? 言語によるかもしれんけど
>>451 まあ、俺が見たパターンだと全部が
クラスのメソッドすべてユーティリティメソッドなのにstaticになってなかったって感じかな。
そのユーティリティメソッドを使うためにはわざわざインスタンス作らないといけないの(^ω^)
>>452 そのための((type*)NULL)->mf()ですよ。
>>452 DIコンテナとかつかってると、そんなクラスばっかりになるぞ。
ステートレスなクラス万歳って感じだ。
>>346 >下手だなあとかじゃなくって、技術の世代が違いすぎて手に負えない。
>書いた当人が保守する限り性能的には優れてるのがまたなんとも。
おまえ、いいこと言うな。
>>410 そんな細かい粒度で指摘がはいるだけマシ。
VBなんてやってた日にゃ野放し状態ですよ…orz
457 :
仕様書無しさん :2006/11/04(土) 22:03:42
>>421 その賠償請求は多分違法。
たとえどんな誓約書を入社時に書かされていたとしても、まともな弁護士雇って訴えればどうにかなる。
まぁ、無視してもいい気がするけどww
そいつが律儀に支払いしてるようならアドバイスしてやれ。
他人の書いたコードを勝手に直すって よくそんなリスクの高いことをやる気になるよなー。 ペアプロとかリファクタリング環境が整っているなら良いけど…。
459 :
仕様書無しさん :2006/11/05(日) 00:48:11
どこぞで聞きかじったキーワードをひけらかすのも大概にね。
>>458 やっぱりペアプロの環境を整えるためには
まずは、新人女を発掘しないとな。
それが一番のリスクだ。
>>457 421は被害を受けたほうだろうから、421にアドバイスするのはありえないだろうwww
文脈読めないひと?
大抵のコーディングは許せるが 長い関数だけは読むのが苦痛だ。
しかもローカル変数が違う意味で使いまわされてたりなw
>>457 誓約書云々ではなく、無断(業務外)で
>>421 に被害を与えたんだから
賠償は当然だろ。
権限のある指示者の命令下で作業を行ったんだったら
>>457 の言うとおり賠償責任はないんだろうけどね。
465 :
仕様書無しさん :2006/11/05(日) 14:37:22
>>464 >誓約書云々ではなく、無断(業務外)で
>>421 に被害を与えたんだから賠償は当然だろ。
明らかに業務とみなされるし、雇用者と被雇用者間ならまだしも、同僚が直接”賠償”請求ですかww
466 :
仕様書無しさん :2006/11/05(日) 15:09:50
>>432 そもそも
if(func1())とかいうのが嫌い
if(func1()==0)とかにして欲しい
>>466 そもそも
if(func1()==0)とかいうのが嫌い
if(func1())とかにして欲しい
可読性を上げる意味で func()の返り値がunsignedであっても if(0 < func()) とか書くことはある…か、な? これって下手コード?
>>414 >ちなみにその辺書き直そうとすると、コードのレイアウトがガラっと変わって
>量も処理も結構増えそうな気配だった。
>きょうび流行らんのだろうけど、いわゆる「ハッカーのコード」なんだろーな。
遅レスだが、一つ教えてくれ。
「ならば、"どうしろ" というの?」
本来難しい問題ならば、
それなりに複雑でボリュームのあるコードを書くのが
現代風だっていう話なのか?
>>469 このifに引っかからない場合にどうするの?
473 :
仕様書無しさん :2006/11/05(日) 19:23:56
なにこのスレ。Cのくだらなねぇ話題ばっかじゃねぇか。C++使えよ・・・・
>>473 おめぇ、ずいぶんしょんべんくせぇな
どこ乞食だ?
475 :
仕様書無しさん :2006/11/05(日) 21:31:23
ぢゃあ逆に問う true == 1なのか?
>>475 言語によって異なるので一般化できない。とりあえずC++を想定してる。
そうですよ。
>>473 このスレに言語の決定権のある人間がどれだけいるというのか
だから、比較演算子は否定から入れとあれほど(ry
>>470 コード自体は簡潔であっても、移植性を欠いてまでロジックを押し込むことはないってことだと思われ。
他の人間が読んでも読みやすく、コンパイラが妥当に解釈してくれるので性能に差が無い、
そういうラインを探すのが現代風というか、そうでないのが過去の話なんだろう。
一般論だな。
条件式に ==0 と書いても耐えられるのは ==1 とか ==2 が並列してありえる場合だけだな。 あとは百歩譲って strcmp。
数値としてのゼロ、と明記したいなら ==0 と書くが NULL や真偽値の判定なら書かないな。 strcmp は始め悩んだが ==0 にしてる。 真偽値かって言うとちと違うし。
きちんと意図が表れやすい方が好ましい。 つまり、読みやすい方が好ましい。 書くのはあなたでしょうけど、読むのは誰ですか? それは読みやすいのですか?
読む人間が偏屈だったりするからなぁ。
あるあるあるあるある 何書いても文句言われるなら、いっそ何書いても構わんだろうと
>>482 >それは読みやすいのですか?
読みやすさを数値で測る方法が見つかったら考えてやるよ。
読みやすさ度 2.3
視力0.2
>>485 君は美味しい、甘いなどと感じるときにいちいち数値が見えているのか。
実はおっぱいに目が行っているだろう。
他人のおっぱいなぞ興味はない
自分のおっぱいに興味があるのか。
そうだ
# _ ∩ # ( ゚∀゚)彡 おっぱい!おっぱい! # ⊂彡
no comment
1. コメントに変更履歴(変更理由、変更者、変更日)、 ファイルの先頭ならまだしも変更箇所に 2. 古いコードがコメントで残してある 3. コメントならまだしも、#if 0 〜 #endif でアウトしてたりもする 4(重要). バージョン管理システム使っていながらこの状態
495 :
仕様書無しさん :2006/11/09(木) 12:04:16
>>494 あべしでは、古いコメントは全て残すように教育されているはず。だから、
////////////2003.09.24. 変更
////////////if( hoge == mage ) {
if( hoge == moge ) {
//////////2003.12.22. 変更
////////a = func( b );
a = func( b, c );
////////////2003.09.24. 変更
////////////a++;
a--;
///////2005.3.3. 変更
///////a += 2;
////2006.1.4. 変更
////c++; }
//2006.2.2.変更
//c++; b++; }
}
みたいなソースばかり。しかも開発時の報告資料には必ずコメントを含んだステップ数が入る。
>495 専用エディタが要るな…w
>495 >開発時の報告資料には必ずコメントを含んだステップ数が入る。 コメントは「ステップ」じゃないしw
498 :
495 :2006/11/09(木) 14:13:40
>>497 俺に言われても知らんw あべしに以前「コメント行数はカウントしないでください」と言ったら
目を見開いて真剣に「なんですかそれ?そんな面倒な集計方法聞いたことありませんよ??」とつっかかってこられた。
そーは言っても、ステップ数5960とかでコード行数32とか200とか、そんなのばっかりだったからねぇ・・・
499 :
仕様書無しさん :2006/11/09(木) 17:19:29
そもそも、ステップ・・・。わかってるだろうから、・・・言うまい・・・。
500 :
仕様書無しさん :2006/11/09(木) 17:24:02
>>466 > if(func1()==0)とかにして欲しい
俺もそう思う。func1の戻り値を何と比べているのかを明確に記述して欲しいよね。
省略した場合、わかってるから省略しているのか、
わかってないから、省略してしまったのかの区別がつかんw
上手下手を感じる以前に目を疑ったコード (識別子などは変え、一部略しています) switch(foo){
途中で送信しちまった switch(foo){ case L1: foo(); ... break; case L2: bar(); ... break; if(hoge){ case L3: break; } case L4: break; ...... } こんなん。
おーこれは上物だな
>>502 ちなみに、if(hoge)行のhoge式が評価されることはあるの?
# そこがネタ?
if(foo()) if(bar()) baz(); else qux(); でバグじゃないコード。 一体何の嫌がらせだ。
>>505 それのネストが深くてインデントを途中であきらめた物が回ってきたことがある。
最初にやったことは、全部プリントアウトしてIF-THEN-ELSE-ENDIFの対応関係を
マーキングしていくこと。
最初のネストのELSEを4000行目くらいで見つけたときは、マジで切れた。
ヘタにも程がある。
思わず「オカエリナサイ」と言いたくなる。
508 :
仕様書無しさん :2006/11/10(金) 10:43:56
>>506 たまらんな・・・・
ヘタとかいう以前に自分で保守できにくいっつうのがわからんのだろうか
エラー処理してても一気に飛ぶから判定しにくいだろうし
>>504 ないだろうな。
しかし、こんな風に書いてもコンパイルエラーも警告も出ないところがC言語のすごいところか・・・。
警告を出すか出さないかはコンパイラの問題であって、言語の問題ではない。
フレームワーク使ったJSPにメソッドがいた。 やってることは略名称取得。 同じ物が他の沢山のJSPに。 えーっと、略名称じゃなく名称出したくなったら 全部のJSP書き直しですか?
>>506 整形ツールでインデントだけでも正しくしてからやればよかったのに
>>502 hogeが常にfalseだと、コンパイラが削除してくれるとか?
>>505 Pythonのコードか、あるいはHaskellか。
それでもありえない罠wwwwwwwwww
>>513 そんなものが開発環境にあれば苦労はしない…
汎用機の世界は時間が止まったような人外魔境に見える。
別に汎用機の開発環境になくてもさ、 PCで動く整形ツールはたいていの言語にはあるんだから ソースをPCに持ってきて適当に整形すればよかったのに。
汎用機やってる連中の解せないところは、その辺の融通の利かなさだよな。 まあ、会社もろとも融通利かなくて、ソースを持ち出せない可能性も大なわけだが。 このご時世、なんでそんな連中が食いっぱぐれ無いのか大いに疑問だ。
機械的な整形ではもはやどうにもならない汚さだったから。 COBOLなのにカラムが無限にあるかの如き書き方だった。 でも不思議とバグが無かったので、整形はPMに阻止された。自動はおろか手動でも。 バグ無しで作ったやつはネ申かと思ったが、論理演算子や一次元配列の使い方さえ 碌に理解できずに拒絶した只のバカで、このソースは神様の悪戯だった。(w PMもそんな低レベルに合わせるからいけないのだけど。汎用機が泣くよ。 実感としては、融通利かないっていうより異空間にいる感じだな。 俺は適合できなくて終に大学病院送りになったよ。orz
>>519 やりたがるやつが少ないから需要の方が大きいままで、だから稼げるのでは?
少々バカで効率悪くても居なくなってしまうよりはましだから飼っておくとか。
>少々バカで効率悪くても居なくなってしまうよりはまし 世の中上の方は大体そんな理屈で動いてるよな。 まあ、いいんだけどさ。
そいつの方が給料がいいとちょっと腹立たしいよな。 まあ、いいんだけどさ。
524 :
仕様書無しさん :2006/12/06(水) 21:13:37
pA=malloc(1048576);//余裕を持った確保 いや、幾らなんでも確保しすぎだろうと。
<font class="red"> どっから突っ込めばいいんだ。 明日からこんな感じのHTML数百枚をStrictに修正だ…
526 :
仕様書無しさん :2006/12/06(水) 22:29:27
汎用機なんて全く触った事無いJava男だが、ちょっと話聞いただけでどんだけずさんなのか分かるな。 まぁ つωT`)ヾ (゚Д゚ )…イ` それはいいとして、最近汎用機やってました。Javaやりたいです。とかいうヤツが続々、派遣されて来るんだ。 で、そいつらのソース見たら、どいつもこいつも大概ベタ書き。 汎用機が大変だったのは分かるがその魔境地帯をJavaで、埋め込むんじゃねー
いや、別にStrictにする必要はないだろ。
>>526 その手のソースを見てると、JavaがN88-BASICか何かに見えてくるから、不思議だよ。(w
529 :
仕様書無しさん :2006/12/07(木) 00:49:07
String str = new String(""); @Java ウチも最近、Findbugsを入れたおかげで、こういうコードを書いたバブル入社ヘタレを 容赦なく晒すことができるようになりました。
530 :
525 :2006/12/07(木) 01:19:32
客が「次の機能刷新が入る前に直しておきたい」って言い出したんだから仕方ないだろ。 今暇だし金にはなるんだけど、どうにもやる気が出ない。
531 :
仕様書無しさん :2006/12/07(木) 01:23:26
>>524 それはせめて 0x100000 と書いて欲しい。
そもそも意味の無い数字なんだろうけど。
532 :
仕様書無しさん :2006/12/07(木) 02:02:19
ifの式が真偽値か参照以外になっているコードを見るとダメだなぁと思うよ。 if(i++)とかif(ret = foo())とかクソ!クソ!クソ ※fooは数値を返す関数
533 :
仕様書無しさん :2006/12/07(木) 10:04:07
参照はいいのか。
>>525 ><font class="red">
その発想はなかったわ
>>529 >String str = new String(""); @Java
どのあたりが「ヘタレ」なの?教えてくだちい。
>>535 Java はダブルクォーテーションで括った文字列は String クラスのインスタンスだ。
(だからたとえば "abc".charAt(1) とかできる。(この場合 'b' が返る))。
なので文字列定数を new String() で作ることは余程の事情がない限りはしない。
その必要がないからだ。(但し勝手に最適化されて参照先が同じになることはある
ので書けば必ず無駄なコードが作られるとは限らない)。
537 :
仕様書無しさん :2006/12/07(木) 22:11:00
>>536 よー分からんけど、これでいいってことかい?
String str = ""; @Java
てか、これ以外書いた事ねぇや。
>>537 あとで再代入することが「確実な場合」は
"" を代入する意味が「全くない」のでやめたほうがいいよ。
539 :
仕様書無しさん :2006/12/07(木) 22:38:58
>>538 うん、そんなときは使わんって。使い方には色々あるんだから。
そうじゃなくてnew String()の記述が要らんって事よね?
俺C++厨だからうっかりnew String("")ってしちゃいそうだわwww。 つか最近C#で同じことやってコンパイルエラーと数分格闘しちまった。 よく知らんがJAVAはコンパイル通るんか?
541 :
仕様書無しさん :2006/12/08(金) 06:12:51
c#ならstring.Emptyにしろよ
>>526 派遣会社のWebページ見てみ。
専門なり大学なりを卒業して、何年もフリーターやってる奴とか元乞食とかを
数ヶ月、VB、C#かJavaを社内教育+経歴偽装して売り出してるから。
特定派遣(請負社員)ですらない、一般派遣(特に20代の県外からの派遣)は特にヤバイ。
派遣ですら食えないヤバイ奴の巣窟
>>540 String str;
だけでインスタンスができちゃう、と考えるのが
真の C++ 厨さ。
544 :
仕様書無しさん :2006/12/08(金) 11:54:21
545 :
仕様書無しさん :2006/12/08(金) 12:05:42
>>539 Javaの教則本の最初の方だけ見て書くとそういうの書きそうだな。
いいよほとんど実害ないから、例外もみ消すアフォよりは
547 :
仕様書無しさん :2006/12/08(金) 22:13:29
>>546 例外もみ消しなぁ。スキルの低い奴ほどやらかす傾向あるな。
548 :
仕様書無しさん :2006/12/08(金) 22:18:55
>>547 そんなのただの作り話だよ。ほんとにやるヤツいねぇ。
とか思ってたら今度来た派遣の30代PGがほんとにやってたよ(゚д゚)
しかも、やんわりダメですよ〜って言ったのに、こういう処理をしてるプログラムは前の現場では〜とか
意味の分からない例を持ち出された。
もうどうでもよくなって、ほったらかし。
おれのしってるプロジェクトでは、例外時に出力するメッセージを DBに読み込みに行くようにしてるのだが、DB接続時の例外処理で 同じようにDBにメッセージを検索にいっていた。
550 :
仕様書無しさん :2006/12/08(金) 23:26:21
>>548 スキルの低いやつがバグ隠しによくやる。
エラーが出るからなんとかしろ、といわれて何とかした結果がそんなだったりする。
そういう風に育ってしまったら直らん直らん。
>>549 ワロタワロタwwwwwww
551 :
仕様書無しさん :2006/12/09(土) 11:13:18
逆にお前らが言う天才的などコードってどんなのよ?
552 :
仕様書無しさん :2006/12/09(土) 11:19:28
天才的なコードなんてイラネーヨ。
仕事のコードでDuff's deviceなんか見た日には……
アビーが書いたコード。
556 :
つか :2006/12/09(土) 19:59:08
nemespace komaneti_space { partial class par_class { int i_hoge1; } partial class par_class { int i_hoge2; } partial class par_class { int i_hoge3; } }
ソラリスのオプンソース見てたら けっこうGoTo使っててビビった まぁそんなアホな用法ってわけでもないんだけれど。
GoToも適切に使えてるならいいんじゃない? 絶対的禁止ってわけじゃない。
☆社会の寄生虫、派遣会社をぶっ壊せ!やつらは背広を着た893だ!
私は今ここに要求する!派遣法を改善・改正せよ!
サラ金真っ青の30%、40%超の暴利を搾取し労働者から毟り取る。
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
派遣会社の搾取率を10%未満に規制しろ!
ついでに薄利で中小の乱立する派遣会社に消えてもらって
派遣は大規模派遣会社のみが薄利多売でやる商売にしろ。
そうすれば労働者の手取りも増えてニートやフリーターも減るだろう。
【漫画DB】第0弾フリーザ様に学ぶ派遣会社搾取問題
http://www2.ranobe.com/test/src/up16740.jpg
goto禁止で例外が飛ぶ。 はーこりゃこりゃ。 何事も思考停止が一番よくないと思うわけですよ。
>560 gotoと例外は違いますよ?もちろんCにはgotoしかないけど、 C++ならgotoはないでしょ。CとC++を同列に考えている時点で思考(ry
562 :
仕様書無しさん :2006/12/09(土) 23:10:16
BOOLを返す関数なら、==FALSE、==TRUE イラネ。 intを返す関数は、==0、!=0つけた方が(・∀・)イイ!! 従って、str系の関数で、if (strcpy(a,b)) {・・・}は非常にムカツクw
on error goto
>if (strcpy(a,b)) {・・・}は非常にムカツクw 可読性が落ちるわけでなし、別に構わないと思うが 個人的はifのあとに空白つける奴が多いのが非常にムカツク いらんだろ、あれ きょうび検索にだって影響なんかするもんか 4タブに合わせてんだよ!って主張する奴がいるが、 ならforとswitchにまで付いてんのは何でなんだと
565 :
:2006/12/10(日) 00:09:03
>>564 なんでムカツク?
普通だろ。
お前の思考回路の方がムカツク
566 :
仕様書無しさん :2006/12/10(日) 00:13:29
で?
>>564 そもそもstrcpyは真偽値返す関数じゃないだろうーが
つーか空白の個数やタブなんて小さい問題だし、ツールでいくらでも補正可能だろ
568 :
仕様書無しさん :2006/12/10(日) 01:00:31 BE:329011373-2BP(1011)
>>564 という事はあなたの考えが少数派という事です。
その事実を認めて物を考えましょう。
>>562 禿げ同
たまにif (CreateFile(...))とかやってハマってる馬鹿とかいるし
570 :
535 :2006/12/10(日) 03:11:41
>>536 どーもありがとー。
Stringオブジェクトはnewするな、きわめて冗長だから、っつー話なんですね。
>>540 おれもおれも。w
だが、C++はそれがいい。
C++のstd::stringってmutableなんだよねえ JavaとかC#とかがimmutableなもんで どうしてもimmutableっぽく扱ってしまう・・・
if (a>b) { return true; } else { return false; }
ブビだが、 Functionの呼び出しが全て go sub になってたソース見た。
同じく VB だけど、 ループとか if, case で表現できるものを、goto で実装してるソースがあった。 しかし、場所によっては do 〜 until ループを使ってたりする。
>>576 まともな井出使ってれば普通に動くと思うぞ。
そもそも関数の概念の説明に使われるくらいなんだから。
ただreturn値の指定方法が気になる。kwsk
>>573
>>577 >>576 タソは、gosubがgo subになってるって言いたいんだよぉ。わかった?^^
579 :
577 :2006/12/11(月) 02:28:28
>>578 たしかそれでも動く仕様のが昔あった気がしてな。
なんかなかったか?
580 :
573 :2006/12/11(月) 11:56:53
go sub .......orz
人間コンパイルエラーしてもーた。
つか、VB6でGoSubなんて使えるのをこのコードで初めて知った。
>>577 グ ロ ー バ ル 変 数 に決まっているじゃないでつかww
同じシステムの別のコードは、Subが一個しかなく、
サブルーチンは全て GoTo ラベルで記述されてて、
1ファンクションが2000行くらいのだった。
>562 Win32APIで,BOOL型なのに返す値はTRUE(1)/FALSE(0)/-1だったり・・・
boolじゃないんだから、BOOLはゼロか非ゼロかだけ守ってりゃいいだべ。
>>579 =577
えっとぉ、N80Basicは、Go ToでもOKってやつでつかねぇ?w
>>581 それは藻前の勘違い?
んでも、Trueを使わずに!FALSEで判定すれば、もーまんたいo(^-^)o
>>581 ,584
つーかそれがBOOLの仕様だろ!!
まさかVCの実装で
#define TRUE 1
ってなってるからってそれを仕様だと思ってたりしてないよな?
それなんてGetMessage?
そういうものにBOOLという名前を付ける神経がいかれてる。
>>585 だからぁ、、、
#define FALSE (0)
#define TRUE (!FALSE)
なんてことは、言われなくてもわかるがな。
if (isError() == TRUE) {}; //動くわけねぇだろw
if (isError() != FALSE) {}; //書き方が気にイラネ
ってこと。
if( !!isError() == TRUE ) だよな!!
(゚Д゚)ツマンネ
GetMessage メッセージ取得成功:TRUE WM_QUIT取得:FALSE エラー:-1 そしてwizardが吐き出すコードはwhile( GetMessage() )…。('A`)ナニコノクソコード
昔の名残だな。 つか、今のWizardもそんなコード吐くのか? MSDNに 警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。 while (GetMessage(lpMsg, hWnd, 0, 0)) ... って思いっきり書いてあったんだが…
客:このソフトに○○機能を追加してください。 漏れ:わかりました。ソースコードはこれですか? 客:そうですね。ではよろしくお願いします。 漏れ:誰だこの超ヘタくそなコード書いたのは・・・5年前の漏れかorz 客:(こいつに任せて大丈夫だろうか・・・。)
>593 は 5年の間に「下手なコードを見抜く能力」が上がった訳だ それは良いことだと思うぞ
割と○年前の自分が書いたコード見ると吊りたくなるって人多いんじゃね? ∧||∧ ( ⌒ ヽ 自分に腹が立つ…… ∪ 。ノ ∪∪
>>595 こないだ7年前のコードを読んだんだが、
整理されていて読み易い構造だった。
∧||∧
( ⌒ ヽ 退化してんじゃん…
∪ 。ノ
∪∪
いつの間にここは首吊りスレになったんだ
自分が5年も前に書いたコードなんてリファクタリングしないと使えないな
小学生の頃初めてさわったときに if(a==TRUE) なんてやってたな。 俺はkusobaka
過去の自分って、大概格好悪く恥ずかしい
603 :
仕様書無しさん :2006/12/14(木) 22:16:05
過去の自分を見つめるのはいい事だと思うんだ。 俺も客に申し訳ないくらいしょぼいコード書いてたなぁ。。。
604 :
仕様書無しさん :2006/12/15(金) 09:16:10
日々勉強ってことだよな。 でも意外と今の新人が自分と変わらないレベルだったりすると…
>>595 若い内は覚える速度も速いので作られるソースの変化も激しいが、
歳を取ると段々と変化が遅くなる。20才の時のソースと25才の時の
ソースは雲泥の差だったりするが、30才の時のソースと35才の時の
ソースは大差なかったりする。
>>604 書ける奴は書けるんだよなー。
十も歳違うのにコードに大して差がなかったりすると、流石にへこむ。
あるいは、目に見えないところでそれなりに差がついてるのかもしれないが…
608 :
仕様書無しさん :2006/12/15(金) 17:46:22
>>600 kusobakaでも、保守できる素敵なコードと思えば良い。
実際、if(a)でもif(a==true)でも、コンパイラが馬鹿じゃなきゃ、生成されるものは同じでしょ。
なら、誰でもわかるソースの方が優秀だと思うけどな。
自分しか使わない触らないなら、話は別だけど。
心配性な俺はこのくらい書いてしまう時がある hoge = IsHoge(); if(hoge == true) { //Hogeのときの処理 } else if(hoge == false) { //Hogeじゃないときの処理 } else { //何かIsHogeがありえない戻り値返してきた AfxMessageBox("やべえwww"); }
それは流石にパラノイア。 C言語の挙動自体まったく理解してなかった頃の俺のコード見てるみたいで なんか恥ずかしいから撤回してくれ。 じゃないと俺が死ぬ。
論理値をリテラルと比較するような莫迦は int a, b; if ((a == b) == true) これくらいやらんとな。
>>608 aがC++のboolやJavaのbooleanならそれでいいけど、
>>600 のは多分BOOL(int)なのでやばいって話だと思われ。
Makefile にこっそり -DTRUE=2 とか入れちゃう。
614 :
仕様書無しさん :2006/12/15(金) 19:06:01
ちょwww
リポジトリを直接いじって痕跡削除。
そしてリポジトリを破壊。 仕方ないので鯖を物理的に破壊。 ばっくれのコンボ。
>>610 実際、このIsHogeが俺が自分で書いた関数ならここまで気にしないさ
このくらい人を不安にさせるコードを書く人が以前にいたんだよ
ドキュメントに戻り値はtrue又はfalseって書いてあるのに訳判らん値戻したり
自分でその関数使う時もif(IsHoge==true)で評価したりif(IsHoge==false)だったり
場所によってまちまちで訳判らん誤作動起こしまくってた
619 :
仕様書無しさん :2006/12/15(金) 20:06:30
>>618 変なの居なきゃ、そんな苦労も要らないんだけどねぇ…
仕事してると、冗長かもしれないけど誰でも読めるコード>綺麗で簡潔なコードだね。
if ((((((a == b) == true) == true) == true) == true) == true)
>>619 そうはいっても1画面ですむコードを1k、2kと書かれた日にゃー。
やっぱ同じ処理の繰り返しが多いコードかなー
(1)、(2)、(3)、(4)は処理内容はそれぞれ全然違うんだが、処理内のエラーチェックは ほとんど同じで、全てベタ書きでコピペとか、結構ありがちだな if (コードがAの場合){ // (1) 200行ほどの糞コード } else if (コードがBの場合) { // (2) 200行ほどの糞コード } else if (コードがCの場合) { // (3) 200行ほどの糞コード } else { // (4) 200行ほどの糞コード } あと、超多重ネスト if() for() if() while() if() if() for() if() if() if() とか、何の冗談かと…
>>623 くそコボラーが血迷ってCなんかに手を出すとそうなる。
コボラーは一つのcファイルのに延々と下手すれば1メガ以上
mainに書き連ねる。
625 :
仕様書無しさん :2006/12/16(土) 23:39:21
int val; str = String.valueOf(val); if(str.equals("0")){ }
>>624 その遺伝子は近年、携帯Javaアプリ屋に隔世遺伝したよ。
1メソッド2000行超、1クラス5万行超って……
>>626 携帯アプリは仕方がない。
パフォーマンスを稼ぐ都合上、
インライン化やクラス数の抑制を行わなければいけないからな。
もっとも、それを言い訳にしている節もあるから、どうと言い切れんが
ソースファイル丸ごとコピペしてきて、 使わない関数やグローバル変数がコメント化すらされないでそのまま残ってるソース。 理由を聞いたら、どうもそいつには使われてるかどうかが判断がついてないらしい。 ヘタというよりコード書いちゃいけないレベルだな。
>>627 javaで、それはないんじゃないの?
1メソッド2000もアホだけど、5万行の1クラスって・・・
javaのoopの意味ないじゃん・・・
>>628 もし使われているならば、外したらコンパイルすら通らなくなるはずだし。
ものを知らないか、自分でものを考えることができんのだろうな。
Linux 用C言語ソースでこんなの発見。 system("touch hoge"); どうやら utime() 関数を知らなかったようだ。 (Solaris とかでも昔からある、というか、UNIXの標準的な関数だと思ったが・・・) てかPOSIXの関数かこれ。
>>624 そうだな。
コボラの書いたネスト20個とか見たことある。
switch case 文で、 caseの数値に、10進と16進が混在しているのに唖然。
そもそもcaseラベルに即値を書くなよと
635 :
仕様書無しさん :2006/12/17(日) 14:00:47
>>629 昔のiアプリやってたから分かるけどそれはしょうがないよ。クラス増やすとそれだけで
数kバイトjarのサイズが増えるから。
サイズ制限がきついからどうしても1つのクラスに大量に処理を書かなきゃならんかった。
jarファイルの上限が32kバイトとかもうアボガド。
まぁ最近のはだいぶ増えてきてるらしいけどね。
>630 ひょっとすると、リフレクションしまくりだったりしてw
637 :
仕様書無しさん :2006/12/17(日) 14:24:02
>>630 コピペってきたソースはコメントアウトすら必要ないぜw
使うもん以外全部削除しとけ。不具合の元だ
>>630 大規模だったり、高度なプログラムになると
単純にコンパイラだけを頼りにはできない罠。
高度なものの例だと関数が仮想化されてたり、ちょっと考えただけでも
コンパイルは通るけど実行時に致命的なバグが発生するものはたくさんある。
大規模なものの例だと
特殊なデータを受け取ったときだけ必要なプログラム等は要求仕様によって
いる場合もあればいらない場合もあるし、実際はもっと複雑になる場合が多い。
要はケースバイケースだろ。
決めつけるのはいかんと思うぞ。
>>637 そもそも、必要なものだけコピペしろ…と思うよ。
最低でも関数単位、できればロジックだけとかにしてね
後で尻拭いしないともいけない人の身にもなってね。
>>635 505系と506系は確か30KBが上限だったかと。
700系と900系と901系は100KBが上限の筈だが。
641 :
仕様書無しさん :2006/12/17(日) 17:06:58
>>638 その高度なものや大規模なものを整理して使えないなら止めとけw
>>634 リテラル値の方が関数の返り値より実行速度が上がるわけだし、
十分なコメントが付いていればいいのではないか?
と言いかけて、定数表記の方がマシだなぁと思ってみる。
//ところで「即値」って響きがすごく懐かしいんですが、そちらでは常用しているのでしょうか?
immediateは即値って言わんか?
>>641 正論だが、実際の開発現場では諸々の事情で
そうはなっていないコードが大多数な訳で、
お前のように必ず理想的なコードを書く人間だけではない限りは
机上の空論に近いと思うがね。
理想と現実の違いを考えても、尚且つ
お前は妥協なく理想的なコードを必ず書くなら、
もう言う事は何もないよ。
645 :
仕様書無しさん :2006/12/17(日) 18:21:57
>>644 あぁ、俺は理想と現実の違いを考えても、尚且つ
妥協なく理想的なコードを必ず書けるよw
もう何も言うなよな。
>>645 日本語、大丈夫か?
書けると書くじゃ意味が全然違うぞ。
かなりの自信家のようだから技術は持ってるんだろうけど、
これからずっと妥協なく理想的なコードを書くというのは
人間業じゃないくらい荒行だぞw
そういう事を易々と宣言するのも精神年齢が低そうだけど
必ず書くなら、言う事は何もないよ。
647 :
634 :2006/12/17(日) 19:32:50
ちなみに、某社のカーナビのソース。
648 :
641 :2006/12/17(日) 21:29:02
>>645 代執乙です。
>>644 >正論だが、実際の開発現場では諸々の事情で
>そうはなっていないコードが大多数な訳で、
>お前のように必ず理想的なコードを書く人間だけではない限りは
>机上の空論に近いと思うがね。
そんな環境じゃ当然、一人で組んでるわけではないよな?
それでも担当範囲とかあるんだろ?
まずは御前が整理しなけりゃ掃除ははじまんねーんだよ。
やる気ねーやつはすぐ机上の空論とかぬかすからな…。
いずれ使いまわし出来ねーだれも手がつけられないコードになるんじゃね?
>理想と現実の違いを考えても、尚且つ
>お前は妥協なく理想的なコードを必ず書くなら、
>もう言う事は何もないよ。
少しでもマシなコードにする努力はしてるぜ。
組むだけ組んでバックレ前提プロジェクトでもな!
>>648 それができるプロジェクト規模/開発残り時間があるなら誰も苦労はしない
こういう話になると、限られた中で少しでも理想に近付こうとする人間と 届かない理想など最初から目指さない人間の水掛け論にしかならんなぁ。
>>642 お前の使ってるC言語はcaseラベルに関数書けるのか
すげえなw
652 :
644 :2006/12/17(日) 23:18:27
>>648 妄想が強烈すぎて、まともな返答は難しくなってきたが
仕事はコンセンサスを取りながら進めているし、
やる気もあるし、
バックレ前提の仕事でもないし、
掃除が始まらないって
お前は何を言ってるんだ?
それよりも、自分だけはしっかりコードを組もうとしてるから
コードの品質が悪くても特別に免罪みたいな
俺様思考を読み取れるが、
お前は多少は他の人よりも優秀なんだろうが
お前の俺様思考に迷惑を受けた人も過去にいただろう。
たまにはその事を思い出して
その俺様思考をどうにかしろ。
653 :
仕様書無しさん :2006/12/17(日) 23:38:57
時間さえいくらでもくれるというなら、自身を持ったコーディングだけし続けられるけどね。 妥協と妥協しないで時間かかることを比較して、「妥協を選べ。時間がない。」と言われたら妥協せざるを得ないな。 理想に燃えると、神様が一日を72時間にしてくれるわけじゃないしね。 趣味でやってんじゃなく仕事なんだしな。今の話の流れって、趣味でやってる人の話なの?
>>653 みたいのが突然動き出すエレベーターのコードを書いたんだろーなー。
>>653 でもさ。普通、仕事って常に「妥協を選べ。時間がない。」だろ?
で、俺の見る限りでは、
そういう「仕事」ばかり10年以上やってきた人の知識って、
一般的に恐ろしく低レベルで止まってしまっている様に
見受けられるんだが、そこら辺はどうよ?
1日を72時間にすることはできんが、優秀なプログラマとそうでないプログラマの間には しばしば3倍どころでない生産性の差があるというのもまた真なり。 将来の数十時間を節約するために現在の数時間を投資するか否か、結局「先を読む力」に かかっているということだろう。上手く読めれば褒められ、読めなければ罵られる。 とはいえ、褒められることはあまりないけどな。 「デスマーチ」などの言葉に代表されるように、失敗したプロジェクトは人の記憶に残り、 成功した(特に問題が起こらなかった)プロジェクトは忘れ去られるから。
657 :
仕様書無しさん :2006/12/18(月) 01:49:39
>>654 「動けば良いから三日で全部仕上げろ、あちこちからコピペしてきたコードあるから、それはそのまま使え」
とか言われたらそうなるだろうね。
「納得できる仕事をさせてくれ」って言っても「三日以内で仕上げられるなら好きにしろ」だと、どうしようもない。
どんな仕様か詳しく知らないコードを使い回すのは、怖すぎるから嫌だけどね。
>>655 職場だけで勉強させて貰える環境なら良いが、そうでなければ休みを使って自分で勉強することになる。
責任感や好奇心やモラルや向上心が低い人は、レベルが低いままだろうね。
俺はまだ技術は低いかもだが、向上心は失ってない。
>>656 短い時間で高いレベルのものを吐き出すことが出来るようになりたいとは、日々思ってるよ。
頑張る。
> そういう「仕事」ばかり10年以上やってきた人の知識って、 > 一般的に恐ろしく低レベルで止まってしまっている様に > 見受けられるんだが、そこら辺はどうよ? 同意。そしてマに限ったことじゃない。 コボラがしばしば叩かれるのはこのせいかと思われ。 10年経たずに、10分で妥協の仕方だけを考えるようになる。 せめて半日くらい「どうやったら妥協を少なくできるか」を考えて欲しい。
659 :
仕様書無しさん :2006/12/18(月) 02:21:30
>>658 そんな人ばかりじゃないと思うんだけどなぁ…
個性出しにくい言語だけど、仮にもマなんだから、言語仕様にだけ捕らわれた思考はしないんじゃない?
いや…生粋のコボラじゃないから、知らないけどさ。
今まで、一緒に仕事したことある子ぼらは5人ぐらい。 そして内訳は まったく使い物にならないクズ・・・2人(34歳、36歳) 知識はあまり無いが、そこそこまとも(普通に大丈夫)・・・1人(38歳) 知識はそれなり、それなりに仕事できる・・・1人(42歳) かなり使える。一緒に仕事してて嬉しい・・・1人(40歳) 意外にまともな人とばっかり仕事してるかもしれん。
>>656 優秀な人とそうでない人の差が大きく違うのは同意だが
褒められるはまだしも、罵られるって
職場環境としてかなり問題があると思うぞ。
少なくても平均以上の人とは協力すべき。
というか、他人を罵倒してなんぼという価値観は
素直に同意できないな。
>>660 比率的にどこもそんなもんじゃないのかね?
へたなコードを書く人も多いのかもしれないけど
経験も長いだろうし、SEとしての知識は結構あるんじゃないの?
完全にスレ違いだけどなw
Dim lngInt As Long
>659 勿論ちゃんと考えられるマなら COBOLでもきちんとしたコードは書けるだろうが そういうマは基本的に別の言語に走ると思う 関数の定義出来ない環境多いしさ 知れば知るほど呆れる言語なのよ
まあ・・・そんなにCOBOLのことを責めるなや。 単なる化石なんだから。言語自体に罪はないよ。 問題はその言語を使いつづけるという決意にあるのだろうな。
>652 漏れは以前掃除をしようとしたら「テスト工数無いからダメ」と言われた。 「動いてるものはいじるな」が基本の世界もあるって事だ。 # そんな方針でOS書いてるからSUNに性能2桁も引き離されて最終的にアボーンだったわけだが。
※ 念を押しておくがJava if(hoge(foo) != false){ ... もう見慣れたと思っていたが、やはり一瞬眩暈がした。 書いた人は直観主義者なんだろうと思っておく。
668 :
仕様書無しさん :2006/12/18(月) 18:05:30
二重の嫌がらせ または、ちょっとしたジョーク ジョークだと思っとけば良い
>>667 直観主義者なら
if(hoge(foo) == true) {} else { ...
と書くんじゃあるまいか
670 :
仕様書無しさん :2006/12/18(月) 19:34:11
>>669 頭の中で(偽じゃなかったら)と考えたものをそのままコードにした辺りが、直感主義なんだと思ってみた
ハンガリー人との因果関係を教えてくれ 気になって眠れん
673 :
仕様書無しさん :2006/12/18(月) 21:47:39
if ( ( B == A ) && ( Y == X ) ) どうなんでしょう? 上の中括弧つけろといわれたんだけど 論理演算と比較演算のプライオリティは半ば常識だと思ってたんだけど。。。
いや、比較演算は所詮引き算だし、論理積の方が順序が上がる可能性がなくは無いと思うぞ。 仕様に因るが。
可読性の問題でしょ
wっうぇww4秒差ww
>>678 アセンブリ言語を良く使う人にとっては常識。
引き算して、桁貰いがあるか、答えが0か、それ以外か とかで大小を判別する。
高水準言語ばっかりやってると分からんだろうが。
682 :
仕様書無しさん :2006/12/18(月) 22:18:05
なるほど、俺の中では無いほうが(かっこの頭とケツを追っていくのが苦手で)判りやすいと思ってたんですが、
実際は逆なのですね。ありがとう。
>>679 それは初耳でした。奥が深いものですね、
683 :
仕様書無しさん :2006/12/18(月) 22:41:43
誰が見ても(他言語の仕様と混同しちゃう人もいるかも…いや、居ないだろうけど世の中広いし居るかもしれない)、優先度がはっきりするように()付けとく方が、他の人が保守したり手を付けるときにミスが減りやすい…………かもしれない。 まぁ、おまじないだよね。 i+p*3+num*2+iとかでも、四則演算の優先度なんてわかりきっててもi+(p*3)+(num*1)+iとしといた方が、間違いが起こりにくい…………と良いなぁ、みたいな。 ミスとかじゃなく、わかってやってるからねって意思表示と、パッと見の見やすさ。
>>631 utime()よりtouchのほうが簡単だろ。。
なんで、俺のコーディングルールがこのスレに沢山書いてあるの?
>>684 >>631 は「というか、UNIXの標準的な関数だと思ったが・・・」
ってさも当然のように言って、自分が優れている事を誇示したいだけだから。
C言語の演算子の優先順位は一部直感的に違和感あるのがあるので それで他人がはまってたの見て以来、括弧は極力つけるようにしてる
そうだね。たしか段階数は14だか17だったね。 自分はそんなもの記憶できる人間じゃないし
>>631 俺んとこの後輩が書いたのみたいだw perlだけど。
system("cat hoge");
とかなんかは普通にやる。
俺が書いておいたシェルスクリプトが、
system("bash hoge.sh");
で起動されていたのを発見したときはヘコんだ。
690 :
仕様書無しさん :2006/12/19(火) 08:20:16
でも、有り物のツールを応用するって、むしろ好ましいスタイルじゃね?
いやいや、問いに解答しただけでスレ違いはないだろ。
692 :
仕様書無しさん :2006/12/19(火) 12:50:45
>>691 遅レスするなら、安価つけなよ。
仕様ってわけじゃないから、強制はしないけど。
んで、同意。
レスに質問来て答えたら「スレ違い」と言われ、誘導されたのが違う板とか、あまりに亜空間過ぎて笑えた。
意味不明なGOTO文みたいだし、
>>680 のコード(判断処理と誘導)が下手すぎる。
仕様がおかしいなんてのは、アフリカではよくあること
>694 日本から見て西とか北西のとある国では、もっとだ
696 :
仕様書無しさん :2006/12/19(火) 18:34:21
とある国では 仕様がおかしいどころか、仕様が無い その時々で、都合が良い仕様を捻り出す 誰にも通じない、誰にも認めてもらえない仕様 最凶
わざわざ西に行かなくても、日々そんな状況ですが何か?
698 :
仕様書無しさん :2006/12/20(水) 01:30:16
SendMessage こんなクラス名があると萎える。 クラス名は名詞にしろと。 MessegeSenderだろと。
>>698 所謂機能分解ってアンチパターンだな。
おそらく設計書の段階で「メッセージ送信」というアクティビティが定義されていたのだとおもわれ。
700 :
仕様書無しさん :2006/12/20(水) 11:22:56
「送信に使うメッセージ」だと直感してしまった
VCでビルドできません!!!
702 :
仕様書無しさん :2006/12/20(水) 15:29:15
>>700 俺も。
SendMessageってメソッドとして見たら
「メッセージを送る」メソッドだけど、クラスとして見たら
「送信するメッセージ」のクラスだよな。
どんなメンバ持ってるのか知らんけど。
704 :
仕様書無しさん :2006/12/20(水) 21:17:23
>>698 名称なんてどうでもいいよ、アメリカ人じゃないし。
中身が分かりやすければ名前なんざ適当でいい。
それが嫌なら自分で命名規約作ってプロジェクトメンバーに周知徹底させろ。
既存メソッドも全部その命名規則に改名させろ。
もちろん、そんなのに会社がコストかけるわけねーから、
休憩時間もしくはサービス残業でやれよ。
後、過労死されたりしても会社に迷惑かけるから死ぬなよ。
それと当然分かってると思うがそのくだらん名称変更で劣化やバグ埋め込んだら責任取ってクビな。
SendMessageAction extends ActionBase とかだったらまだ分からんでもない
char *str = {'s', 't', 'r', 'i', 'n', 'g'}; // 実際はもっと長い文字列 意 味 わ か ん ね え 何で普通に文字列リテラルで初期化しないのか…
'¥0'がないのなら、C文字列じゃなくてあくまで文字の配列なのかも しれない。
>>707 そうだな。俺もそう思うかもしれない
でもそのずーーーーーーっと後でprintfしてるんだぜ…
出力は勿論stringフフフフフフフフフフフフフフフフフフ
わろすフフフフフフフフフフフフフフフフフフ
そりゃひでえフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
わかった、grepできないようにしたいんだ。
じゃあ '\0' も入れろやw
707さんと同じ感想だったのに、そんな落ちかorzフフフフフフフ
>>712 よし、コメントは隅っこに小さく書けばいいんだな。
// 21時以降の通話は(ry
フフフフフ
ワロタフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ フって\0が見つかるまで永遠につづくんかね?
printfの定義からすればそう
これは酷いフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
ここはフフフインターネッツですねフフフフフフフフフフフフフフフフフフフフフフフフ
フフフフフフフフフフフフフフフプフフフフフフフフ
いつまでやってんだよハゲフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
722 :
仕様書無しさん :2006/12/21(木) 01:53:52
>>704 いや、命名規約とかの問題じゃなくて。
クラス名に動詞を使ったりする人は、
オブジェクト指向がわかってないんだなー。
って思うんだよ。
そーゆー人の設計、大概ぐだぐだだし。。。
命名規則が適当で一貫性のない人は、コードも行き当たりばったり。 識別子名にスペルミスが多い人は、コードの中身もずさん。 これは9割方真実である。
ばっくれるために意図的にコードを適当に書いている場合もあるぞ
>>706 '\0'を入れないことでprintfする際に長い文字列が表示されることを期待していて
かつ本当はもっとそれよりも長い文字列なんだよ、といいたいんでは
やぁ。久しぶり。
>>726 遊んでた頃はなんでこんな名前になってんだと思ってたけど
プログラムある程度わかった今だから笑える事だな。
メモリは大抵の処理系では0xCCで初期化されてるのかな。
728 :
仕様書無しさん :2006/12/21(木) 11:09:36
VCのデバッグモードだけだろ
>726 RO?
>729 呼んだ?
フフフフフフフフ
>>703 何が問題なのか一瞬分からなかったが、クラス名ね。うんわかった。
733 :
かにニッパ :2006/12/21(木) 20:26:51
>730 やっぱりそうか
ごめん。くだらんネタでageちった。死んで詫びる。
735 :
仕様書無しさん :2006/12/21(木) 20:59:51
0xccってヒープじゃなかったっけ?フフフフフフフフフフフフフフフ
ヒープは.0xcdじゃね?
0xccは 11001100
738 :
仕様書無しさん :2006/12/22(金) 00:34:01
C++ってあんましおぶじぇくと嗜好しないほうが使いやすいよな・・・ Javaでいいや。
739 :
仕様書無しさん :2006/12/22(金) 00:39:23
例外処理が書いてないコード。あと、すぐ上に似たメソッドがあるのに 影響範囲増えるからとかめんどいとかの理由でコピペして名前と処理をちょっと変えるだけのコード
>>739 言語や使用している箇所にもよりけり。
それだけじゃぁね〜・・・。
影響範囲を全てフォローしきれん状況もあるしなフフフフフフフフフフフフフフフ
影響範囲を変えることで仕様変更やバグ潰しの為の工数がフフフフリ
winのapiでもexのついたやつがたくさんあるな。
いっそのこと、WindowsEx
Windowsフフフフ
ShiftJIS禁止
Object checkNull( Object o ) { if( o == null ) { return null; } return o; } void foo( String s ) { if( checkNull( s ) == null ) { return; } // : // : 処理 // : }
ヘタつーか最適化されて消えそうなコードだな。
MFCのコードってヘタで最適化されて消えそうなコードが多いよね。 Microsoftの技術者の中でもトップクラスの人たちが書いてるにもかかわらず。
ヒント:メンテしやすさ優先
そう思ってる奴は頑張って勉強してトップクラスの人たちの負担を減らしてあげてくれ
やーだね
まー、最適化されて消えるようなコードでも、読みやすさに貢献するような ものならいいんだけどねぇ。
/ ̄ \ __0⌒> ヽ / ∩⊂ニニニ⊃∩ / | ノ ヽ | / ● ● | メリークリクマース! | | ( _●_) ミ | 彡、 |∪| 、`\ | / __ ヽノ /´> ) \ (___) / (_/ \ | /  ̄ ̄| /\ \ | / ) ) ∪ ( \ \_)
むしろ最適化で消してもらうのを目的で冗長に書いたりすることもあるような、ないような
>>750 >Microsoftの技術者の中でもトップクラスの人たちが書いてる
ように見えるか?あれが?
コーディング規則が無いかのようなコードを書くなんて よっぽどな技術と自信に裏打ちされたものだと思ってましたが何か? 1文字、2文字変数が多いなんて 誰からもレビューを受けず、誰からも注意されないなんて よっぽど偉い人たちなので誰も言えなかったものだと思ってましたが何か? いきなりクラスをmemsetで0クリアなんて C++に精通したプロふぇっ所なるしか出来ない業だと思ってましたが何か?
いえ。何も。
クラスとインスタンスの区別ができていない>758に拍手!
std::vector<musaiclass*> vpmusai; いやぁぁぁぁぁ
musaiclassだからじゃね?
kakkoiiclassなら問題ないってことか
vpmusaiを破棄してもmusaiclassのデストラクタが呼ばれないから? だとしたら面倒臭がりってだけか。
C++しばらくやってないんだけど vector<musaiclass&> はアリだっけ?
× vector<musaiclass&> ○ vector<kakoiiclass&>
>>766 インスタンスが別管理になるけど、それでよければアリ。
>>761 メンバとしてならありかもな。
単体ではちょっと。
string(string(FOO)+string(BER)); vector<vector<vector<vector<boo>>>> v;
int i,j; をループ変数以外に使う奴。
まず i, j, k ときて、流石に l を使うのは気が引けたのか ii, jj, kk。「おいおいまさか……」と思ったが、期待を裏切ることなく iii, jjj, kkk, ……
i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, ia, ib, ic, id, ie, if, ・・・
array[ hoge[ i + j ][ foo(j) ] ] 配列要素の中に別の2元配列やら処理がイパーイ
>>776 arrayよりhogeのほうが容量がでかかったりする悪寒。
間接参照構造なんか作らずhogeにデータ入れたらええやん、みたいな。
778 :
仕様書無しさん :2007/02/06(火) 22:00:36
Try …(数百行のコード) Catch MsgBox("予期せぬエラーが発生しました。") End Try
779 :
仕様書無しさん :2007/02/06(火) 22:07:21
vbに限らずそれはよくある
>>778 はVB6だと
Private Sub Hoge()
On Error Goto ErrTrap
・・・(数百行のコード)
Exit Sub
ErrTrap:
MsgBox("予期せぬエラーが発生しました。")
End Sub
UIにあたる上位階層では、例外をキャッチして何かしらの アクションをせねばならぬと思う。 しかし・・・しかし、下位階層で全ての関数で例外を握りつぶしたり、>778>780 のような実装をしている時は、殺意が芽生える。 例外テスト時とか悲惨な結果になる。
>>782 下層で、MsgBox("エラー")なんてやられると殺意覚えるな。
>>783 梶@IW の女性社員はそれがデフォでつよw
女は観賞用で、仕事にしゃしゃりでてきてほしくないな。
ブスならいいのか
ブスは存在禁止
>787 ピザデブは虹でも追いかけてろよキモイから。
>789 どうせピザデブどもは下層でも Private Sub Hoge() On Error Resume Next ・・・(数百行のコード) On Error Goto 0 End Sub とかやってるんだろ?クズが。
791 :
仕様書無しさん :2007/02/08(木) 13:40:58
>>790 ブスがまたキレた!!
ブスはぶいびー限定らしいwww
VB ブビ!!
>791 どうせピザデブどもはwebアプリでも #!/usr/local/bin/perl eval { ・・・数百行のコード }; sub hoge { eval { ・・・数百行のコード }; } とかやってるんだろ?クズが。
ノリのいいブスだw パールを選択するところもw
ブスは生存禁止
>794 ピザブタにパールじゃ何にも出来ない罠。 >795 ピザデブの生存は禁止しないがタコ部屋から出てくんな。
ぱっと見てどうかと思う>パールってカナで書くヤツ
>797 仰るとおり。ピザブタに言ってやってくれ。 まあ忠告もブタに真珠だろうけどな。
799 :
仕様書無しさん :2007/02/08(木) 21:06:03
ブスがこのスレに居ついてるwww
こうまで必死なのはやっぱり、自分が呼ばれたと思って
>>788 でうっかり返事しちゃったからなのか。
ブスってたいてい性格もブスなんだよな
802 :
仕様書無しさん :2007/02/08(木) 22:08:02
>>801 確かにww
ここに居ついてるブスも、文字だけで不快になるドブスwwwww
おまえら小学生か
804 :
仕様書無しさん :2007/02/09(金) 08:57:36
さぁ、さぁ、空気を読みつつ面白いクソソースをさらして いこうじゃないか。 ブスの次ネタに期待あげ。
この前見つけたピザデブのクソコード int hoge(int var, char *foo){ int checkval; ・・・数十行のコード /*---1999.08.14 連携の問題で動かない。リリース前にコメント外す By ピザデブ ---*/ /* checkval = other_modules_function( boo, puu ); */ ・・・数十行のコード(checkvalは使ってない) } もうとっくにリリースしてるんですが、どうしてコメント外さないの? ってか、使ってない復帰値拾ってるし。結局使わなかったならコメント自体消しとけYO。 こんなソースメンテするのヤダ。ピザデブは人の話を聞かないんだから。 しかし仕事だからやらねばな。orz
806 :
仕様書無しさん :2007/02/11(日) 00:04:52
うちの10年選手のコード。 ちょっと書いたらあとはコピペ全部コピペしようとする。 別プロジェクトなのだが、一緒に仕事はしたくない。 if(IsAAA == true) { Zura++; ZuraSyori(Zura); ReturnValue = HageSyori(1, 2, 3); if(ReturnValue == 4) { Zoumou(6); return 4; } } else { ZuraSyori(Zura); ReturnValue = HageSyori(1, 2, 7); if(ReturnValue == 4) { Zoumou(2); } } return ReturnValue;
ハゲかよ
>>807 そう、30中盤で結構いっちゃってます。
タマに生えている毛みたいな感じでちょっと卑猥です。
>>806 ひまなんでリファクタリングしてやったぞ。
:
{
if(IsAAA) {
{
return Ikumou(++Zura, 3, 6);
} else {
return Ikumou(Zura, 7, 4);
}
}
muda Ikumou(Zura, ke, abura) {
ZuraSyori(Zura);
ReturnValue = HageSyori(1, 2, ke);
if(ReturnValue == 4) Zoumou(abura);
return ReturnValue;
}
//2の補数を計算する (十数行のコード) バグがあったので俺が a = -a; というように直した。
テラワロスw
ひまな
>>809 と
{
if(IsAAA){
++Zura;
ZuraSyori(Zura);
return Ikumou(3, 6);
}else{
ZuraSyori(Zura);
return Ikumou(7, 4);
}
}
muda Ikumou(ke, abura) {
return HageSyori(1, 2, ke, abura);
}
muda HageSyori(fuke, kusi, ke, abura) {
...
if(ReturnValue == 4) Zoumou(abura);
return ReturnValue;
}
のコードとどっちが下手かの話がしたい
813 :
仕様書無しさん :2007/02/12(月) 23:53:43
σ(・_・)の仕事場の話。 やっぱり「禿げ」はダメだなぁ。なんて言うか…美しくない…コードも頭皮もw 「禿げ」に限ってコピペ厨って思うのは、私だけ???
>>813 なんというか、仕事をする上ではハゲはイケメンよりずっと得。
チビ・デブ・ハゲは二十代でも見た目が部長クラスに見えるから
嘘でも威厳があるんだよね。
実力より5割増しで評価されてるような感じ?
漏れの部署のチビ禿げもコピペ厨。しかもVB6しかできない。
チビ・デブ・ハゲに加えて社長の息子とあっては、誰も口出しが出来ないウチの会社。
char buf[200]; unlink(FILE); fp=fopen(FILE,"a+"); memset(buf,0,200); sprintf(buf, "%d.", hoge ); sprintf(&buf[6], "%s\n", hoge2); _write( _fileno(buf), buf, strlen(buf) ); どうしてくれようかと思った・・・
>sprintf(&buf[6], "%s\n", hoge2); プレフィックスの文字数が決まってるならやりたくなる気持ちも解らんでは無い
いや、その前にここだろ。 _fileno(buf) bufにファイル番号なんてねーよww
何故コードの後にあるものをその前に
>memset(buf,0,200); これ入ってる時点でダメグラマ確定だろうに。
>>821 直後にデータ(しかもNULターミネート文字列)を書き込むことにしか
使ってない領域をゼロフィルして何の意味があるのかと。
memset(buf,0,sizeof(buf)); にしろってことだろ。
char buf[200]={""};
>>824 その初期化って何か気持ち悪くて好きじゃない。
そうですか。 で?
そ で
>>816 そもそも、文字列中に '\0' が入るってどーゆーファイルなんだ。
あ、いや排卵な。失敬。
痔もちのこぼらー乙。
>>831 文字列の初期化で問題なし。
こんな初期化しないけど。。
>>832 なるほど、確かに問題ないようだ。
使わない構文はドンドン忘れていくモノだなぁ…(こんなの覚えてなくていいけど)
>>834 数間違えてるよ。
フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
だよ
どうでもいいよフフフフフフフフフフフフ
>数間違えてるよ。 ぬるぽってるのに数もなにもないんじゃね
ガッフフフフフフフフフフフフ
839 :
仕様書無しさん :2007/02/17(土) 13:50:02
おkフフフフフフフフフフフフ
おまいら '\0' 忘れすぎw
アラアラウフフ
ここもフフフフスレになってるし・・・フフフフフフフフフフフフ
>>842 禁止フフフフフフフフフフフフフフフフフ
その規約決めた奴に理由を聞きたいところだな。
>>846 「変数を初期化するのは当たり前だ」
という返答がくるよ。
以下、何が当たり前なのか議論が始まります
先発として「mallocしたメモリはfreeするのが当たり前」君が登場。
exit前にfreeするべきかどうか論争が再び。
あたたり前 の検索結果 約 1,060 件中 1 - 10 件目 (0.50 秒)
送りがなの本則の話がしたいのかな? 最小の語尾のみをかな書きするのが 本則だが、この場合は「当てる」という言葉もある関係上「た」から送る ことになっていたり。
当たりで問題ねーだろハゲ なんで中途半端に平仮名にしてぐぐってんのこのハゲ
おまいらがデバッグしているそれはソースじゃねーぞ。
そーすか
856 :
仕様書無しさん :2007/02/20(火) 02:52:29
そーっすよ
その根拠のソースは?
そ〜すねぇ
俺の手が入ったコード
860 :
仕様書無しさん :2007/02/28(水) 16:08:36
条件文を必ず1行で書きたがる奴がいて、どうやら1行で書けない奴は頭が悪いと思っているらしい。 可読性を重要視する俺は意味的に別な判定は次ブロックにしたりするんでこいつといつも衝突する。 何がそんなに気に食わないんかねぇ。
長さにもよるけど一行の方が可読性が高いと思ってる可能性は? 意味的に別な判定をわけるのは構わんけど わければ必ず可読性があがるというもんでもないと思うぞ。
本人にとってはどっちが可読性高いか。少し想像すれば答えは判るわけですよ。
そういう制約をつけると、 頭の悪そうな長〜い1行が出来るか、 頭の悪そうな省略シンボル名乱用の どっちかになるような悪寒。
複数行に分ける必要のある条件式を書くこと自身が信じられん。 俺みたいな無能には1行で納まる程度の簡潔な条件以外は読むのが苦痛。
そんなにややこしいなら名前を付けてマクロなり関数なりに括り出せ。 それすらできないコーディング規約で運用してるところもあったりするが。
なんかよく分からんが if (hogehoge・・・・・・・・・・hogehoge && hagehage・・・・・・・hagehage && moemoe・・・・・・・moemoe) みたいな書き方するけど、見にくいでつか?
うn
>・・・・・・・・・・ この辺が特に。
869 :
仕様書無しさん :2007/03/03(土) 18:47:40
870 :
仕様書無しさん :2007/03/03(土) 19:04:45
これだからシンボルがUnicodeの言語は…
871 :
仕様書無しさん :2007/03/03(土) 19:56:21
シンボルロック
if ( hogehoge && hogehoge2 && hogehogehogehoge・・・・gehogeho ) { } やっぱこうだろ?
if ( 1 && hogehoge && hogehoge2 && hogehogehogehoge・・・・gehogeho ){ } とか好きだけどな〜
1はいらねえ。。
if ( hogehoge(0) && hogehoge(1) && hogehoge(2) && hogehoge(3) )
i=0; if ( hogehoge(i++) && hogehoge(i++) && hogehoge(i++) && hogehoge(i) )
>>877 あ、それ俺だ ^^;
つーかね・・・
テキストエディタだけで、SQL組んでると、そうするのが、楽なのだよ。
>SELECT >,aaa エラー出ねぇか?
>>879 orz...
たいていこうするよ。
SELECT aaa
, bbb
, ccc
, ddd
FROM TABLE
WHERE aaa = hoge
AND bbb = fuga
AND ccc = hage
ORDER BY aaa
, bbb
, ccc
;
スレタイ通りのレス乙。
ちょっと違うぞ。 下手なソースを晒すのだ。バグソースじゃない。
885 :
仕様書無しさん :2007/03/18(日) 21:35:30
>>877 ごめん、カンマを前に書いちゃう。
カンマが揃ってるほうが見やすいし、矩形選択しやすいから
他の人が後ろにカンマ書いても直しちゃう。
886 :
仕様書無しさん :2007/03/18(日) 21:39:56
一画面に収まりきらないぐらいIF文でネストしたAccess2.0のソース。 はじめ、ずいぶん長い空行だなと思った。
矩形コピペとキーボードマクロを重宝がってるプログラマは信用できないよね。
今書いてるコードを半年後に見るとスレタイと同じ気持ちになれる 同意する奴いたら挙手ノシ
889 :
仕様書無しさん :2007/03/18(日) 22:42:44
>>885 規約違反ならまぁ仕方ないが、他の人のソースまで直すなよ。
>>888 それは普通だと思う。
そう感じない奴は、進歩のないアホか、全てを会得した神か、どちらかだな。
>>876 結構よく見掛ける、普通なのか?
オレ嫌いなんだけど
んじゃどう書くのよ
&&なら評価のされ方は言語仕様で決まってるからアリナシでいえばアリか。
>>890 普通じゃない。
>>888 が成立するのは初心者の内だけだ。
コードスタイルが10年以上進歩を続ける奴なぞいないよ。
>>894 いえてる。
初心者のうちならコーディングスタイルはあまり問題じゃないけど
長期間染まった人間にとっては宗教問題だからなぁ・・orz
いつのまにかスタイルの話に。
ふくらみかけが丁度良い
(! ̄д ̄)えぇぇぇ
>>894-895 技術者なら一生勉強中!
さすがに半年程度ではさほどorzにはならんがな。
あ、俺も。 >894-895 (! ̄д ̄)えぇぇぇ
>>886 よくあるよくある。
分割の根拠がよくわからん、やたらと長大で多機能な関数(高機能ではない)もありがち。
引数の7個目くらいにさりげなく付いてるフラグで全く別の処理をしたりするやつ。
長年書いてるとインデントとか空白とか改行の位置とか 常識的な範囲ならどうでもよくなるよな 自分のスタイルはあるわけだが 人のも許容できるというか 本質はそんな場所じゃない みんな木じゃなくて森を見ようよ
ぱっと見て「ヘタだなぁ」と思うコードを俯瞰したら死にたくなると思います。 足元のちょっと手前から視線を上げずに生きてゆきましょう。
書いてるしりからヘタだなあと思いながら仕事してるよ。 できうる限り、自分なりに最適化はしている。でも限界。
>>902 「神は細部に宿る」という先人の言葉を武器にするつもりは無いのですが。
森ばかり見ていると落とし穴に落ちますよ。
木も森も双方が本質なのです。
そういう抽象的すぎる話って、意味のあることを何も言っていないのと同じじゃね?
907 :
904 :2007/03/20(火) 21:02:35
>>906 そうですか。抽象的過ぎますか。
貴方は「意味のあることを何も言っていない」と解釈したレスに
反応することがご趣味なのですか?
908 :
仕様書無しさん :2007/03/20(火) 21:30:12
>>907 意味無いことは愚痴スレかチラシの裏にでも書いとけボケ
>>908 貴方もわからない人ですねぇ。意味が無いと解釈したのは貴方です。
「貴方が意味が無いと解釈したならスルーすれば良いのではないですか」と言っているのですよ。
少なくとも自分は意味のあるつもりで書きましたけどね。
自分の解釈が唯一無二の解釈だと思っておられるのですか?
911 :
仕様書無しさん :2007/03/20(火) 22:01:08
>>910 そんなの分かってるだろ。よっぽどバカじゃない限り。
8ヶ月前に汎用性を重視して書いたコード数千行をそのまま別のプロジェクトでコピペして何事もなくコンパイル通ったのは感動と共に途轍もなく恐ろしいものを感じた。
そりゃ、動いているのをコピペしたら、コンパイルは通るだろ。
機種依存バリバリのコード数千行がそのままをそのまま別のプロジェクトでコピペして何事もなくコンパイル通ったら すごいといえるだろう。 その上一発で動いたらまさに奇跡
>>915 機種依存コードを他の機種に持っていったら動かないだろ。
機種依存コードを同じ機種に持っていったら動くのは当たり前だろ。
プロジェクト関係ないよw
>>901 あるあるww
if文だらけにしてイミフなの。
>>901 あべしの連中が、変な教育受けてるのか知らんがよく
「共通化しました」って書いて持ってくる。>多機能な関数(高機能ではない)
>>906 「なんか俺いいこと言った!」と本人が感じることこそが大事なのです。
所謂オナニー。
プログラマー珍規約好規約 の方がネタ的に面白くね?とか思った、どうでもいいですよねごめんなさいごめんなさい
ちりこ卒業 キ━タ━━(V)(゚∀゚)(V)━━━ !!!
チリコ キ━タ━━(V)(゚∀゚)(V)━━━ !!!
すれ違いスマソ <(_ _)>
気になってしょうがない俺ガイル。
脚フェチだらけw
926 :
仕様書無しさん :2007/04/21(土) 00:43:25
for(i = 0; i < 10; i++) { switch(i) { case : 0 ;//何か処理 break; case : 1 ;//次の処理 break; case : 2 ;//その次の処理 break; : : } } 見たいなのたまに見るんだけど何か意味あるの? 普通に順番に書くのと何か違うのか?
あ、コロンと数値が逆だ 俺が下手糞だね
Duff's deviceみたいなのを書くことはあるかも知れない。 いまさら無意味だろうけど。
VBプロジェクトの下のフォルダが ツリー構造を通り越してもはや山脈のようにorz
>>926 case内で i を操作してる?
そうだったら最悪だ。
インデントの幅を、そのときの気分で決めやがるんですよ。 6だったり10だったり、13だったり。 注意しても直らねぇ。部署が違うからキツく言えない。 その屑ソースをメンテするのは俺。 もう、泣きたい。
あと、ANDとORが混在した条件を書くのに、括弧を一つも使いやがらないんですよ。 案の定バグってるし。俺の責任にされかけるし。 もう死にたい。
社内でPython広めたら? インデントの癖くらいなら直るでしょ
いいね。自分のコードが通らずに混乱する姿が想像できる。 今度、小物ツールとか作る機会があったら、そいつにPythonでさせてみる。
私はツール使って一括インデントしなおししております。 今はC++でvimなので、初めて触るソースは速攻gg=Gだな。 # gg :先頭行にジャンプ # =G :カレント行からファイル末尾までインデント
ソース管理ツールを使ってると、ツールで一括して整形するってやりにくい。
>936 そうか?
938 :
仕様書無しさん :2007/04/22(日) 10:43:32
>>936 そんなこと無い。
まぁcheckoutする手間が増えるといえば増えるけどな。
939 :
仕様書無しさん :2007/04/22(日) 11:16:48
うわあすげえクオリティーだなこのスレ
>>936 はdiffとったときに分かりにくくなるとか、サイズが増えることを言ってるんだろ。
空白を無視してdiffとることもできるが、文字列中の空白文字とか困るしな。
構文木としての比較ツールつくってよ
>>941 詳しくお願いしたい。
比較ツールは限定された仕様のものしか存在しない と思っているので。
むかしBitかInterfaceで読んだ記事に、学生が課題で提出したコードを構文 木に変換して比較することでコピーを検出する話があったのを思い出した。
>>940 それってソース管理ツール使う/使わない関係無いんじゃないか?
ソース管理ツール使わない場合でもdiffとったら分かりにくくなるし。
>>940 そう。
ソース見るのに、無条件に整形ツール通して、修正→チェックインってことになるだろ。
>>935 修正した箇所と関係ない場所まで、変更されてる可能性がある。
インデントの変更だけなら、オプションで無視できるけど、やっぱ気持ち悪い。
タブをスペースに変換して保存す設定でエディタを使ってるやつと仕事をしたとき、吐き気がした。
>945 個人的には、タブをスペースで保存する奴より タブとスペース混在させる奴のが苦手だけどな。 普段使うタブ幅が違うとインデントがグチャグチャに…
>>947 元がタブなソースにスペースでインデントしたりとか。
>>948 プログラムは動けばなんでもいい派か・・・
たち悪いな
>947 ハードタブ:8でインデント:4とか。 UNIX系のソースで見かけるな。
>>946 元ソースがタブ使ってるのに、片っ端からスペースに直しちゃダメじゃん。
>>950 emacsとか、デフォは、インデントはスペース2コで、8の倍数のときだけタブとかって設定だっけ?
キチガイだよな
めんどくせえからコミットをフックして 強制的にフォーマットかけちゃえ
955 :
仕様書無しさん :2007/04/23(月) 01:17:33
grepで一括置換しちゃえばいいじゃん
while(true) { // なんかの処理 if(xx) { // エラー処理 break; } // なんかの処理 if(xx) { // エラー処理 break; } break; } 意地でも goto 使いたくなかったんだな…。
一括置換はsed
最後のbreakはなんなの
>>958 >最後のbreakはなんなの
それが分からないと、
>>956 の話の内容が
全然分からないと思うのだが・・・
せめてdo{}while(0)にしようよ
面白いソースの間違いじゃないのか?それw なんか機械語になったとき殆ど変わらない気がするが・・・・
>>960 は古いCでブロックを作る書き方だが...
switch(true) { case hoge1.checked: foo(); break; case hoge2.checked: bar(); break; case hoge3.checked: foobar(); break; } hogeはなんかラジオボタンみたいなものだとして、 この書き方って普通?俺は使わん。
意味がわからん
>>964 if...else if...じゃだめなの?
switch文ってもしかしてif文に展開されるの?
ラジオボタンならtrueになるのはひとつだけ trueで評価すればcaseにあたるものがtrueになったとこだけ入るから見やすいのは確かだと思う しかし、caseが変数ってのがまず直感的でない
caseラベルに変数が使えるのってどの環境だ?
>>967 if文に展開されることもあるし
最適化が効いてジャンプテーブルになることもある。
>>969 例えばPHPならcaseに変数が使える。
が、WebプログラムだとPOSTの内容を改ざんできるからこの書き方はまずい。
switch文がifに展開されるかどうかはコンパイラしだい コンパイラによってはどちらにするか、あるいはコンパイラに任せるか プログラマが選べるようなオプションが用意されている
「switchがifに展開される」って言い方はヘンだろ。 言わんとしてることはわかるけど。
>>877 いまさらなんだけど、何でだめなん?
英文のカンマの打ち方としては変なカンジだけど、拒否するほどじゃないような…
switch(sw) { case 1: func(1); break; case 2: func(3); break; case 3: func(5); break; case 4: func(4); break; case 5: func(2); break; } こういうの、俺はやなんだけど、普通なのかな。 なんか、ボタンを押したときの処理を振り分けてた感じだった気がする。
>>975 これくらいなら
if (...){
refTable[] = { ... };
someValue = refTable[sw];
func(someValue);
}
かなぁ。程度によるけど。
それは・・・ swと実引数との整数値の対応付けをする2*nの定数値のテーブルを作って ループを書くほうが普通かと
978 :
977 :2007/05/07(月) 01:40:06
>>975 ごめん。そっちのほうが良いね。
スタートの数値を間違えなければ。
979 :
978 :2007/05/07(月) 01:48:23
たびたびゴメン ×975 ○976
>>975 つーかdefaultが無いのは如何なものかと・・・
そういえばdefaultをswitchの直後に書く人がいたなぁ
ウチの外注さんもdefaultを先に書く。なんでかな。
それって言語によってはヘンな挙動にならね? 気のせいかな
VCで試したら出来るな。 初めて知った。
default 先に書いたら、実装によっては default 内しか実行されないものが出来上がりそうだ
987 :
985 :2007/05/08(火) 20:32:25
>986 いや、論点そこじゃないんだが…
>>982 「普通は〜、但し〜のときは〜」という表現が好きなんだろう。
>>983 >>985 気のせいだろ。「言語」が csh か PHP かは知らんが。
class Parent { protected boolean isChild; public Parent() { isChild = false; } public void aMethod() { if(isChild) { //... } else { //... } } } class Child extends Parent { public Child() { isChild = true; } } ええぇ〜。と思った。
>>989 オブジェクト指向なんかやめちまえって感じだな
いいなコレ マジワロス
エラーだから閉じなきゃ。 try{ InputStream.read(Buffer); }catch (IOException ex1){ try{ InputStream.close(); }catch (IOException ex2){ try{ InputStream.close(); }catch (IOException ex3){ try{ InputStream.close(); }catch (IOException ex4){ try{ InputStream.close(); }catch (IOException ex5){ : : } } } } } 助けて・・・( >< )
スルー
('A`)
面白いコードだろ、それw ・・・・まぁ実際に見せられたら反応に困るんだろうな・・・・・
どう考えてもネタなのでスルー どんなにアホでも3段目書いた時点で気付くだろ
書き出す前に気付くPGになって欲しい
わんぱくでもいい たくましくそだってほしい
1000ならネイティブC#でる。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。