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

このエントリーをはてなブックマークに追加
1仕様書無しさん
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板に逝って。
2仕様書無しさん:04/08/09 22:29
3仕様書無しさん:04/08/09 22:44
あいや、#Eは落ちたか……
ともあれ>1乙
4仕様書無しさん:04/08/10 07:05
さらに即死までしような勢いなのでage
5仕様書無しさん:04/08/10 14:49
葡喘
6仕様書無しさん:04/08/12 02:56
>2
>F: http://pc5.2ch.net/test/read.cgi/prog/1084532091/ (dat落ち中)

早すぎ
7仕様書無しさん:04/08/12 03:09
/* ROOP */
for(…) {
  …
}

中学から英語やり直せと。
8仕様書無しさん:04/08/12 03:11
if(条件A){
 if(条件A){ /* 念のため */
  :

...泣くぞ
9仕様書無しさん:04/08/12 03:19
>8
ハゲワラ
10仕様書無しさん:04/08/12 03:23
>>8
 ワロタ!!

 俺はそうだな、おもしろくはないが、VBの標準モジュールで
100行以上にわたるPublic変数の宣言を見たときウンザリした覚えが。
ちなみにそこは辞めたけどなw
11仕様書無しさん:04/08/12 08:15
>8
スレッドが絡むフラグの場合そういう判定をすると聞いたことがあるが……
12仕様書無しさん:04/08/12 08:17
いずれにしても、殴り書きしたか、よほどの
バカとしてか思えないようなif文てのは、
よくある。
イヤガラセとしか思えないようなネストの
オンパレードとかあるからな・・・
13仕様書無しさん:04/08/12 09:17
熟練度はifとループの仕方がどれだけうまいかで分かる罠
14仕様書無しさん:04/08/12 09:48
>>11
聞いたことがある、って……おまえ……。
Double-checked locking と言って、スレッドを使ったプログラミングでは必須のテクニックですよ。

if (!リソース使用中)
排他処理
if (!リソース使用中)
リソースにアクセス

ってね。念のためにやってるわけじゃないよ。
15仕様書無しさん:04/08/12 11:08
>>14
test and set
の命令があるから不要です
16仕様書無しさん:04/08/12 16:24
>>14
>必須のテクニックですよ。
ださ…
>if (!リソース使用中)
>排他処理
ここがアトミックじゃなけりゃ意味ないって。
17仕様書無しさん:04/08/12 16:45
triple-checked でも塞ぎきれないのがわかったんで結局ロジック変えろって話になってなかったっけ?
18仕様書無しさん:04/08/12 17:37
「double-checked lockingとSingletonパターン」
この破たんしたプログラミング・イディオムを多角的に検討する
ttp://www-6.ibm.com/jp/developerworks/java/020726/j_j-dcl.html


要約

プログラマーたちは、Singletonで高コストな同期化を回避するために、工夫
を凝らして、double-checked lockingイディオムを考案しました。残念ながら、
このイディオムが、現行のメモリー・モデルが原因で安全なプログラミング構
成概念ではないことが明らかになったのは、これがかなり広く使われるように
なった後のことでした。メモリー・モデルの、ぜい弱な部分を改良するための
努力が行われています。しかし、新しく提案されたメモリー・モデルでも、
double-checked lockingは通用しません。この問題に対する最良の解決策は、
同期化を受け入れるか、あるいは static field を使用することです。

19仕様書無しさん:04/08/12 19:24
なるほど!
20仕様書無しさん:04/08/13 01:09
>17-18
出るとは思ってたJavaの話…
21仕様書無しさん:04/08/13 04:47
>>20
DCLが破綻してるってのは、別にJavaに限った話じゃないでつよ。
NUMAとかメモリアクセスがout of orderで行われるようなアーキテクチャとかでは
よくある話。

IA-32の呪縛に囚われた>20には理解できんだろうけど。
22仕様書無しさん:04/08/13 05:08
>21
最後の一言が余計。どーしてそう喧嘩売りたがるかね……。
2321:04/08/13 06:06
>>22
スマソ。デスマでイライラしていたようだ。
>20にもスマソ。
2422:04/08/13 06:32
>23
デスマ中でしたか。そりゃあ仕方ないね。こちらこそ言い方きつくてスマソ。
25仕様書無しさん:04/08/14 03:43
クリティカルセクションで、排他処理してたら
それをまねして、通常のセクションでにたコードをコピペされてた

ぬるぽ
26仕様書無しさん:04/08/15 20:00
>>18
static field に対しては、クラスのロードからその初期化中に
別のスレッドがまだ不完全な static field にアクセスすることは無いのかしら。
27仕様書無しさん:04/08/16 11:50
スレッドの切り替えに関して
きちんと書かれてるマニュアルが見つけれないのですが。
クラスの初期化中に、スレッドが切り替わるのは、困りますね。

初期のjavaには、そなん実装もされたらしですね。
28仕様書無しさん:04/08/16 13:25
>>26
staticイニシャライザのコール中にコンテキストスイッチして、またstatic
イニシャライザ呼ばれたら、困るなあ…
29仕様書無しさん:04/08/16 15:07
>>26
> static field に対しては、クラスのロードからその初期化中に
> 別のスレッドがまだ不完全な static field にアクセスすることは無いのかしら。
無い。
詳しくはJLSに書いてあるよ。
ttp://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#44630

まあ、JavaVMにバグがあって、この仕様通りに動かないってこともあるかもしれんが。
30仕様書無しさん:04/08/16 20:02
Private Function Input_CHK_Sub(YESNO As String , CTR As Control _
, Optional DATTYPE As String , Optional BYTECNT As Integer _
, Optional value As String) As Boolean

Input_CHK_Sub = False

'必須チェック
If Mid(YESNO, 1, 1) = "1" Then
If Len(value) = 0 Then
If CTR.Visible = True And CTR.Enabled = True Then
CTR.SetFocus
End If
MsgBox "省略できません。", vbExclamation, msgTitle
Exit Function
End If
End If
'データ型チェック
If Len(value) = 0 Then
Else
If Mid(YESNO, 2, 1) = "1" Then
Select Case StrConv(DATTYPE, vbUpperCase)
Case "HANKAKU"
If Not Len(value) = LenB(StrConv(value, vbFromUnicode)) Then
MsgBox "半角文字を入力してください。", vbExclamation, msgTitle
Exit Function
End If
Case "ZENKAKU"
'何もしない

… のっけからこれ。殺して、もう俺を殺して…
31仕様書無しさん:04/08/16 20:11
>>30
無意味に文字列で情報を受けているのがキモイが、
問題はそれくらいで、だいぶ読めるソースではあると思った。
32仕様書無しさん:04/08/16 20:29
VB(だと思うけど)って、よく分からんのだが
どこが一番つっこみどころなん?

ふつーに、設計がまずいだけで、特につっこみどころがないような・・・
33仕様書無しさん:04/08/16 22:23
>>30
無意味にLOOPするようなソースよりは大分マシだが。
読めるし。
無駄が多くて、A型の俺にはちょっと我慢できん。
動くんだろうが、出来れば書き直したい。
34仕様書無しさん:04/08/17 01:38
>>31
CTR.Visible と CTR.Enabled は恐らく論理型でしょうけれど
それを論理定数と比較している部分を見て
間抜けだと思わないのは
あなた自身もかなりヤバイという事です。
35仕様書無しさん:04/08/17 01:53
???
36仕様書無しさん:04/08/17 03:07
>>30
>If CTR.Visible = True And CTR.Enabled = True Then

If CTR.Visible And CTR.Enabled Then
としろと

釣りですか
37仕様書無しさん:04/08/17 03:08
>34
BOOL(boolではない)型をTRUEでチェックするのに比べりゃ、まだマシ。(無駄なだけ)
38仕様書無しさん:04/08/17 05:57
>>30
'データ型チェック
If Len(value) = 0 Then

ワラタ
なんか内在バグハセーイなヨカンのする召喚魔法でつね。
39仕様書無しさん:04/08/17 09:22
>>36
おいおい、VB厨か?
VBだとAndで既にFalseとなり条件が合致してなくとも、And移行の比較もやっちゃうんだぜ。
(VB.NETでは、AndAlsoがあるが)
Trueも省略すべきじゃないな(まあそのAndなら早くなるが)
簡略化するより、誰が見てもわかるようにしろよ。
4030:04/08/17 10:39
さらに投下。

Private Sub Cmd_Add_Click()
Dim SQL As String

If Check(mode_Add) = False Then Exit Sub

SQL = "Insert Into システム情報 (" _
& "管理_システム情報, 会社コード, 会社名, 組合コード, 組合名" _
& ", 種別, 支払方法, 掛金, その他掛金, 処理年月" _
& ", 更新区分, 更新日, 対象年月"

  ’’’以下SQL作成’’’

If ExecuteSQL(SQL) = True Then
MsgBox "登録しました。", vbInformation, msgTitle
ComponentInit_Sub
SpreadFocusInit Key_Kaisya
UpdateKey_Kaisya = Key_Kaisya
wk_SyoriYM = Date_SyoriYM.getYM
Txt_KaisyaCode.SetFocus
End If

End Sub

 どうしてフォームにSQL文を書こうとするのか…。しかもべたで…。
41仕様書無しさん:04/08/17 10:45
>>40
あ、 ’’’以下SQL作成’’’ 漏れがはしょりました。

あと、Key_Kaisya はもちろんグローバル変数です つД`)・゚・。・゚゚・*:.。..。.:*・゚
42仕様書無しさん:04/08/17 11:26
>>40-41
ビジネスロジックは、

クラスモジュール(Friendで)か、
クラスがわからんバカには、標準モジュールに

書けと言ってくれ。頼む。これ以上VB厨を増やしてほしくない。
43仕様書無しさん:04/08/17 11:29
> Dim SQL As String

コーディング規約ないのかよ... とほほだな。
これだけでもゲボが出そうだ。
ローカル変数で大文字スタートの変数使うなよ。
Camel方式にしてくれよ、他の人がみづらいしぃ。
こういう香具師に限って、1プロシージャが数百行とかあるんだろうなぁ...
44仕様書無しさん:04/08/17 11:34
Dim Yeay As Integer   '年
Dim Manth As Integer   '月
Dim Day As Integer     '日

/* ただのタイプミスかと思ったら、本当にこれで合ってると思っていた新人 */
/* 中学から、英語やり直せと小一時間 */
/* で、直したにしても… */

Dim Year As Integer  '年
Dim Month As In (略

/* あのぅ… Year関数、Month関数、Day関数とダブってるんでよろしくないんですけどぉ */
/* ハンガリアン記法でやってくれと頼んだら */

Dim intYear, intMonth, IntDay As Integer

/* おいおい... バリアントかよ! */
/* 何で余計酷くするんだ!! */
45仕様書無しさん:04/08/17 11:36
あ、>>44のラストは、VB6の話なので、intDay以外はバリアント型になります。
VB.NETではCの宣言に近づいたから、ちゃんとInt型になるけど。
46仕様書無しさん:04/08/17 11:44
>44
三段ボケワロタw
Yeayが特にツボだ。
47仕様書無しさん:04/08/17 12:16
>>46
Yearをどう勘違いすれば、Yeayになるのか...

私もかなり指摘するのに躊躇しました。
48仕様書無しさん:04/08/17 19:20
Manthはわかるとして、

Yeayはどう発音すればよいのでしょうか?

いあィ??
49仕様書無しさん:04/08/17 20:05
>>40
その程度で愚痴るおまえは幸せ。過去ログを読み返せ。
50仕様書無しさん:04/08/17 20:32
>>49
あなたは、寛大ですね。
この業界、厨PGはピンキリとは言え、私はすべて許せません。
というか、許せれたら厨PGではないですから。
51仕様書無しさん:04/08/17 21:36
>>50
愚痴ってても解決しないよ。
52仕様書無しさん:04/08/17 21:37
VB.NETで文字列連結をことごとくStringオブジェクトだけで
やってるのを見ると、思わずStringBuilder勧めるんだが、
全然納得してくれん。
ReturnもAndAlsoもそんな調子・・・
手間もかからず安全な改善すらしない連中っていったい・・・
53仕様書無しさん:04/08/17 21:46
>>52
動いてるんだから、それ以上改善のしようがないと思ってるに違いない。
「動けばそれでいい」という価値観を崩す必要がある。無理だと思うが。
5452:04/08/17 22:00
>>53
プログラミング作法とか、リファクタリングあたりを読ませたいところなんだが、
入門書しか読まない連中なんで、おそらく拒絶される。
その道の権威が言ってるんだからという説得も、そもそも、カーニハンも
ファウラーも、名前すら知らない可能性大・・・
55仕様書無しさん:04/08/17 22:25
>>54
リファクタリングを読んで理解できる連中なのか?
そこそこオブジェクト指向を理解してないと良さが分からないと思うが。
下手をすると意味が分からないとかな。

つうかね、この業界、動けば正義で、勉強しないのが当たり前なんだから、
こう言っちゃなんだが、>>52は無駄に張り切るプログラミングオタクなんだよ。
いいプログラムを書いても仕事には役に立たないじゃん。みんなが無茶苦茶にするし。
なんだったら読めないとか言われるし。

そういう現状では「動けばいい」って価値観が正しいんだよ。残念ながらね。
あと人月で対価が発生してるんだから、生産性を上げても基本的に利益が増えないんだな。
だから生産性を上げるという発想そのものが間違ってる。いや、ホント遺憾なのだが。

よく見るとプロジェクトをどうにか形にするのは>>52みたいなオタクなんだが、
あまり評価されないね。
56仕様書無しさん:04/08/17 23:34
別に52を責めるわけじゃないが
無駄な改善をリファクタリングとかいって、生産性をあげない香具師はプロ失格。
アマチュアなら別に自分のコードにいくらでもこだわってもらってかまわないが
プロなら、コスト意識をしっかり持って、可読性・生産性の両立されたコードを書くべきかと
57仕様書無しさん:04/08/17 23:49
一見、動いているように見えるならばOKな仕事なら、
一見、動いているように見えればOK

それがプロ

こら、そこそこ、バグなんて発見しない
58仕様書無しさん:04/08/18 00:13
始めまして話題的に聞きたいことに少し近いので質問させて下さい。
わたしはPGを仕事にしようと考えている学生です。
勉強のためいろいろなHPを拝見してのイメージですが可読性と高度なプログラミングは相反するような
印象を受けたのですが(私のレベルが低いことも関係していると思いますが)、実際はどうなのでしょうか?

それと皆さん特にプログラムを打つときは他の人に読みやすいように打ちますか?
それとどこかのサイトですが10年後でも通用するプログラムを打てるようにみたいなことを見たのですが
実際皆様の打っているプログラムでそういった意識を持っておられる方はいますでしょうか?
質問ばかりで申し訳ありませんが気が向いたら答えてやってください。
59仕様書無しさん:04/08/18 00:45
>>58
わかりやすいプログラムかどうかと高度かどうかは関係ないよ。
まあ、高度って何よって話はあるんだが。

プログラムを作れるようになるためにはコンピュータがどうやって動いてるかを
想像できるようにならなきゃいけないと思うんだけどね。

あと、プログラムを打つ、って表現は普通しない気がする。
60仕様書無しさん:04/08/18 01:07
昔はベーマガ見ながらプログラム打ち込んだYO
61仕様書無しさん:04/08/18 01:36
>>58
PGになるのはやめとけ。向上心のある奴は向かない。勉強しない馬鹿ばっかでいやになるぞ。

可読性と高度なプログラミングは、十分な知識があれば反しない。
極端な例だが、たとえばwhileやforを知らない奴はifとgotoでループするしかない。
単に無知だから書けないし読めないだけなんだが。
そんな奴らにとってはwhileやforは可読性最悪なプログラムなわけよ。
自分以外そんな奴らばかりだから、自分もifとgotoでループせざるを得ない。そんな感じだ。
あとは、デザインパターンを適用したのより、相互依存しまくりな方が読みやすいとかね。
構造がシンプルだから。そういう奴らが馬鹿でかい万能クラスを書いたりする。
これも無知なのが理由。そんな奴らばっかだよ。やってられねえ。
実際にはwhileやforを知らない奴は居ないが、再帰すら理解できない奴は結構多い。

趣味のプログラムは可読性なんかも考慮してちゃんと作るが、仕事のプログラムはやっつけで作る。
高度な技術も使わない。その方が読みやすいらしい。
それに仕事でちゃんとしたプログラムを作っても他人が無茶苦茶にするから意味がない。
これも例だが、たとえばふと気づくと変数がみんなグローバル変数にされてたりする感じ。

最悪だろ? デジドカって単語は伊達じゃないよ。PGになるのはやめとけ。
62仕様書無しさん:04/08/18 01:38
長々と書いてから気づいたけどスレ違いだね。ごめん。
63仕様書無しさん:04/08/18 09:43
>>58
このスレをどう見れば近い話題に思えるのか、
それを考えると、お前は向いてないな。
むしろ、氏ね。
64仕様書無しさん:04/08/18 09:44
>>51
誰が「愚痴」などと書いた?
ちゃんと、教育しておる。キレながらだけどな(w
65仕様書無しさん:04/08/18 09:45
>>52を責めてるバカとは、一緒に仕事したくないな。
>52の話題で出てきたバグ生産機と同じレベルの思考じゃねーか。
会社のためとかじゃなくて、やってあたり前のことだと思うのだが。
66仕様書無しさん:04/08/18 10:14
釣れますかね?
67仕様書無しさん:04/08/18 22:04
VBしらんので>>52の内容が分からない。
誰かコードで示してくれ。
68仕様書無しさん:04/08/19 00:50
うちの会社の先輩はいまだにVB2.0使って開発してまつ。
69仕様書無しさん:04/08/19 00:57
秀丸の作者だったか同じようなことしてたな
環境の古い人にも使って欲しいからそうしてるとか
70仕様書無しさん:04/08/19 08:00
ソースではないが、他チームのアプリを起動するとこっちが落ちるバグで
修正依頼出したら

「そちらのソースのこことここが問題です。これらの処理をコメントアウトしたら落ちなくなりましたので
処理を全部消してください」

と返答がきた。

・・・・・・・・・・・・・・・・・・その処理消すと、こっちのアプリの半分以上の機能が消滅するのだが。。
調べると、こちらの提供していないローカル関数をばんばん呼んでいることが判明。
それが原因とわかり、指摘したら

「使ってはいけないと書いてなかったのが悪い」と逆ギレ。

なんなんだよ、あいつらは。。
>>70
中国人を使った時に聞くような話だねw
72仕様書無しさん:04/08/19 10:00
>>70
CとかC++なら、公開したくない関数は隠せばいいのに。
なんて……そういう問題じゃないよね……
73仕様書無しさん:04/08/19 22:58
>>58
たにんによみやすいように
しつもんはぜんぶひらがなでうってください

的な。
74仕様書無しさん:04/08/19 23:28
class XXXXFactory{
public XXXX getXXXX(){
return new XXXX();
}
}
75仕様書無しさん:04/08/19 23:35
>74
その人にオブ脳本1000回音読させれ。世のため人のために。
76仕様書無しさん:04/08/20 00:35
>>74
何を問題としているのか、わからん。
77仕様書無しさん:04/08/20 01:55
XXXXオブジェクトを得るのにXXXXFactoryのgetXXXX()を使う

所だろ?
78仕様書無しさん:04/08/20 01:59
>>77
それのどこに問題があるの?
79仕様書無しさん:04/08/20 02:13
>>78
無駄にXXXXFactoryクラスが存在するところ。
そんな腐れファクトリーを作るくらいなら素直にnewすりゃいいじゃん。
Factory Methodパターンを勉強し直せ。
80仕様書無しさん:04/08/20 02:37
将来的にXXXXの構築が複雑化しそうだと踏んだから
Factoryを作った、というのは考えないの?
81仕様書無しさん:04/08/20 04:24
>>80
考えないだろ。おまえ論外だ。
構築が複雑だという問題をFactory Methodパターンは解決しないじゃん。
82仕様書無しさん:04/08/20 05:15
>>77
むかし、そういうソースを協力会社のベテランが書いてたなあ。
Factory クラスの生成メソッド名は create か createFoo になるべきだな。

83仕様書無しさん:04/08/20 06:42
複雑な構築のサポートはBuilderだね
Factory Methodの使いどころはけっこう難しいよ
84仕様書無しさん:04/08/20 07:12
>>81
80じゃないけど、
「構築が複雑化」っていうのは単体のクラス自体の構築の複雑さを言ってるんじゃなくて、
XXXXと同じインターフェースを持つ複数のクラスから生成するクラスを選択したり、
選択の結果によっては生成に引数が要るようになったり、
生成後にインスタンスをどこかに登録してから返したり、
そういう話だと思う。
85仕様書無しさん:04/08/20 07:18
だからオブジェクト指向はいやなんだ
つまりjavaのことなんだけど
86仕様書無しさん:04/08/20 10:53
>>74以降の、JAVA厨の独自ワールド構築に必死な姿にワラタ
87仕様書無しさん:04/08/20 12:50
後でSingletonパターン適用しようと思って>>74のようなコードを書いたことがある。
結局いまだに適用していないが・・・
88仕様書無しさん:04/08/20 14:29
>>84
もしそうなら、クラスを選択するためにgetXXXX()が引数をとるように修正しないといけないじゃん。
そしたらクライアントのコードを軒並み修正する必要があるんだから、直接newするのと変わらん。
無駄に複雑にしているだけだ。
第一、そういう予定があるならXXXXはインターフェイスか抽象クラスにしておくだろ。
89仕様書無しさん:04/08/20 16:33
74のコードがほんとにその5行だけならおかしいが、
newしたオブジェクトに複雑な設定をするとか、
将来newするオブジェクトに変更が発生する可能性があるなら
そのコードはありだな
90仕様書無しさん:04/08/20 16:51
>>89
どうしておかしくない場合をむりやり仮定したがるかな。
辞めようと思ったコードなんだから、おかしいのが自然だと思うけど。
どこかでFactory Methodパターンを見た馬鹿が訳も分からず形だけ真似たんでしょ。

> newしたオブジェクトに複雑な設定をするとか、
コンストラクタでやればいいでしょ。できない場合はしかたないけど。

> 将来newするオブジェクトに変更が発生する可能性があるなら
new XXXXの代わりにnew YYYYするってこと?
それだとXXXXFactoryとかgetXXXX()って名前が最悪。
91仕様書無しさん:04/08/20 17:27
YAGNI!

複雑だのなんだのって、それが必要になった時にすりゃいいじゃん
92仕様書無しさん:04/08/20 17:43
>>91
XP的な発想だね。それ、賛否両論だから辞めようとまでは思わないんじゃないかな。
93仕様書無しさん:04/08/20 23:46
まぁ、あれだ
2chの書き込み制限の中だと、本当に言いたいことが十分に書ききれないことがある
っていうことで、納得すればいいじゃねーか。

君子なんちゃらに近寄らず、ですよ。えぇ。
94仕様書無しさん:04/08/20 23:50
えーと、君子虎穴に近寄らずんば孤児を得ず、だっけ?
95仕様書無しさん:04/08/21 00:06
ではこの屏風から虎を追い出してください
96仕様書無しさん:04/08/21 00:13
>>78
XXXXのサブクラスを返さなきゃいけないんだよね、普通。
97仕様書無しさん:04/08/21 00:21
>>94
弘法も筆の始まりだよ
98仕様書無しさん:04/08/21 01:27
猿も歩けば河流れ
99仕様書無しさん:04/08/21 01:53
見た! 聞いた! 言った!
100仕様書無しさん:04/08/21 02:02
馬の耳に綿棒
101仕様書無しさん:04/08/21 05:27
昔取った衣笠
102仕様書無しさん:04/08/21 06:52
むしり取った衣笠
10397:04/08/21 07:34
>>101
こんな時間に一人で爆笑してしまった。責任とれ。
104101:04/08/22 09:11
105仕様書無しさん:04/08/23 16:19
チコたんをこの板で見ようとは思わなんだ・・・
106仕様書無しさん:04/08/23 19:31
綿棒ワロタ
電車ん中で笑いを堪えるのに必死だったよ。
10769式フリーPG ◆hND3Lufios :04/08/25 23:43
定番スレあげ
108仕様書無しさん:04/08/25 23:54
グローバルの構造体の中身が100個
で、それがまた構造体!
いったいどういう構造してんねん!
とにかくグローバルは全部つめたやろっ?って
ありえん構造・・・。
109仕様書無しさん:04/08/25 23:57
#include<???.h>

floot a,b,c;
int d,e,f;
double g,h,i;

//変数を変えないで!
110仕様書無しさん:04/08/26 00:01
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji3
汚いソースの人、見て勉強しろ!!!
111仕様書無しさん:04/08/26 01:26
>>109

#define f g_fValue1
112仕様書無しさん:04/08/26 02:00
#define g_fValue1 a

だったorz
113仕様書無しさん:04/08/28 17:23
111のほうが面白いな
114仕様書無しさん:04/09/02 16:46
If intMode = 3 Then

  For intCnt = 1 To MAX

    If intMode <> 3 Then
      (処理A)
    Else
      (処理B)
    End If

  Next intCnt

Else

  For intCnt = 1 To MAX

    If intMode <> 3 Then
      (処理A)
    Else
      (処理B)
    End If

  Next intCnt

End If

一年目や二年目ならともかく、今年で5年目って人のソースとは思えなかった_| ̄|○
115仕様書無しさん:04/09/02 18:59
>>114
「動けばイイ」って考え方かねぇw
処理Aとか処理BでintModeを変更していると、一気に難しくなるねw
116仕様書無しさん:04/09/02 23:37
>>114
リファクタリング途中のソースに文句ゆーなよ(w
117仕様書無しさん:04/09/02 23:40
>>116
すまないが、リファクタリング前の状態と、適用しているリファクタリングの名称を示してくれ。
118仕様書無しさん:04/09/03 01:17
>>114
今年C言語8年目の人のソースで

if( a == 1 ) {
処理A(5行ぐらい)
}
else if( a == 2 ) {
処理A(5行ぐらい)
}
else if( a == 3 ) {
処理A(5行ぐらい)
}
else if( a == 4 ) {
処理A(5行ぐらい)
}
else {
処理B(2行ぐらい)
}

ってのを見たことはあるが。本人は「仕様書どおりじゃないか」と言っていた
119仕様書無しさん:04/09/03 03:17
跡形も無く書き換えて、Authorを自分にして胸を張って
査定に臨める。ぐらいに前向きに考えるのがいいかも。
って今も経験15年くらいのCプログラマの見るに耐えん
クラス設計を片っ端から置き換え中。
こんな基盤にゃ俺のコードは乗せられん!とか言いつつ。
これくらいしないとストレスで胃が壊れる・・・
120仕様書名無しさん:04/09/04 16:00
>>119
糞なソースを書き換えていいお前がうらやましい・・・
既存ソースに修正入れるのに申請が必要で、
元のソースをコメントで残さないといけないから、
手を入れない方が見やすい。。。
121仕様書無しさん:04/09/04 23:53
>>114
ソース以前に5年目でVBって時点で駄目だろw
122仕様書無しさん:04/09/05 00:12
>>121
煽られ覚悟で書いてみる。
ベテランが書いたVBのソース(設計含む)は目を見張るものがあるぞ。
123仕様書無しさん:04/09/05 00:18
VBを仕事で現役でつかってる人だっているだろ
124仕様書無しさん:04/09/05 00:32
他の言語で悪戦苦闘している同僚を尻目に、涼しい顔して定時に退社するVBグラマ。
125仕様書無しさん:04/09/05 00:58
おれの見たベテランのVBのソースは目を覆いたくなるものだったが・・・
126仕様書無しさん:04/09/05 01:00
>>125
ベテランと古株を混同してないか?
127仕様書無しさん:04/09/05 02:07
>>120
洩れんとこも似たようなもん。
だから、リファクタリングする気にもならん。
したって、時間の無駄使いと言われるだけで
評価どころか下手すると、無能扱いされる・・・
128仕様書無しさん:04/09/05 02:18
英語のveteranなら古株と同じ意味だが
日本語のベテランなら、優れた人って意味で使うな
129仕様書無しさん:04/09/05 02:27
【veteran】
━━ n. 老練者, ベテラン; 老兵; 退役[在郷]軍人; 使い古したもの.
━━ a. 歴戦の; 老練な.

【ベテラン】
ある事柄について豊富な経験をもち、優れた技術を示す人。
老練者。ふるつわもの。

【テヘラン】
イラン-イスラム共和国の首都。エルブールズ山脈の南麓、
海抜1160メートルの高原に位置する。
130仕様書無しさん:04/09/05 03:42
てか、ほんとにVBしかできないやつのソースってのすごいぞ。
つまりだな、VBでサンプルが載ってないと、技術書を読めないんだよ(あっても読まない)。
そいつらが集まってること想像してみれ。漏れは子供だったから割り切れなくて辞めたよ。
131仕様書無しさん:04/09/05 05:06
最近Javaでそういうのが増えて困ってる
132仕様書無しさん:04/09/05 05:41
なるほど、テヘランに違いない
133仕様書無しさん:04/09/05 07:56
北オセチアはベスラン
134仕様書無しさん:04/09/05 09:18
>>130
そもそも、素人のプログラミング初心者が読むような本しか
読まないしな。

VBは良いコードを書く香具師もいるが、どうしたら
こんなひどいコードを書けるんだろう、というのも多い。
その落差が他言語と比べて強烈だ。
135仕様書無しさん:04/09/05 10:04
>134
VBは少々のことがあってもそれなりに動いちゃうから&最初に設計してからじゃなく
作りながら考える奴が多いから。
コマンドボタンのイベントを一つ作ってF5押して「動いたー♪」
そんなことの繰り返しで「完成」だもん。
VBでCreateEventだののAPIを呼び出しまくっているのを見たことあるな。
そんな無茶しなくても、VC++を使ってそこだけdllかCOMにすりゃ良いのにと
思ったが。。。
137仕様書無しさん:04/09/05 12:22
VBはやっぱクソだな。
Javaマンセー。
138仕様書無しさん:04/09/05 13:46
実話:
アップルマンの本を俺から取り上げた先輩の一言。
なんだ?この本サンプル少ないな。使えねぇーーーーーーーーー!
139仕様書無しさん:04/09/05 13:48
Windowsの画面系に関して言えば、多言語も似たようなもんだと思うが・・・。

むしろ、Unix+C(C++ではない)の開発では、それこそ目を覆いたくなるようなものが。
お客さん、この仕事ハジメテ?みたいなの。
140仕様書無しさん:04/09/05 14:00
>>135
ププ。トライ・アンド・エラー知らないの?
141仕様書無しさん:04/09/05 14:16
スロー・イン・ファースト・アウトなら知ってる。先輩に教わった。

派遣当初はゆっくり慣れて、逃げるときにはとっとと逃げることだってさ。
142仕様書無しさん:04/09/05 14:22
スロー・イン・ファスト・アウトな。
143仕様書無しさん:04/09/05 14:54
最初に逃げるのも重要だぞ
144仕様書無しさん:04/09/05 15:22
サンプルって断片的な使用例ならK&Rとかでも
豊富に載っててなかなか役に立つよ。

完成されたサンプルアプリケーションじゃないと
ダメって意味か?
145仕様書無しさん:04/09/05 16:11
>>134
> VBは少々のことがあってもそれなりに動いちゃうから

「それなり」って、それは動いちゃいない。
画面描画部分とイベント処理部分(VBランタイムが担当しているところ)が動いているだけ。

俺の認識では、VBプログラマには「動いている」とみなすレベル(閾値)の水準が著しく低いって感じ。
146仕様書無しさん:04/09/05 16:24
>>145
そうだね。VBプログラマは「書いてすぐ実行する」の繰り返しで作るもんねw
147仕様書無しさん:04/09/05 17:14
いや、書いてすぐ実行してもいんだけどさぁ、
ほんとにすごいんだって、一見百聞にしかずとはまさにあれだよ、そこの奥さん!
ネストの嵐とか普通だから。ファイルをぱっと開けば、そこのあなたもフリーズ間違いなし!
AAかと思ったくらいにして。
148仕様書無しさん:04/09/05 17:42
>「動いている」とみなすレベル(閾値)の水準が著しく低いって感じ。
言語に関わらずだがつくづくそう思う。
VBで特にはひどいってのは確かかな。なまじ動いちゃうだけに。
149仕様書無しさん:04/09/05 18:50
>>147
それを親切に分割したり、分岐構造を書き直したりすると
余計なことして、見づらくなったと逆ギレされる罠。
150仕様書無しさん:04/09/05 21:43
-----りふぁ前-----
  For intCnt = 1 To MAX
    If intMode <> 3 Then
      (処理A)
    Else
      (処理B)
    End If
  Next intCnt
-----
:
途中省略
:
-----りふぁ後-----
If intMode = 3 Then
  For intCnt = 1 To MAX
      (処理B)
  Next intCnt
Else
  For intCnt = 1 To MAX
      (処理A)
  Next intCnt
End If
-----

>適用しているリファクタリングの名称
しらね。
ボトルネック処理の高速化か?
151仕様書無しさん:04/09/05 21:49
>>150
余計なことすんな、見づらくなったぞボユゲ。
152仕様書無しさん:04/09/05 22:06
>150
どこらへんが高速化したんだ?
153仕様書無しさん:04/09/05 22:08
>>150
ループ内の変数の判定を毎回やっていたからといって
大して処理速度が遅くなっていたとは思えない。
(ループ数が莫大ならちょっとは影響があるかもしれんが)

>151の言うとおり、むしろ可読性が落ちたと思うし、
intCntを複数の場所で扱うのはバグ生成の原因になりかねないなー。
154仕様書無しさん:04/09/05 22:22
「りふぁ後」の二つのForブロックを別関数に・・・
155仕様書無しさん:04/09/05 22:38
だって頭でIf intMode = 3 Thenとか書いておきながら
Forループの中でIf intMode <> 3 Thenなんて条件追加したら
えぇーーーって感じだよ。
(処理A)とか(処理B)でintModeが変更される可能性があるのかな?
でもそんな書き方したら速攻バカ認定だしなぁ。
心痛お察しします。>114さん。
156仕様書無しさん:04/09/05 22:41
For i = 1 To 3
 If i = 1 Then
  処理A
 ElseIf i = 2 Then
  処理B
 ElseIf i = 3 Then
  処理C
 End If
Next i
いったい何がしたいんだよ…
157仕様書無しさん:04/09/05 22:43
それは流石にネタだろ?
158仕様書無しさん:04/09/05 22:45
>>156
何がしたいかわかんないの?
駄目PGだね、キミ・・・
159仕様書無しさん:04/09/05 22:47
>>157
残念ながら過去3回ほど、それぞれ相互に何の関係もない場面で
こういうコードを目撃した。
160仕様書無しさん:04/09/05 23:01
ご愁傷様。
で、ここに出てくるコードにVBの例が多いのは、
やっぱりそういうことなのかね?
熟練VBプログラマの方々には悪いけど。
161仕様書無しさん:04/09/05 23:02
>>150
それ、仕様変わってないか?
これだけなら問題なさそうだけど
forの途中で、タイマ割り込みなんかが入って
intModeの値が変わったら結果が変わる可能性があるよな
リファクタリングしたつもりが動作が変わってバグったって例なのか?
162仕様書無しさん:04/09/05 23:49
>>161
>forの途中で、タイマ割り込みなんかが入って

いるよね、こういう「俺は知識があるんだぜ」みたいな勘違い発言を
堂々とする馬鹿w
163仕様書無しさん:04/09/06 00:07
intModeがvolatileなら別だけど、
まあ、VBだしなぁ、って話だよね?
164161:04/09/06 00:12
何処が勘違いなのか知りたいのだが、
まあオレのプログラムじゃないしどうでもいい
と思いつつレスしてしまうのもまだまだ甘いな
165仕様書無しさん:04/09/06 00:17
逆に「VBで」きっちり動く物を作れるVBグラマって凄いと思うぜ。
漏れはあんなんでバグを残さない自信はない。
その点C/C++は、巧く書けばコンパイラがある程度はバグを潰してくれるし、
テスト用ツールが揃っているわで楽だ。
166161:04/09/06 00:17
>>163
ってか、リファクタリングって仕様や動作を変えたらいけないじゃないんだっけ?
ちょっと変えただけでもそれが致命的なバグになることなんてしょっちゅうで
自分自身いつもそれで墓穴掘ってる
167仕様書無しさん:04/09/06 00:19
そもそも、タイマ割り込みが発生しておかしくなるような状況を考慮するなら
カーネルが用意する排他制御APIを呼ばないとまずいだろ、あふぉか
168仕様書無しさん:04/09/06 00:23
VBのタイマーってうろ覚えなんだが、たとえばOnTimerでグローバル変数を書き換えられたら、ってこと?
169仕様書無しさん:04/09/06 00:50
結論としては、JAVA最高ってことだな。
170仕様書無しさん:04/09/06 01:00
>>168
OnTimerってイベントだっけ?
ある意味それができる方がすごいプログラマだ。
171仕様書無しさん:04/09/06 01:47
161は厨房という事で宜しいですね?
 はい
> いいえ

161は厨房という事で宜しいですね?
 はい
> いいえ

161は厨房という事で宜しいですね?
 はい
> いいえ

161は厨房という事で宜しいですね?
> はい
いいえ

そうですよね、当然ですよね。
なに?タイマー割り込みで処理が変化したらまずいから、判定を毎回行えって?
割り込みが入ることがわかっているなら、それに対応したプログラムを組むよな。フツーはww
172仕様書無しさん:04/09/06 03:32
大昔に、判定を毎回行うことが良いとする馬鹿がいた
それがどんどん広まってしまった
結果、とりかえしのつかないことになった

という黒歴史もあるので、
C言語で、gotoは使ってはいけないっていう妄言に通じるのかもな
173仕様書無しさん:04/09/06 03:43
>>165
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
174仕様書無しさん:04/09/06 03:54
きがつかなかったが、
165のつくったコンパイラは神!、皆に配布汁
175仕様書無しさん:04/09/06 06:53
先輩!このプログラム、タイマー割り込みの発生タイミングによって
動きが変化するんですよ!画期的でしょう!?
負荷が高くなっていると処理Bにいかないこともあるんですよ!
すごいでしょう?
176161:04/09/06 21:39
うーんここまでたたかれるとは
タイマは物のたとえで使ってみただけなんだが
所詮16mhzクロックの組み込みとwinアプリのプルグラムの差なのか

>>167
>カーネルが用意する排他制御APIを呼ばないとまずいだろ、あふぉか
APIとかプログラムで利用したことないし

>>171
>割り込みが入ることがわかっているなら、それに対応したプログラムを組むよな。フツーはww
だから>>150はそういうことを無視しているのではないかと

>>175
>先輩!このプログラム、タイマー割り込みの発生タイミングによって
>動きが変化するんですよ!画期的でしょう!?
>負荷が高くなっていると処理Bにいかないこともあるんですよ!
>すごいでしょう?

そうなんだよ
モータの位置検出割り込みとSIO通信割り込みを多重割り込み許可で動かしたとたんどちらも動かなくなるとか
3つのモータをある一定以上の高回転で回転させるとモータが回らなくなるとか
msecオーダーのタイミング差で確率的に予定外の動作するとか
たとえ同一関数内であっても上から順番に排他的に間違いなく動くなんて考えたたら
起こってしまったバグでも見つけることはできない状況なもんで

とはいっても、どれも自分のミス以外の何者でもないんだが
177仕様書無しさん:04/09/06 22:09
>161氏
> モータの位置検出割り込みとSIO通信割り込みを多重割り込み許可で動かしたとたんどちらも動かなくなるとか

大丈夫、そんなんはVBで組んだりしないから安心しる。
178仕様書無しさん:04/09/06 22:15
>>176
>モータの位置検出割り込みとSIO通信割り込みを多重割り込み許可で動かしたとたんどちらも動かなくなるとか
>3つのモータをある一定以上の高回転で回転させるとモータが回らなくなるとか
モータの種類は何つかってるの?
179仕様書無しさん:04/09/06 22:41
>177

……工場のシーケンサ制御あたりならVBで組むぞ……
180176:04/09/06 22:47
>>178

前者はSIO通信を作って、別の人が作ったモータ制御を含む本体に組み込んでもらったので詳しくは知りません
先方から送付されたプログラムを組み込むとモータが回転しなくなるし、通信もできないと調査依頼が来ました
ちなみに280V駆動の民生品としては大電流(1.5Aとか)のモータでインバータ制御らしい

後者は自分がメインで組んでるんだけど、使ってるのは14V駆動のブラシレスモータをPWM制御でまわしてます
3つのモータの回転数の合計が5000rpm以上になるあたりから、位置検出の割り込み処理が追いつかなくなり停止してしまいます
181仕様書無しさん:04/09/06 22:56
組み込み計だとしても、スーパーバイザーモードなりクリティカルセクションなりディスエイブルインタラプトなりにして、排他処理するだろ
用は、きちんとした排他処理をしないのがあふぉすぎ
90年代初頭には、多重チェックでのりきるってのが正しいと信じられていたが、それが間違っていたのはとっくに証明されたし
いまそんなプログラム作っているのをみたら、まさにこのスレタイ
182仕様書無しさん:04/09/06 23:15
>>180
CPUは何つかってんの?
183176:04/09/06 23:17
>>181
>まさにこのスレタイ
本日上司に退職願を申し出たところです
もともとソフトウェアはおまけの会社なのですが、
コストがかからず短納期でできると信じて止まない偉いお方が多いのです
その中でヘボでも貴重なPGなのでちょっと待ってくれといわれました
184176:04/09/06 23:18
>>182
CPU?
そんな高級なものは使っておりません
数百円のCISCマイコンです
185176:04/09/06 23:40
ここまでくるとあらしだなとおもいつつ
誤解を招かないうちに

>>183
>その中でヘボでも貴重なPGなのでちょっと待ってくれといわれました
自分個人が貴重といってるつもりはないので
引き継いでからこっち
4年ぐらいひとりでやってきた
つまりPGは自分1人なわけで
会社が放出したくないのは
俺の頭の中にあるデータとノウハウ
それさえ他の誰かにコピーすれば
オレなんて個人は好きにしてくれというだろう

もうどつぼか
186仕様書無しさん:04/09/06 23:57
ソフトウェアはお菓子についてくるおまけだべ。
187仕様書無しさん:04/09/07 00:03
マジレスすると最近はお菓子の方がおまけだったりする。
王立博物館とか。
188仕様書無しさん:04/09/07 00:04
なんか・・すごいのが沸いたねぇ。
189仕様書無しさん:04/09/07 00:21
まじレスすると、ノウハウの移行は
少なくとも半年以上の実務での伝授がいる
190仕様書無しさん:04/09/07 00:44
>ボトルネック処理の高速化か?


>(ループ数が莫大ならちょっとは影響があるかもしれんが)
だよ。


>だって頭でIf intMode = 3 Thenとか書いておきながら
>Forループの中でIf intMode <> 3 Thenなんて条件追加したら
>えぇーーーって感じだよ。
逆だし。
intMode = 3 の頻度が高いからだよ。
191仕様書無しさん:04/09/07 01:07
うわぁぁぁぁ。
バカがでた。

>逆だし。
>intMode = 3 の頻度が高いからだよ。
言わせて頂きます。
「えぇーーーーーーーーっ」
もう意味わかんね。

いたるところに馬鹿の一つ覚えみたいに同じ条件判定
入れてるコーディングのやり口が阿呆だって言ってるのに。
192仕様書無しさん:04/09/07 01:18
莫迦
193仕様書無しさん:04/09/07 01:31
>191
>いたるところに馬鹿の一つ覚えみたいに同じ条件判定
>入れてるコーディングのやり口が阿呆だって言ってるのに。
だから逆だって。
外に1つだけにしてんだろが。
莫迦。
194仕様書無しさん:04/09/07 02:36
先輩!Javaですけど、このプログラム、高速化してみました。
-----元-----
public static void test(int sw){
for(int i=0; i<1000000; ++i){
if(sw==3){
doSomethingA();
}else{
doSomethingB();
}
}
}
C:\>java test1
実行にかかった時間は 11420 ミリ秒です。
-----
 ↓
-----
public static void test(int sw){
if(sw!=3){
for(int i=0; i<1000000; ++i){
doSomethingB();
}
}else{
for(int i=0; i<1000000; ++i){
doSomethingA();
}
}
}
C:\>java test2
実行にかかった時間は 11370 ミリ秒です。
-----

...VBだともっと効果的なんでしょうか(w
195仕様書無しさん:04/09/07 08:00
Javaはスゴいな。
VBだとこうはいかない。
Javaマンセー。
196遅レスだが:04/09/08 01:24
>150のリファは、この後処理A、Bとループを関数に切り出すために行ったんだよね?
高速化なんてジョークだよね?
197仕様書無しさん:04/09/08 05:04
>>176
>>>171
>>割り込みが入ることがわかっているなら、それに対応したプログラムを組むよな。フツーはww
>だから>>150はそういうことを無視しているのではないかと

>>150のプログラムが、タイマ割り込みの入るプログラムだという話は
一体どこから?

おまえが勝手に「タイマ割り込みによって変化するかもしれない」と定義しただけだろ。
そんな仕様のないプログラムで、なんでそれを考慮した設計にする必要があるんだ?

161は知識馬鹿って感じだな。
職場でも変人として目立ってそう。
198仕様書無しさん:04/09/08 20:30
まあたしかに、H8とかで外部のデバイスとやり取りする時に、
どこぞのレジスタに値を書き込んで、
その直後にステータスレジスタとかポートをforループで何度も読んで
その値が変化した時に処理Aを行い、値が変わらなければエラー処理っていうのはあるが・・・。

VBだしねぇ・・・。
>>150のソースがその類だとはとても思えん。
199仕様書無しさん:04/09/08 21:00
VBというか、Windowsな時点でビジーループは厳禁でそ?
200仕様書無しさん:04/09/10 09:36
割り込み使えよ
201仕様書無しさん:04/09/10 10:08
DoEvents入れまくりなのでビジーループはありえません。
202仕様書無しさん:04/09/10 10:44
再入しまくりで死にそうな予感・・・
203仕様書無しさん:04/09/10 10:44
public int i;
204仕様書無しさん:04/09/10 11:24
>>203
俺も実際にそれを目撃した事がある。Cだったが。
205仕様書無しさん:04/09/10 11:32
問題にしているのは、どこ?
iってところ?
206仕様書無しさん:04/09/10 11:35
>>205
多分そうでしょ?
ぱっと見で意味がわからんものを公開するなといいたいのかな?

言語的に、JAVAかC++っぽい記述だから、それ以前にPublicにするなと言いたいけど。
207仕様書無しさん:04/09/10 11:39
ループカウンタ如きをパブリックに宣言するなってトコだろ
208仕様書無しさん:04/09/10 11:43
あの断片だけじゃ、ループカウンターとは限らないじゃん。
209仕様書無しさん:04/09/10 11:59
>public int i;

ならJavaかC#だろ?
明らかにC/C++の文法じゃない

と細かいことを言ってみる
210仕様書無しさん:04/09/10 12:22
切り取った「胃」の数だったとか
211仕様書無しさん:04/09/10 13:07
>176
> 所詮16mhzクロックの組み込みとwinアプリのプルグラムの差なのか

16ミリヘルツって、1クロック=1分くらい?
212仕様書無しさん:04/09/10 13:26
>>211
よく見ろ。それは周波数の単位ではない。
213仕様書無しさん:04/09/10 13:39
>209
いや、C++なら書けるでしょ?、かけないっけ?

で、なんで確認したかというと、iにしたのは例としてなのかとおもったのだよ
本当にメソッドのメンバにiって名前を使っていることについて言及したいのね

関係ないが、iってなまえだからってループカウンタとは限らない
214仕様書無しさん:04/09/10 14:13
メソッドのメンバじゃなくて、クラスのメンバだろ。
それにそんなメンバ変数がいたら、ループカウンタにiという変数が使えないだろうが。
215仕様書無しさん:04/09/10 14:24:04
>>214
同じ名前の変数が被った場合って、スコープの狭いほうが勝つんじゃなかったっけ?
まあ、普通の人はそんな知識が必要なプログラムは書かないだろうけど。w
216仕様書無しさん:04/09/10 14:34:26
>>215
だから何?あんたバカ?
217仕様書無しさん:04/09/10 14:49:42
語尾にwつけてる奴が一番必死に見える。
218仕様書無しさん:04/09/10 14:51:30
スコープを知らない子供達か
219仕様書無しさん:04/09/10 14:55:31
まあ知ってても、危険な書き方はしないのが普通だけどね。
220仕様書無しさん:04/09/10 15:05:25
>>213
C++のpublicは修飾子としてではなくラベル:のように書く。
221仕様書無しさん:04/09/10 16:35:55
>>214==218
保守性悪そうだな。
藻前の吐くクソースコードは。
222仕様書無しさん:04/09/10 16:36:28
>>215==>>218の間違いだった。
223仕様書無しさん:04/09/10 16:37:27
なんか変
224仕様書無しさん:04/09/10 16:42:14
>>新人クソグラマ
よくないプログラムの定義って知っているか?
モジュールや関数の独立性って知っているか?
コーディング規約を抜きにしても、そんなローカル変数、ブロック変数で使うようなのを使うな。
パブリックなメンバ変数(さらにやばいグローバル変数)を何の気になしに書くな。
何に使われてるかわからんだろうが。たーけかね。
225仕様書無しさん:04/09/10 16:43:13
>>213
「C++」って書く香具師は例外なく無能ですね。:-)

# 文字化けしてますね :)
226仕様書無しさん:04/09/10 16:48:49
>>224
誰に対してのレスで、何をそんなに威張ってるんだ?
227仕様書無しさん:04/09/10 18:31:48
なんでこんなに必死になってるんだ?
漏れは、リファクタリングすれば直るレベルのものは妥協している
変数名がおかしい程度で辞めようと思ったら、なんか転職しているか
だっておまえ、int hensuu;とかつかってるんだぞ、わけわかんない奴は
228仕様書無しさん:04/09/10 19:13:01
>>227 ・・・それは・・・凄い
229仕様書無しさん:04/09/10 19:31:58
ペットの犬に「犬」って名付けるようなもんだな
230仕様書無しさん:04/09/10 21:37:05
ウホッ、いい変数
231仕様書無しさん:04/09/10 22:03:43
ちなみに、なんでhensuuなんて名前付けるんだって言ったら
先輩だってtempって一時変数つかってるじゃないですか、って言われた
232仕様書無しさん:04/09/10 23:38:17
>>231
うて!うつのじゃ!
233仕様書無しさん:04/09/10 23:45:49
>>229
ガッツ石松が飼っていた猫の名前は「ネコ」だった
234仕様書無しさん:04/09/10 23:55:40
Dim Mai As Integer


Maiってなんじゃい。と命名者に聞いてみたら。
「今つきあっている彼女の名前です」

頃していいですか?('A`)
235仕様書無しさん:04/09/10 23:59:20
>234
ayuayuとかyukiとかnemuとか付けだしたら撲殺許可。
236仕様書無しさん:04/09/11 00:59:06
>>234
別れた頃に、喪前が使ってやるのだ。
「××が付き合ってた彼女の名前」ってコメント付きで。
237仕様書無しさん:04/09/11 01:18:13
某社にいたときに関連会社に出されて、やっと納入されたAccessを使った受注入力プログラム。
遅すぎる、って事で試験してみると、たかが合計5万件のデータ検索するのに2時間・・・。
幾らなんでもこんなに遅い訳無い!といくら問いただしても「改良したんですがこれが限界です!」と
言うばかり。

ソース読んでみると・・・・
該当テーブル1件分読んで、条件に合わなかったら次へ、また条件合わなかったら(以下略)

他のみんなとクエリー使うように作り直したら検索時間10秒くらいになったorz

238仕様書無しさん:04/09/11 02:13:37
100件ほどのレコードを読む必要のあったプログラムが、
機能追加で3000件ほどのレコードを読む必要があるようになった。
※別の集計の仕方が追加になったため。

何とかかんとか読込時間が20%増程度ですむようにした。
なんで遅なってんねん!!て文句いわれた。
同じレコード数読む、同じような集計が必要になる
そいつが作った別のプログラムは、30分以上かかるのにだよ…
10秒なら十分速いじゃないか…

糞プログラム書くやつは内容も考えずに文句言いやがる…
てめえのプログラムそのままのつくりで機能追加してたら
どんだけ遅くなってたと思ってんだよ…
239仕様書無しさん:04/09/11 10:18:55
' 商品種別コードの検索
Private Function int_SyohinShubetuKodo() As String

Dim strLong As Integer
strLong = Text1.Text
int_SyohinShubetuKodo = CLng(strLong)

End Function


本当にこんなのがあったんだけど、目が回りそうだった。
240仕様書無しさん:04/09/11 10:26:12
で、
「何でローマ字がガチャガチャなんですか?」
「何で Integer型の変数にstrってプリフィックス付けるんですか?」
「何で最後にゃわざわざ Long型にキャストするんですか?」
って聞いたら、

「・・・あ、コピペしたからよくわかんないです。」
「プリフィックスとかキャストとかって何ですか?」
「まだインストロールの途中なんで、失礼します。」

だって。
ネタぢゃないよ。
241仕様書無しさん:04/09/11 10:36:41
「インストロールって何?」と思って、ググってビックリ
242仕様書無しさん:04/09/11 11:24:05
なんかVBやACCESSネタばっかりになってきたな
VBやACCESSは馬鹿のためのツールだって気づいてないのか?
243仕様書無しさん:04/09/11 12:31:06
>>242
>VBやACCESSは馬鹿のためのツールだって気づいてないのか?
そっとしといてやれ。
244仕様書無しさん:04/09/11 12:37:10
いづれはJavaもVBやACCESSの仲間入り〜
245仕様書無しさん:04/09/11 12:38:34
>>242
優秀な技術者を育てる時間と金を考えると、
馬鹿な技術者にも使える優れたツールを開発するのは別に変じゃないと思うよ。

ただ、VBやACCESSが優れたツールかと言われると・・・。
246仕様書無しさん:04/09/11 12:50:38
VBやACCESS自体は大変優れたツールであるが、馬鹿な技術者でも使える。

しかしながら、このツールが優れたものであるということをスキルが低すぎる
ために理解できない人がいるのも事実。

馬鹿でも使えるために、とんでもソフトウェアが大量生産されているのも事実。

結局、馬鹿が使えば使えないものが出来上がり、優秀な奴が使えば良いもの
が出来上がると言うこと。
おまえらはVBやACCESSで充分だw
247仕様書無しさん:04/09/11 12:58:45
会社がVBやACCESSの仕事に手を出し始めたら辞め時だろ?

248仕様書無しさん:04/09/11 13:07:03
>>247
そんなことはない。
両者の特徴をちゃんと把握した上で
使いどころを間違えなければそれらは良いツールだと思うよ。
249仕様書無しさん:04/09/11 13:14:53
お客さんが使いどころを間違えてることはあるかも?
250仕様書無しさん:04/09/11 13:18:17
VBやACCESS向きの仕事を請けるようになったらDQN会社への入り口だってことだろ
251仕様書無しさん:04/09/11 13:22:34
VBの仕事を請ける

優秀な人間がやる気をなくして去っていく

馬鹿でも出来るから、採用しやすい馬鹿が補充される

VBしかできない会社になる

252仕様書無しさん:04/09/11 13:28:23
VBを使ってる会社は偽装派遣の可能性が非常に高い。
他から仕事を貰ってその場凌ぎしてるだけ。下請よりも酷いのが実情。
253仕様書無しさん:04/09/11 13:56:27
>>251
うちの会社のPJ、いまだにVB5・・・。
新しい人間は誰もやりたがらない。
(今更VB5の技術なんて習得したくないから)
画面処理のための独特の制御方式を分厚いドキュメントにまとめてあるけど、
はっきり言ってそのPJ以外では使いようがないノウハウだ。

.netに切り替えるとか切り替えないとかいう話もあったけど、
発注先の「金がない」の一言で却下。
本式に切り替えるならWeb系画面でJAVAに切り替えるんだろうけど。
254仕様書無しさん:04/09/11 13:58:50
仕事では、C(組み込み系)/VBA(Excelマクロ)使ってて
趣味では、VB使ってる

変か?
255仕様書無しさん:04/09/11 14:00:57
>>253

「後悔先に立たず」

1年後に死ぬほど後悔したくないなら、今すぐ辞表を書いて月曜朝一で提出。

256仕様書無しさん:04/09/11 14:01:51
>>254
VBは組んでですぐに結果が目に見えるから、
趣味として楽しいことは楽しい。
257仕様書無しさん:04/09/11 14:03:54
>>254
趣味でVBは良いとして
仕事でVBAは間違ってると思う。
258253:04/09/11 14:03:59
>>255
俺のいるPJははなっからVBは使ってないから、
何かの間違いでそのPJに移らされることがない限りは無問題。

昔そこのリーダーとケンカしたことがあるから、
よほどのことがない限り呼ばれることはないと思うが。
259仕様書無しさん:04/09/11 15:03:11
やっぱVBよりPGだな
Dim strLong As Integer
の関数を使えば一発で、その言語が出てくるはず
260仕様書無しさん:04/09/11 17:04:49
何言ってんだ、PGよりSEだろ
261仕様書無しさん:04/09/11 17:08:13
まあ、言語を卑下したりしてるうちは、どっちもどっちだと思うけどね。

弘法筆を選ばず、適材適所。

それを理解できない奴に限って・・・。
262仕様書無しさん:04/09/11 17:15:14
>>261
卑下の使い方を間違ってねーか?
263仕様書無しさん:04/09/11 17:22:02
264仕様書無しさん:04/09/11 19:32:05
いい加減、C#に移行してほしい。
Basicは読みにくくてたまらんが、VBしかできない
香具師がいるせいでそれもままならず。
265仕様書無しさん:04/09/11 19:37:42
変な会社
266仕様書無しさん:04/09/11 19:42:47
つうか、.netでやるなら、VBといっても6と別物だから、C#でも何でも大差ないと思うんだが。
(言ってしまえば、VB.netはVBのよさをなくしてしまってると。)
267仕様書無しさん:04/09/11 20:07:31
VBが馬鹿にされてんじゃなくて、VBでできるような仕事をしていることが馬鹿にされてんだけどなぁ。
ずっと気づかないんだろうなw
268仕様書無しさん:04/09/11 20:11:43
>>267
何が言いたいんだ?
VBが適した仕事があって、それをやるのが何が悪いの?

言語厨って、なんか人を見下して悦に入ることでしか、自分を確認できないのかな?
269仕様書無しさん:04/09/11 20:50:48
>>268
確認というか、見下すことでえらくなったつもりになるらしい
自分の位置は変わらない&人からの評価は下がるのに気づかないのが笑える
270仕様書無しさん:04/09/11 20:53:46
C,JAVA,VBなど、業務系で使われる言語は大体やったけど、
言語で云々てことはないよな、出来ない奴はどの言語でもいるし。
マジカルなコードを書く奴には言語の壁なんて通じないw
271仕様書無しさん:04/09/11 20:54:14
弘法言語を選ばず。
272仕様書無しさん:04/09/11 20:57:03
できる奴は言語を選ばないのだったらば言語を作る奴は相当な阿呆だということだねw
某宝石の言語とかw
273仕様書無しさん:04/09/11 21:00:48
>>272
まあ阿呆じゃないと言語なんて作ろうと思わないよ。
妄想とか顕示欲とか欲求がが頂点に逝った状態でないとできないよな。
274仕様書無しさん:04/09/11 21:08:43
>>272
その人がどう有れ、人を貶めるような発言をする暇があるんだったら
もうちょっと他のことやった方が良いんじゃないか?
275仕様書無しさん:04/09/11 21:22:39
VB.NETの問題は…
VB6以前のつもりでプログラム書くやつが多すぎる事だ…orz
276仕様書無しさん:04/09/11 21:35:17
MFCのつもりでC++.NETいじるやつもいるからお互い様だよ。



ごめんなさい。もうしません。
「DLLにするんですか?」なんて質問
二度としませんから、そんな目で見ないで・・・。
277仕様書無しさん:04/09/11 22:38:11
>>274
他の事って何よ?
めっちゃオナニー?
278仕様書無しさん:04/09/11 22:42:23
>>277
徹夜・休出で会社に引き篭もり状態で、2chで他の言語使用者を攻撃して、
疲れたからオナニーですか・・・・。
279仕様書無しさん:04/09/11 23:30:14
VBよりC系の方が個人的にソース読みやすくて好きだな
好みの問題だろうけどif then end if とかだと英単語が並んでるだけに見えて
どれがどれかぱっと見分からない(まぁ読めばすぐ分かるけど)
C系は()やら{}でぱっと見で構造が分かりやすい気がする。
280仕様書無しさん:04/09/11 23:32:47
ほとんど慣れだろな。
俺はVB.NETのコード最初に見たとき一瞬読みにくって思ったけど
慣れてみればこれはこれで悪くない>VB.NET
281仕様書無しさん:04/09/11 23:46:22
適切な変数名とインデントがあればあとは慣れ。
英単語じゃなく記号の方が見やすいかと言われたら
perl、そのほかlispなんかは慣れていない人には見にくいことこの上ない。
282仕様書無しさん:04/09/12 00:26:37
>>253 ・・・あの
発注先ではなく発注元ではないの?
283仕様書無しさん:04/09/12 00:34:48
>>282
半日遅れで突っ込んでいる、そんなあなたが好き。
284239 (240):04/09/12 10:33:18
俺も最初、VBでの開発なんてプライドが許さなかったけど(w
まあ、今は「飯が食えるなら何でもいいや」って感じ。
ただ、VBで作ったものって、どんなにコードで工夫しても、動きの(見た目の)
華麗さがないよね。なんていうか、グニャグニャネチョネチョしてんの。

・・・って、だんだんスレの趣向からズレてきたのでsage.スマソ
285仕様書無しさん:04/09/12 10:59:31
もっさりしてる
286仕様書無しさん:04/09/12 11:12:04
飯が食えるならいいのは確かだけど、食える飯の質と食える期間
および食えなくなった後のことも考えたほうが・・

287仕様書無しさん:04/09/12 11:43:54
ま、JAVAやってた俺が勝ち組ってことで。
288284:04/09/12 12:26:00
>>286
正直、こんなヤ●ザな商売なのに、将来のこと見据えて動いたって覆されると
思うんだよね。別にVBだからとかJAVAだから、っていう次元じゃなくて。
極論言えば、PGやSEで食えるの?みたいな。

北斗の拳みたいな世界になっても、何とかして飯の種を見つけて食えるタフさが
あればいいと思う。アタタタタタタタタ
289仕様書無しさん:04/09/12 12:38:10
毎日必死こいて金貰って開発してる守銭奴たちは
研究の合間に暇潰しにハックする院生に勝てないという現実。
290仕様書無しさん:04/09/12 14:50:53
> 極論言えば、PGやSEで食えるの?みたいな。

無理。JAVAだろうがVBだろうかPGは一生PG。
291仕様書無しさん:04/09/12 15:05:08
>>288
プログラマとかSEとかを区分けして考えてるんじゃ、喰っていけないよ。
それこそ1人で多くの工程をカバーできる人になるか、どっかの工程のスペシャリストになるかをしないと。
292仕様書無しさん:04/09/12 15:42:59
>>289
それぞれの分野の使いまわしの効かない特徴を引いちまえば
全て論理問題になるからな

時間的な拘束を排除しても
高学歴の御方には勝てんだろうよ

だからなに?
293仕様書無しさん:04/09/12 15:45:43
研究してる院生には、一切の生産能力はないけどね。
大学では通じるからね、それでも。
実際、大学でしか生存できなそうな人は多いよな、能力はあるけど温室内限定。
294仕様書無しさん:04/09/12 15:54:03
>>268
旧VBかC#(VB.NET)の選択肢があって、旧VBを選択するのって、
旧VBしか使えないからでしょ。
世間のVBの仕事のほとんどは、C#でやっても生産性落ちるって
ことはないだろうし。
(むしろ、楽になるんじゃないか)
295仕様書無しさん:04/09/12 16:28:01
生産能力のある奴はコピペで済むことでも「生産」と呼ぶようだけれどねw
296仕様書無しさん:04/09/12 16:28:14
_| ̄|○
297仕様書無しさん:04/09/12 16:31:31
_| ̄|○  ○| ̄|_
>>296
298仕様書無しさん:04/09/12 16:33:21
// ↓もうだめぽ↓
299297:04/09/12 16:34:49
            / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧∧   |  でも競争相手いないから
      (,,゚Д゚) ;<  見積もり素通りでウハウハさ!
     /  |    |
.....,,....〜(,_,,ノ.....,,,,....\__________





        il||li  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧∧    |
     /⌒ヽ)  <   半年後のことは分からんがな・・・
.....,,....〜(,_,,,).....,,,,....\_____________________.
300仕様書無しさん:04/09/12 16:40:29
perl2vb コンバータで VB 使いは絶滅するのかな?
いまどき言語依存の案件など存在しないだろう?
301仕様書無しさん:04/09/12 16:43:26
_| ̄|○ 既に保守案件のみdeathよ
302仕様書無しさん:04/09/12 16:43:30
選択肢が決まってる仕事なんて幾らでもまだあるだろ?
本当に仕事やったことあるのか?

前バージョンの存在による都合、パッケージのカスタマイズなどの場合の元パッケージの都合。
そういうのを含めて、何でもござれだったらいいんだよ。

>>300
それは絶対ありえない。
303仕様書無しさん:04/09/12 16:44:19
Java最高。JETとか使ったりしたらもっと最高
304仕様書無しさん:04/09/12 17:00:58
_| ̄|○ il||li
既に死語になりつつあるのは承知の上さね。
今は保守案件があるからいいように使われているが。
俺らはもう絶滅危惧種なのさ…。
305仕様書無しさん:04/09/12 17:03:08
ちゅうかさ、最近内容が逸れてるね。
早く脳髄がぐらぐらするようなソースくれよ。
306仕様書無しさん:04/09/12 17:12:40
なんで他の言語を学ばないんですか?
307仕様書無しさん:04/09/12 17:19:00
>>306
学ばない奴は、どの言語でもいるし、それは本人の問題。
言語なんぞ、基本が出来てれば、数週あればどうにかなるもの。
308仕様書無しさん:04/09/12 17:34:32
開発方針の情報源がにちゃんねるだけという会社です('A`)辞めたい…
309仕様書無しさん:04/09/12 18:09:44
>>308
それは貴方を含めてじゃないの?
不平・不満を言うよりも、進んで明かりをつけましょう。
310仕様書無しさん:04/09/12 18:17:38
>>309
いや、漏れはいろんなことろから探しているんですが
上の連中はにちゃんねるのレスで判断するんですよ('A`)終わってる
もちろん下っぱの漏れには裁量権がないんですよ
311仕様書無しさん:04/09/12 18:21:20
>>310
他人は他人、自分は自分。
そういう下にいる程度という現状は、現時点でのあなたの実力です。
単純に場を変えるのではなく、実力を磨いてぬけましょう。
312仕様書無しさん:04/09/12 18:29:56
やっぱり場を変えます。腐ってしまう。下らない連中とは一生縁を切らないと
313仕様書無しさん:04/09/12 18:33:42
まあ、冷静にね。
100不満あったとしても、100を場のせいにしちゃだめだよ。
気付かないうちに、根無し草・不平屋にならないようにね。
314仕様書無しさん:04/09/12 23:55:30
>>290-291
コンパイラみたいな融通の利かないレスするなあ、まったく。
今のまま行って、将来出世なり職が微妙に変わるなりしても、
結論として食えるの?って意味でレスしなくちゃ。
315仕様書無しさん:04/09/13 00:04:51
>>314
じゃあ、そんなこと他人に聞かなきゃ判断できない奴は、今後食えないと思う。
316仕様書無しさん:04/09/13 01:46:28
去年の話だけど、先輩とVB+Accessでシステムを組んだ。
テーブル設計は先輩がやってるのだけど、最初からぜんぜん
正規化されてないし、システムを組んでる途中でも、テーブルに
列を追加していって、どんどん非正規化していく。

これってまずいんじゃないですか?と話をしてみると、
「教科書的な組み方をしてもパフォーマンスは出ない、俺は実践で
ノウハウを身に着けた」みたいな、みえみえの嘘をカッコつけて言う。

自分ではSQLを書けなくて、正規化されたテーブルだと、データを
引っ張ってこれないから、あんなテーブルを作ってるのはバレバレ
なのに。
(SQLが必要なときはAccessに生成させて、それをコピペ)

まあ、正規化という言葉を知らなかったくらいだから、自分のヘボさ
を隠すためではなくて、本気でそう言ってたのかもしれないけど。
317仕様書無しさん:04/09/13 07:40:10
>>316
君にアドバイスだけど、実務で正規化なんてあまり意識しないよ。
よっぽどパフォーマンスを良くしたい場合には、入念に検討するが、
それ以外は、わかりやすさが一番重要。
・SQLが必要なときはAccessに生成させて、それをコピペ
とても実践的なやり方だと思うよ。
それをカスタマイズしてきちんとしたSQLにするのが一番わかりやすいと思う。
318仕様書無しさん:04/09/13 07:59:59
>>317
カンベンしてくれ
319仕様書無しさん:04/09/13 08:01:01
知らんけど、AccessのSQL生成ってそんな高度なの?
320仕様書無しさん:04/09/13 08:02:15
>317

>わかりやすさが一番重要

わかりやすさとパフォーマンスのバランスを取った上で、
おおむね第三正規化形がいいってんでなかったか?
321仕様書無しさん:04/09/13 08:04:03
>319
そう馬鹿にしたもんでもない。
……言い換えれば、よほど変な処理をしたいんでない限り
SQL文はかなり機械的に生成できると言うことでもある。
実際EJBってDBと直接やりとりする層がそれ相当のことしてるんじゃなかったっけ?
322仕様書無しさん:04/09/13 08:10:59
正規化をしたうえでパフォーマンスが出ない部分でのみ非正規化を行うべきだという、当たり前の事もできない>317
Accessに生成させたSQLはすっげ読み難いから、人間の手で書いた方が早いという言もある。
323仕様書無しさん:04/09/13 09:52:11
>>319
分からない。
もしかすると、高度に使いこなせば、自由自在にSQLを作れるしろもの
なのかもしれないけど、そこまでするなら、SQL覚えたほうがいいと思う。
324仕様書無しさん:04/09/13 10:17:01
SQLは習得すれば、他のシステムでも使えるけど、Accessのクエリビルダ(だっけ?)は、
Accessだけでしか使えないし、時間を割いて勉強する気になれなかった。
(勉強してないから違うかもしれないけど、表現力もSQLより劣ると思う)

それに数行のSQLを書くのにいちいちAccess立ち上げるのって、効率わるいと思うし。
325仕様書無しさん:04/09/13 11:31:20
ふとサブクエリなんかはAccessのGUIでどう表現されるのかと
思い、やてみた。

条件式の中にそのままサブクエリが入っていました。

……やっぱ自分で書こう
326仕様書無しさん:04/09/13 12:08:49
>>320
へたに正規化しすぎるのもわかりずらくなり、パフォーマンスも落ちることもある。
分かりやすさを追求すると結局、第2か第3正規形に必ずなると思う。
だから、あまり意識したことはない。
SQL実行が遅い原因は、テーブル構造では無く、
結局SQL文自体に原因があることが多いと思うが・・・。
正規化なんて言葉は、情報処理試験には大事だけどそれ以外で大事だと
感じたことはない。
327仕様書無しさん:04/09/13 12:25:29
ゲームプログラマの漏れは、正規化正規化いわれて
なんでSQLにベクトルの正規化がでてくるんだとか、まじめに考えてしまったよ、、、
328仕様書無しさん:04/09/13 12:42:55
スタンドアロンのシステムで、データ量もたいしたことないし、
パフォーマンスのためにあえて非正規化するような状況ではなかったです。
同じ情報があちこちのテーブルにあって、状況によってはそれらが食い違ってる
みたいなことになっていて、保守にはかかわりたくない状況にすでになってたし。

329仕様書無しさん:04/09/13 12:44:21
>327
……それ勘違いしたまま会話すると怖いな……
例えば、あるゲームのゲーム自体のPGと、宣伝/サポートサイトのWebグラマとか。
330仕様書無しさん:04/09/13 12:51:43
>>326
典型的な正規化知識のない奴の言い訳だな。
それか10年前のDBMSを触っていらいの知識で固まってしまっている。

現状、正規化をきちんとするのは至極当然のことだよ。
非正規化が必要になる場面なんて、本当にかぎられるし、
それをやるのは設計上で正規化をやった上で、崩すことであって、正規化をしないということではない。

で、こういう奴に限って、アクロバットなSQLが得意なんだよね。w
そうじゃないとデータが取れないから、不要なSQLをたんまり知ってたりする。
331仕様書無しさん:04/09/13 13:17:01
使用言語はBASIC。仕様書、資料は頭の中。その人やめてひちゃかめちゃか。
OSがDOSだからよかったがWINDOWSはどうしようもなくソフトの開発やめてLEDディスプレイ、防災無線の販売のみにしたような会社もある。
数ケ月でやめて、何年もたって求人みたから詳しくはわからんが。
332仕様書無しさん:04/09/13 14:27:52
>>330
激しく同意。
横に冗長なクソDB設計をする香具師は例外なく無能。
333仕様書無しさん:04/09/13 16:57:38
>330
同意。
アクロバットなSQLが凄いのはわかるがそれより先にする事がある。
334仕様書無しさん:04/09/13 18:41:25
Servletにて。

try {
 String hoge = request.getParameter("hoge");
 if ( hoge.equals("") ) {
  // hogeの入力が空の場合の処理
 } else {
  // hogeに入力があった場合の処理
 }
} catch ( NullPointerExceptionn e ) {
 // hogeがセットされていない場合の処理
}


いや、そこは try して例外をハンドリングする場所じゃないだろう。
hogeがnullかどうかで見なさいよ。
335仕様書無しさん:04/09/13 19:04:33
>>334
ぬるぽガッ
336仕様書無しさん:04/09/13 22:11:37
>334
じつは何らかのよんどころない事情でrequestオブジェクトがnullになる。。。わけないな。
337仕様書無しさん:04/09/13 23:58:15
>>336
ServletのdoPost()等でそれが起こったら驚天動地の大騒ぎになるな。
338仕様書無しさん:04/09/14 00:01:48
>>336
「〜の処理」の部分でぬるぽが投げられるに一票
339仕様書無しさん:04/09/14 08:34:31
おお、そーいや request != null とか書いたことないな。サーブレット優秀だ。
340仕様書無しさん:04/09/14 09:05:08
>>339
そんなことで優秀といっているちみはどんなコードを書いているんだ?
ソース晒せや
341仕様書無しさん:04/09/14 09:21:38
ポインタ引数にnull渡さない
ポインタ戻り値にnull返さない

をお約束にしておくと、ぬるぽ被害を抑えることができますよ・・・
あれ、javaにassertってありましたっけ
342仕様書無しさん:04/09/14 09:47:22
>>341
しかし、某オープンソースライブラリの前に脆くも敗れ去るのであった…
頼むからNull返さないでException吐いてくれっ
343仕様書無しさん:04/09/14 11:11:22
昔派遣で逝った某社のコーディングルールは戻り値はbool型のみってのがあったな。
値が必要な場合は第一引数に渡すってルールだった。

恐らくぬるぽ防ぐためのルールだったんだろうけど、あんまり効果はなかったような・・・
344仕様書無しさん:04/09/14 11:32:59
それは、そういうルールにしないと
エラーチェックしない香具師がいたんじゃないか?

C++だとしたら、例外にしろよという意見もあるかもしれないが
いまだ例外はまともに動かない環境は多い
特に例外があるとデバッガがうごかないというのは、あたりまえのようにある
345仕様書無しさん:04/09/14 12:38:04
>>338
>>343
ガッ
346仕様書無しさん:04/09/14 20:57:08
>>341
1.4からある。使ったこと無いけど。
347仕様書無しさん:04/09/14 22:22:24
>>344
戻り値がbool形だとエラーチェックは強制されるのか?
348仕様書無しさん:04/09/14 22:27:35
あーすまんこ
メソッド作る側が、エラーを教えるのを強制できる
まあ、エラーになってもtrue返す香具師がいたらどうしようもないが
349仕様書無しさん:04/09/15 00:14:30
  for i = 0 to n
    if flg = true then
      goto NextProc
    end if

    ...

NextProc:
  next i


('A`)
350仕様書無しさん:04/09/15 00:16:19
コメントがひとつもないよ!
仕様は某阿呆の頭の中


('A`)ヤメヨウ
351仕様書無しさん:04/09/15 00:32:40
>>348
つうか、呼び出し側で戻り値チェックしなかったら何もならん。
例外を投げるのが一番。
352仕様書無しさん:04/09/15 01:12:21
>>351

>C++だとしたら、例外にしろよという意見もあるかもしれないが
>いまだ例外はまともに動かない環境は多い
>特に例外があるとデバッガがうごかないというのは、あたりまえのようにある
353仕様書無しさん:04/09/15 02:46:17
>>349
別チームのソース

/* バグ対応:問題があった */
hoge
hogehoge
hoge
/* バグ対応:問題を解決 */


こんなんばっかし。何の問題があってどう解決したのかを一切書かない。
コメント無いほうがマシだよったく。
354仕様書無しさん:04/09/15 04:44:10
>>349
激しくContinueが欲しい。
355仕様書無しさん:04/09/15 08:00:11
>349
可読性が悪いのでcontinue禁止!
なんてコーディング仕様が・・・あったんだよな実際 orz
356仕様書無しさん:04/09/15 09:18:49
>>355さん、元は多分VBなので、”こんちにぅ”なるものは、禁止なにも無いんですよ・・・。

でも、下手にIFを引きずるよりも、ここはGotoで飛ばしたほうがマシなようば場合もある。
Continueだって、>>349のGotoと同じわけだから、>>349のGotoはありだと思うよ。

とはいっても、IFの中で具だ具だ処理するなら、そこを関数化して、GOTOを外すことは可能だな。
357仕様書無しさん:04/09/15 09:55:55
>>356
ていうか おきまりだが
i=0
while i<=n and flg <> true

i=i+1
wend
だろ
358仕様書無しさん:04/09/15 10:03:46
>>357
そこが問題なのではなく、コンティニュー代わりのGotoが問題だろ?
あなたのそれにしても、間の処理がずらずらあって、それらの途中で次ループにしたい場合はどうするの?
359仕様書無しさん:04/09/15 10:29:07
>>342
場合によるだろ。
例外処理がコストの高い処理であることをお忘れなく。
360仕様書無しさん:04/09/15 11:08:06
361仕様書無しさん:04/09/15 11:14:29
>>343
WRITEING SOLID CODE という本がそういうスタイルを奨励してる。
そういう流儀もあるってことで。
362仕様書無しさん:04/09/15 11:40:42
>>361
余分な言い訳などいらん!結果だけ報告しろ!
って上司のような考えかたでしょうか?
まあ、下がそれぞれにトラブルを処理できる組織ならOKですね。

そういう構造をプログラムに持ち込めれば確かに成立するけれど、
個々のトラブル対応が的確であることが前提だよね。

363357:04/09/15 13:23:24
>>358
そんなコードは書かない
364仕様書無しさん:04/09/15 23:28:31
>>363
コードが助長になるだけな気がする。
365仕様書無しさん:04/09/16 00:58:58
あれ?
Continue 無くても
Exit For
とかで代用効かないっけ?
まあ、処理上問題無いなら、俺もGoToでも良いと思うよ。
その方が人間には見やすい場合もあるしね。
昔、FortranのソースをCに移行って経験したは、ふざけんなGotoって
思ったけど、僕はいろいろ経験していく上で丸くなりました。
366仕様書無しさん:04/09/16 01:07:51
hlt
nop
nop
nop
; このnop取るべからず。

これで元気になりました。
367仕様書無しさん:04/09/16 01:08:15
>365
>Continue 無くても
>Exit For
>とかで代用効かないっけ?

( ゚д゚)ポカーン
368仕様書無しさん:04/09/16 01:12:00
エラー処理や多重ループから抜けるときなど
gotoを使った方がよく、わかってて使う場合はいいと思う

まあ、機械語レベルでは条件にせよ、繰り返しにせよJMPの嵐なんだがw
369仕様書無しさん:04/09/16 01:25:24
>>366
どこがつっこむ所なのかわからないので教えてくれませんか?
パイプラインのあるCPUならそう書かないとだめでは
370仕様書無しさん:04/09/16 01:29:42
>>369
いや、割り込みのタイミング取り用。
最近のCPUなんかだと別途便利なものが用意されているので使われない方法だけど。
371オヤジ:04/09/16 01:59:31
>>370
懐かしいな。
初期のDOSマシンで、次機種が出る度ヒーヒー逝って
nop数調整と再テストするプログラム多かったっけ。
372仕様書無しさん:04/09/16 02:13:57
MsgBox "このメッセージが出たら、内線XXXXの○○まで電話してください!!"

問題点
・メッセージがハードコーディング
・別の場所へ移植したからその内線通じないんですが。

どこからも呼ばれない関数だったからいいけどさぁ。
373仕様書無しさん:04/09/16 02:31:45
>>357
どこがおきまりなのか教えていただきたい。
374仕様書無しさん:04/09/16 02:51:39
//腹イテ
375仕様書無しさん:04/09/16 04:41:19
>>365
漏れが辞めた原因の上司と似てるな!
376仕様書無しさん:04/09/16 09:25:45
>>372
まあ、その心構えは認めてやれば?w
連絡先晒す前にやることあると思うけどね。
377仕様書無しさん:04/09/16 10:03:42
>>372
イースターエッグじぇないのか?
378仕様書無しさん:04/09/16 11:43:29
>>366
パイプラインの問題回避の為じゃないかな?
普通のソースだとおもうが。
379仕様書無しさん:04/09/16 13:33:16
>>378
この会社にも普通のことができる人がいたんだー
と安心して嬉しくなって元気になったんじゃないかと思われ
380仕様書無しさん:04/09/16 16:22:43
向かいの席の人が書いたバッチ処理用のスクリプト。

eval {
 $conn = DBI->connect("dbi:Pg:dbname=****;host=****",$user,$pass);
};
if (! $conn ) { exit; }


頼む。エラーである事を教えてくれ。何なら、die() だけでもいい。
このままだと正常終了と区別つかん。
381仕様書無しさん:04/09/16 16:32:44
普通&Error('Cannot connetct to DB');とかだよna
382仕様書無しさん:04/09/16 17:03:52
eval
{
  DBI->connect("dbi:Pg:dbname=****;host=****",$user,$pass) or die({ msg => DBI->errstr });
};
if ($@)
{
  print "Content-Type: text/html;\n\n<html><body>" . $@->{msg} . "</body></html>";
  exit;
}

とかやるよね、ふつう
383仕様書無しさん:04/09/16 17:29:21
>print "Content-Type: text/html;\n\n<html><body>" . $@->{msg} . "</body></html>";
....('A`)...
384382:04/09/16 18:06:23
>>383
これは例だって
いつもこんなんやらないよ
385仕様書無しさん:04/09/16 23:16:46
select ... from (((tbl1 left join tbl2 on ...) left join tbl3 on ...) left join tbl4 on ...) ...

('A`)
386仕様書無しさん:04/09/16 23:20:22
>>385
テーブル設計した奴に文句いってやれよ。まあ多分同一人物だと思うが。
387仕様書無しさん:04/09/16 23:45:56
>>385
right joinが混じっていないだけまだマシかもしれぬ。漏れの所よりは。
388699:04/09/17 00:52:45
>>385
状況がよく理解できんが、普通じゃないのか?
問題は、テーブル設計とかじゃなくて、仕様自体がかなりカオスってるんだろ。

389388:04/09/17 00:53:15
名前ミスった。
390385:04/09/17 01:18:26
それが普通に内部結合できたりするわけで・・・。
やっぱり書き換えたほうがいいのかな・・・。
391仕様書無しさん:04/09/17 12:04:26
煽りじゃなくて本当に分からないのだけど、
>>385はINNER JOINですむのに、LEFT JOINしてるのが
いけないってこと?
392仕様書無しさん:04/09/17 14:02:00
具体的なコードは覚えてないけど、ZopeのLocalfs上の
オブジェクト(ファイル)の存在チェックで、対象オブジェクトが
存在するかどうかにかかわらずアクセスかけて、それを try と catch
で捕まえて、オブジェクトが存在するかを確認してるヤツがいた。

無駄にコスト高いチェック方法だなオイ。
393仕様書無しさん:04/09/17 19:56:52
でも確実だ
394仕様書無しさん:04/09/17 20:15:15
>>391
>>385は、tbl4の後にも
更に大量にJOINが続くのだと言いたいのではないだろうか。
多分。
395仕様書無しさん:04/09/18 00:24:23
if ( hoge1 ) foo1();
else
if ( hoge2 ) foo2();

if ( hoge3 ) foo4();
else
if ( hoge4 ) foo4();


本人は満足かもしれんがロジック以外で頭使わせられるのはちょっと困る
頭使わないためのインデントだと思うし
396仕様書無しさん:04/09/18 12:19:50
>>395
あ。言われてみると、それ漏れもうまく書けそうにない。。。

if (hoge1)
 foo1();
else if (hoge2)
 foo2();

if (hoge3)
 foo3(); // foo3 だよな?
else if (hoge4)
 foo4();

オーソドックスにはこうだな。これでええの?
397仕様書無しさん:04/09/18 13:11:21
インデントは、あると無いでは大違いだが
仮にあったとしても、どのようにつけるかで大きく違う
ルールを決めていないのであれば、自動化ツールでインデントすることをお勧めする

ルール化したいのであれば、既存のルールをもってくるのが揉めないですむ
たとえばGNUのコード規約に則ってみるとか
398仕様書無しさん:04/09/18 13:16:47
あえてGNUのコード規約かよ!
399仕様書無しさん:04/09/18 13:19:19
>395
多少コード量が増えてもこう書けと?
if ( hoge1) {
  foo1();
}
else {
  if ( hoge2 ) {
    foo2();
  }
}
#3,4も同様
400仕様書無しさん:04/09/18 13:28:32
>>399
何言ってんの?
401仕様書無しさん:04/09/18 14:09:44
>>399
分岐の中に関数が追加されたときとかを考えるとその方がいいと思う。
俺自身の慣れもあるかもしれない。
402仕様書無しさん:04/09/18 14:20:04
>>399
見やすく、メンテしやすく。
403仕様書無しさん:04/09/18 15:11:07
>>399
もとのコードじゃ、else とその中の if でブロックを分けるべきか、
else if で1ブロックにしてしまうべきか判断はつかないな…
# でも何となく else if で1ブロックの方が元の意図に合ってる気もする
404仕様書無しさん:04/09/18 21:28:28
if ( hoge1) {
  foo1();
} else {
  if ( hoge2 ) {
    foo2();
  }
}
のほうがいい
405仕様書無しさん:04/09/18 21:42:11
おまいらはこんなのに遭遇したらどうしますか?

if (hoge10 && hoge11) {
  foo1();
} else if ((hoge20 || hoge21) && hoge22) {
  foo2();
} else if ((hoge20 && hoge10) || hoge11) {
  foo3();
} else if ((hoge20 || hoge11) && hoge30) {
  foo4();
} else if ((hoge31 && hoge10) || hoge30) {
  foo5();
}
406仕様書無しさん:04/09/18 21:49:46
>>405
どうもしない
407仕様書無しさん:04/09/18 21:54:28
>>405
その程度は普通じゃないの?
それで会社辞めてたら、履歴書に職暦書ききれなくなるよ。
408仕様書無しさん:04/09/18 21:58:38
そのまま
409仕様書無しさん:04/09/18 22:02:49
だよな、IF文を日本語にしたらまだ普通に読めそうだし。
綺麗だし。

>>405がANDとORを使わずにIF文ネストしていたら辞めるかもしれないけど。
410仕様書無しさん:04/09/18 22:04:25
>>405はどういうレスを期待してたのか知りたいw
411仕様書無しさん:04/09/18 22:04:57
>>405
少し考えた後、やっぱりそのままにしておく。
412仕様書無しさん:04/09/18 22:05:15
フラグがほんとにhoge10とかだったら嫌だがな。
普通の変数名にしてくれ。
413仕様書無しさん:04/09/18 22:05:25
>410
教条主義者がトンデモなソースにするのを期待していたのかも。
414仕様書無しさん:04/09/18 22:33:18
>>405
そのhoge10とかが、lngXxx=2みたいな感じでコメントレスに
マジック変数が使われてるのなら見たことあるよ。
まぁ、修正が入ったときは、マゾヒスティックな快感が得られたね。
415仕様書無しさん:04/09/18 22:37:37
そうやって俺をイラつかせて、何をしたいんだ。
俺に恨みでもあるのか。それとも人をからかうのが好きなのか。
どちらにしても、お前は悪意をもって人を傷つけようとした。
こういう事はこれで最後にしろ。
416仕様書無しさん:04/09/18 22:40:13
そのコピペ便利だね。
417仕様書無しさん:04/09/18 22:51:48
>415
それいただきました。
418仕様書無しさん:04/09/18 22:52:17
まとめるとこんな感じか?

     hoge10 hoge11 hoge20 hoge21 hoge30 hoge31 |
hoge10  △    ○    ○    ○    ○    ○  |
hoge11  ×    △    ○    ○    ○    ○  |
hoge20  ×    ×    △    ○    ○    ○  |
hoge21  ×    ×    ×    △    ○    ○  |
hoge30  ×    ×    ×    ×    △    ○  |
hoge31  ×    ×    ×    ×    ×    △  |
----------------------------------------------------
△=○×

全ての条件の組み合わせは何通りだろ?
419仕様書無しさん:04/09/18 22:52:41
中華、405が何を嫌ったのか、早く出てこいよ。
420仕様書無しさん:04/09/18 22:54:32
>>418
何をどうまとめたのかよくわからんよ。
それぞれ毎に別処理呼んでるんだから、○×じゃ的魔羅んだろ?
421仕様書無しさん:04/09/18 23:08:35
つまりだなぁ、所詮この程度の条件分岐でしかないんだよ?って言いたいんだろ。
いや、喪前の言う通りだ。
そうやって俺をイ(ryo
422仕様書無しさん:04/09/18 23:16:15
この程度じゃないぞ。
hoge10だけの条件が成立する場合とか
hoge10とhoge20だけでいい場合もあるし
全部の条件が成立する場合もあるし
423仕様書無しさん:04/09/18 23:23:30
ビットマップ演算を使いたくなった俺はオヤジですか?
424仕様書無しさん:04/09/18 23:25:16
決定表
425仕様書無しさん:04/09/18 23:51:19
>>424 ソレダ
426仕様書無しさん:04/09/19 00:24:29
>>422
まぁ、モチツケ。
そうやって、汚いソースに敏感になることはいいことだ。ワカイッテイイナ。
427仕様書無しさん:04/09/19 00:57:24
405は1年目かな?
428仕様書無しさん:04/09/19 01:19:59
だから余計なことするな
そのままにしとけて言っただろ
429仕様書無しさん:04/09/19 04:56:47
405程度ならほっとく。

おれは入社直後、case文とif文のお化けみたいな合計3000行の「関数」を見たことがある。
caseの中にifが3階層ぐらいネストしててその中にまたcase文があったり、、、
間違って{を消してコンパイルエラーが出たらそれはもう恐ろしいことに。
430仕様書無しさん:04/09/19 05:08:05
一部抜粋すると概ね、

                   }
                 }
               }
           }
        }
     }
  }


なコードを見たことがある。
って、今のプロジェクトだ_| ̄|○
431仕様書無しさん:04/09/19 06:09:51
OOPがやりたかったのに出来なかったコードも辛い。
そのコード渡されて、extendsして作ってって言われても・・禿鬱
432仕様書無しさん:04/09/19 07:20:00
>>430
あるよね。それ、あるよね。
こうでもなく、あーでもなく、でもこのときに、こうで、ああで、みたいなIF文の嵐。
それがコメントレスなもんだから、どういった条件か予測つかないの。変数名も投げやりだし。。。
433仕様書無しさん:04/09/19 08:03:27
俺の脳には論理演算最適化オプションが付いてるからどんな条件でも2行で表現できる
434仕様書無しさん:04/09/19 09:13:56
桁数制限無いもんな。
435仕様書無しさん:04/09/19 11:11:01
反対に短すぎて(,, ゚д゚)ハァ?ってのもあったぞ。

 if((rd<nx) ^ (nx<cu) ^ (cu<rd)) hoge();
436仕様書無しさん:04/09/19 11:16:47
>>430
俺は、ある奴がそういうコードを「糞だから書き換える」といい、

if( ** ) hoge();
else if (** ) hoge2();
else if ( ** ) { hoge3() hoge(); };
else if ( ** ) {hoge4(); hoge5(); }

のようにやってしまい、見事死ぬほどのデグレを出してたのを見たことがある。

上司 「おまえ、なんでこんなことやったんだ!!」
そいつ 「だって、前のコードが死ぬほど糞だったんで・・・」
上司 「前動いていたものを勝手に書き換えるなんて、普通はやらないぞ!」
そいつ 「ええ、でも部長だってこんなコード書く奴、糞なやつだと思うでしょ!!」
上司 「お前よりマシだ!!!」
そいつ 「・・・・・・・・・・・・」(その後、男なのに泣き出した)

今は、もう、いない。
437仕様書無しさん:04/09/19 11:54:02
>>436
それは上司のほうが正しいと思うが。
内部的に糞でも動いてるソースを動かなくしちゃダメだ。
438仕様書無しさん:04/09/19 12:44:31
>>436
その行為自体で言えば、そいつが無対策に「修正」やったのが悪い。
だけど、そういう行動起こせるやつの方が、将来的には伸びるんだよなー
439仕様書無しさん:04/09/19 12:49:11
どうかな。
現在も将来もその箇所の保守・改造が不要なのであれば、修正は
愚かだけど、ありうるのなら正解と思う。
440仕様書無しさん:04/09/19 12:54:14
まあ、なにかの改造のついでの話だよね。
関係ないときにやって止めたとしたら、阿呆だ。仕事ってモノをしらなすぎ。
で、改造のついでだとしても、テストしたのかと・・・。
意気込みはまあいいけど、仕事なんだから仕上げろよって。
441仕様書無しさん:04/09/19 13:13:37
最初に糞コードを書いた奴が一番悪いに決まってんじゃン。
その時にレビューしなかったのかと。
442仕様書無しさん:04/09/19 13:14:59
動いてる糞コードと、動かない改善コード。
どっちが悪いっていったら動かないコードだろ?
443仕様書無しさん:04/09/19 13:19:48
テストしないの?
444仕様書無しさん:04/09/19 13:49:04
やりたきゃやっても良いけど「勝手に」がだめなんだろう?
将来的にも機能追加&改変をし続けるようなベースアプリとかだったら
上司にソース見せて「ここすごい腐ってるんですけど作り直して良いですか?」
ぐらいはいっとかないと。
たいていの上司は動いてるソースに手を加えるのを嫌がるけど、
糞コードもしくは糞仕様が将来の機能拡張にどれだけ悪影響を及ぼすか
説明して説得する。
それを怠って勝手にやって、しかもちゃんと動かなくするなんてただのバカ

そういう意味ではバグだらけの糞コードを
「引き継いで機能追加して」(←バグだらけなのは言わない)
とかで引き継がされたときの方が幸せだよな。

心おきなくファイルごと消せる。
445仕様書無しさん:04/09/19 14:01:28
その糞コードを書いたのが実はその上司という落ち
446仕様書無しさん:04/09/19 14:07:15
ありそうだな。
ありそうだがそうでなくてもまあ、流れ上怒るのは仕方ないだろう。
でもそうだったらその上司の心理を想像して笑える。
笑えるがその上司はきっとそのコードを糞とは思っていないだろう。
447仕様書無しさん:04/09/19 16:49:49
…修正じゃなくて、バグ埋め込んだんだから怒るのは当然という単純な話じゃないの?
448仕様書無しさん:04/09/19 18:01:34
単体テストも書かないで、リファクタリングする奴は糞
449仕様書無しさん:04/09/19 18:31:43
書かないよ。
そんな暇ないし・・・どうせテストするの漏れだし・・・

そうだよ、典型的な○○だよ・・・_| ̄|○
450仕様書無しさん:04/09/19 18:37:37
>>449
書かないでテストをするから、悪循環してんじゃないの?
今流行のXXUnitでもいいし、箇条書きでもいいから書かないと。
451436:04/09/19 22:48:32
>>437
当たり前だろ。話の流れからして、「そいつ」を擁護しているように見えるのか???
452仕様書無しさん:04/09/20 00:54:31
>448

出力(ふるまい)を変えてしまうならリファクタリングではないぞ(w
453仕様書無しさん:04/09/20 00:58:04
怒らんでもえぇ(^_^)
みんなわかってる。
454仕様書無しさん:04/09/20 05:09:19
つーか、そんなバカに苦労させられてる奴だっているはず、、、きっといるはず。

俺も若い頃はやった。先輩のソース堂々とコメントアウトした
さすがに、、、つーか、幸いバグは組み込まなかったけど
今思うと危ない橋渡ったなぁ、、、とか思う
455仕様書無しさん:04/09/20 10:51:24
漏れはバージョンアップ時を見計らってコソーリ糞コードを直してます。
どうせ開発中にテストするから(修正が)多い日も安心。
ついでにxUnitの単体テストケースも書いてみたり。
正直手間がかかってしょうがないが、きっと将来役に立つと信じつつ・・・
456仕様書無しさん:04/09/20 10:57:06
まあ、それが仕事ってもんだよね。
地味だけどじわじわきいてくる。

土台ないところに母屋は立たぬだけど、たってしまったものはしょうがない。
どうにか土台の補強工事を。

ああ、でも立て替えてーって仕事は一杯あるね。
457仕様書無しさん:04/09/20 11:35:28
Ruby!!!!!!!!
458仕様書無しさん:04/09/20 12:58:03
ちょっとしたロジックならこっそり修正はするけど、
大規模なのは我慢するな。
それが元でバグが1つでも出たら言い訳できないから・・・

30代後半とか、40代の人は
 ・よくわかっている
 ・何度言っても理解できない
の2種類しかいないよね。後者はとくに厄介。

早期発見、早期首(契約切)。これに尽きる。
459仕様書無しさん:04/09/20 13:09:11
>>458
流動できる人材の条件がそうだから。

きちんと仕事ができて、仕事をずるずるせずに完結できる人。
or
どこも御免ってひと。
460仕様書無しさん:04/09/20 14:32:51
思うんだけど、早く終わらせたらボーナス、遅延したらペナルティってやっとる所あるん?
これ最強。
461仕様書無しさん:04/09/20 14:34:32
プロジェクトが独立採算制で終了が明確なら出来るんじゃないの?
まあ、早ければいいってわけじゃないし。
462460:04/09/20 14:46:49
できる人はどんどん別のプロジェクトを渡り歩いて儲かるよ(w
>早ければいいってわけじゃない
463仕様書無しさん:04/09/20 15:17:40
とある処理(char *p){
 /* pは呼び元で領域確保してある事が前提 */
 pをつかう
 :
}

 ↓
[漏れ]コメント書くくらいなら確保されているかどうかチェック汁!
 ↓

とある処理(char *p){
 /* flagには呼び元で領域確保してある証拠として1をセット */
if(flag==1){
  pをつかう
  :
 }
}

orz
...フラグ(しかもグローバルかよage)
464仕様書無しさん:04/09/20 15:24:33
グローバルカコイイ!!!RUBY!!!
465仕様書無しさん:04/09/20 15:42:14
>>463
ポインタ渡されてきた関数内で確保されているかどうかチェックって、どうやんの?
466仕様書無しさん:04/09/20 15:45:08
>>463
確保されてるかのチェックってどうやるの?
NULL じゃなくても確保されてない場合は有り得るぞい。

変な指摘に苦しんだ結果のグローバルとみた。
467仕様書無しさん:04/09/20 15:51:34
pになんか書いてみてうまくいけば確保されてる
468仕様書無しさん:04/09/20 15:55:08
>>467
とってもリスキーなチェック方法でつね。
469仕様書無しさん:04/09/20 15:55:32
俺的には50%の確率で動けば「確保」と定義されてる。
470仕様書無しさん:04/09/20 16:16:39
>>467
  ∧_∧   
   ´ ` `< ぬ
471仕様書無しさん:04/09/20 16:28:31
Cの欠点であり利点が理解できていない>>463さんでした。
多分、彼の知識はどっかで間違ったことを覚えてしまっていたと。
472仕様書無しさん:04/09/20 16:35:47
>>463
>とある処理(char *p){
> /* flagには呼び元で領域確保してある証拠として1をセット */
>if(flag==1){
>  pをつかう
>  :
> }
>}

これ書いた奴って、結構頭良いと思う。
駄目な先輩から無理難題を押し付けられても、
しっかりウイットに富んだ回答を出してくる。

でも、それだけの能力があれば、
もっと幸せな職場にいけると思うんだけどな・・・
473仕様書無しさん:04/09/20 17:15:18
>>472
グローバル変数にするのが頭がいいことか?
誰がいつ書き換えるかわかんな・・・


あ、>>463の自己擁護だったかw
474仕様書無しさん:04/09/20 17:18:39
>>473
そんなに悔しいか?
475仕様書無しさん:04/09/20 17:22:56
>463
「そこにそんなコメント書くな、いらね消しとけ」
に一票
476仕様書無しさん:04/09/20 18:13:40
>>463
つまり、Stringクラス相当のものでラッピングして、
領域確保、開放、確保チェックはメソッドでやってくれと。

477仕様書無しさん:04/09/20 18:35:06
つーか、普通初期値ってあるだろ
*pがNullなら
設定なし
処理しないエラー(−2)(通常エラー:−1)
戻り値は(正常:0)
この場合、処理格納先は*pか格納先も引き渡されるようになっていると思うけど

478仕様書無しさん:04/09/20 18:41:11
>>477
意味わからん。
479仕様書無しさん:04/09/20 18:42:56
天才的なCのPGさん、>>477を解説して下さい
Cは少ししかかじったことないんで理解できません
480463:04/09/20 18:58:45
いいか、念のため逝っておくぞ。
>477 は漏れぢゃないからな。勘違いするなよ。
481仕様書無しさん:04/09/20 19:05:08
1行ずつ解読してこう。

>つーか、普通初期値ってあるだろ
これは多分、引数の初期値のことをいってるんだろうな。

>*pがNullなら
えーと……

↓次の奴頼む
482仕様書無しさん:04/09/20 19:11:59
>*pがNullなら

漏れたちはやはり思い違いをしていたようだ。
char *として渡されたp、しかしそれは本来char **なものだったのではないか?
そしてnullでもNULLでもついでにnilでもないNull……

そう、これは(ry

ΩΩ Ω<な、なん(ry
483仕様書無しさん:04/09/20 19:13:31
せめて、pがNULLならだよな。
*pがNullじゃなくて。

で、そもそもその前提を守ることを前提にコードを組むか、
呼び出された側がそれを考慮して組むかの議論じゃなかったの?

でもって、Cの場合、呼び出された側が幾ら努力しても、必ずしもチェックは仕切れる門じゃないと。
484仕様書無しさん:04/09/20 19:14:41
>*pがNullなら

これ、実はCの話じゃないでしょ?
みんな、思い込みは良くない
485仕様書無しさん:04/09/20 19:18:56
じゃあなんだろう?
*pなんて変数名を許してる言語って少ないと思うよ。
*が乗算演算子だったりするから。
48669式フリーPG ◆hND3Lufios :04/09/20 19:23:20
#define Null 0

/** 注意! 引数は必ず0以外の初期値を与えた変数のアドレス。
mallocのアドレスを与える場合には呼出前に先頭を0以外に初期化すること */




487仕様書無しさん:04/09/20 19:34:14
>*pがNullなら
>設定なし
>処理しないエラー(−2)(通常エラー:−1)
>戻り値は(正常:0)

「*pがNullなら」「設定無し」として「処理しない」
このとき「エラー(-2)」を返す。
*pがNullでないなら処理を実行する。
このときエラーが発生すれば「通常エラー:-1」を返す。
正常終了したときの「戻り値は(正常:0)」とする

みたいな感じか?
よくわかんねーけど

で答えは何なの?>>477
488仕様書無しさん:04/09/20 19:39:04
未初期化のアドレスが0以外の値が格納されているアドレスを指している場合は?
489仕様書無しさん:04/09/20 20:06:32
また頭悪そうなのが現れたなw
490仕様書無しさん:04/09/20 20:07:59
>>477の再降臨きぼんぬ
491仕様書無しさん:04/09/20 20:16:30
まぁ、char*返す関数とかnewとかは失敗するとNULL返してくれそうだし、
NULLチェックぐらいしてやっても損はない。

しかし、>>477、、、
492仕様書無しさん:04/09/20 20:34:52
VC++6.0にて検証
#include <stdio.h>
void sub(char* pc);
void main()
{
char* pc;

sub(pc);
}
void sub(char* pc)
{
printf("%08X\n", pc);
}

出力
CCCCCCCC
493仕様書無しさん:04/09/20 20:41:48
>492
VC++はデバッグビルドだと未初期化領域は
0xCCで埋めるんじゃなかったかな……
494仕様書無しさん:04/09/20 20:43:54
何を検証したつもりなんだろう?w
49569式フリーPG ◆hND3Lufios :04/09/20 20:43:58
if(*p == 0xcc){
  return -2;
}

496仕様書無しさん:04/09/20 20:46:07
>493
ご名答!

リリースビルドの出力
004070B8
497仕様書無しさん:04/09/20 20:50:10
アドレスが初期値から変わっていたら
って事だけ言いたかっただけなんだがね。
>483でいいのでは
ちなみにNULLは適当ですよ。私が見たことあるのは初期設定用汎用アドレスっていうのかな
それじゃなかったら?って判断しているのは見たこと有ります。
498仕様書無しさん:04/09/20 20:54:36
そんなもんあてにしたコードを書かれると、周りの人間が激しく迷惑なので
やめてほしい・・・。

おとなしくC#ぐらいから入ってほしい。
49969式フリーPG ◆hND3Lufios :04/09/20 20:56:52
いや、引数がauto変数の場合だと、初期値がNULL (0)とは限らないよ。。。
引数はstaticに限るとか前提を設ける?
500仕様書無しさん:04/09/20 20:59:49
くだらん方向に話を持っていくなよ
501仕様書無しさん:04/09/20 22:35:23
Rubyは最強ですな。背それ大賀大和kらうぇなないのですか?
安ァ多々値には知歯が欠けています。
Ruby破砕偉業dうぇす。
Rubyにあsうぃわいあrて!
Ri8bvuuygggggggggg
502仕様書無しさん:04/09/20 22:36:19
だーかーらー処理系にベタ依存なコードを書くなと
ちなみに>492をbcc32使ってオプション無しでコンパイルしたら
出力は00000001ダターヨ
503仕様書無しさん:04/09/20 22:46:13
*pがNULLなら、それはぬるp
504仕様書無しさん:04/09/20 22:47:55
>>503
ガッ

じゃぁ、Cのヌルポは、それってことで。
505仕様書無しさん:04/09/20 23:14:52
477=497?

日本語おかしいですね。
506仕様書無しさん:04/09/20 23:29:36
つーか空っぽのpが0じゃないことってあるの?
ポインタ変数には最初に必ず0を入れるし、
deleteした後にも必ず0を入れるじゃん。

char * p = 0;

...

delete p; p = 0;

ってさ。

教えてちょ。
507仕様書無しさん:04/09/20 23:31:05
>>506
だから、貴方は勉強してから出直してきなさい。
0入れるって段階で・・・。
508仕様書無しさん:04/09/20 23:31:18
御主釣師か
509仕様書無しさん:04/09/20 23:31:32
>506
そういうお行儀のいい人ばかりじゃないんだよ。
510仕様書無しさん:04/09/20 23:33:29
>>507
なんで?
環境依存じゃない0を使うものでしょ?
C++だけど。
511仕様書無しさん:04/09/20 23:40:28
大体こういうのでミスするやつはポインタ変数を初期化せずに渡すから、
環境に依存しない安全なチェックなんてできねーよ。
ってことすらわかっとらんやつがちらほらと…
512仕様書無しさん:04/09/20 23:42:09
ここで
「ポインタの初期化はNULLを使うものだ」
ってレスしたら釣られた事になるのかのう
513仕様書無しさん:04/09/20 23:44:36
>>512
「いつの時代の話ですかw」
って返ってくるでしょうね。
514仕様書無しさん:04/09/20 23:45:38
数値0とNULL値の違いについて、誰か彼に講義してあげて下さい。
515仕様書無しさん:04/09/21 00:00:45
>>514
講義して進ぜよう。C++ではNULLではなく0を使いなさい。
かのεπιστημη氏のお墨付きです。


http://www.tietew.jp/cppll/archive/5335
επιστημηです。

>next=NULL;
>としますと
>gccにNULLはこれが最初の仕様で、不明です。と怒られてしまいます。
>うぅ〜ん、謎。

え? C++ではふつー 0 って書きます。 NULL じゃなく。
# そーゆー単純なこと?
516仕様書無しさん:04/09/21 00:16:52
cstddefをちゃんとインクルードするのなら別にNULLでも0でも同じだと思う。
517仕様書無しさん:04/09/21 00:18:51
>>515
君、>>506か?
名前書いてないからわからんな。

とりあえず、

1. C++ では NULL ではなく 0 を使うべき
http://mikata.curiocube.com/oop/part1/ch09_nonull.html

2. 空っぽ(ぬるぽ)の p が 0 じゃないことはある
http://www.tietew.jp/cppll/archive/5347

ってこった。
518仕様書無しさん:04/09/21 00:27:14
リンク先が読めないんだが、2って何が書いてあるの?
値として実行時におけるヌルポインタが0じゃないかもしれないって話?
519仕様書無しさん:04/09/21 00:32:40
>>518
http://www.tietew.jp/cppll/archive/5347

Tietew です。

On Mon, 21 Oct 2002 15:25:32 +0900
In article <[email protected]>
[[cppll:5345] Re: NULL ポインターについて]
Tietew <[email protected]> wrote:

> しかしながら,その実装で NULL pointer を表すポインタは,C の世界
> では必ず 0 になります。int の 0 だけが,任意のポインタ型と可換な

言い方がまずいかな。規格上の動きはこう↓

1. 任意のポインタ型に 0 を代入するとそれは NULL pointer となる
2. NULL pointer と 整数の 0 とは常に等しい
3. 非 NULL pointer と 整数の 0 とは常に等しくない
4. NULL pointer を条件式として使うと偽として扱われる
5. 非 NULL pointer を条件式として使うと真として扱われる

内部表現が 0x00000000 であるポインタが NULL でないアーキテクチャ
もあり得ます。その場合でも,そのようなポインタは 0 と等しく
*ありません* 。
520仕様書無しさん:04/09/21 01:01:03
>*ありません*

それ嘘じゃない?
C のソース上の文脈で、ポインタが位置すべきところに 0 が出てきたら
それは NULL ポインタ(と、コンパイラがみなす)。つまり、C のソース上は
NULL ポインタは常に 0。

実際にコンパイラが NULL ポインタに対応する値として 0 以外のものを
吐くことはありえるけど処理系依存ってことでしょ。
521仕様書無しさん:04/09/21 01:13:06
>519
「そのようなポインタ」が0x0000000のポインタなのかNULLポインタなのか判断に苦しむ。
言いたい事は分かるけどね。
522仕様書無しさん:04/09/21 02:24:39
とりあえず Win32API には IsBadReadPtr() とか IsBadWritePtr() とかあるだろ?
こいつを使って、なんか面白い事を企みたいわけよウヘヘ



おいおい、血走った目でこっちを見ないでくれよ
まて、なんだよそのバールのようなm
523仕様書無しさん:04/09/21 03:03:53
Rubyが全て解けrつるbっっっっっっっっっっっっっっっっy!!!!!!!!!
Riubuudasikoyuuuuuuuuuuuuuuuuさいよう宇!!!!!!!!!




Rubyyyyyyyyyyyyyyyyyy
Rubuuuuuuuuuuuuuuuuuu .?????????????<<<<<<<<<??????????>>>>>>>>C++
524517:04/09/21 03:33:49
>>521
> 「そのようなポインタ」が0x0000000のポインタなのかNULLポインタなのか判断に苦しむ。

「内部表現が 0x00000000 であるポインタが NULL でないアーキテクチャもあり得ます」
を前提として
「その場合でも,そのようなポインタは 0 と等しく*ありません*」
ってことだから、
「そのようなポインタ」は
「内部表現が 0x00000000」で「NULL でない」ものを指すってことだわな。

>>520
> C のソース上の文脈で、ポインタが位置すべきところに 0 が出てきたら
> それは NULL ポインタ(と、コンパイラがみなす)。つまり、C のソース上は
> NULL ポインタは常に 0。

1. ポインタが位置すべきところに 0 が出てきたら NULL pointer とコンパイラがみなす。
2. pointer の「値が 0x00000000」で「それが NULL pointer で無い」場合は
   0(pointer との比較なのでコンパイラが NULL pointer とみなす)と等しくない。
525517:04/09/21 03:40:19
要するに、pointer 変数の「値が 0x00000000」であることと「NULL pointer」であることは別。
0 を pointer として扱う場合、それは常に NULL pointer として扱われる。
変数の pointer の場合、NULL pointer であるかどうかは実際の値とは無関係。
526仕様書無しさん:04/09/21 06:39:45
どうだっていいよ
527仕様書無しさん:04/09/21 07:24:17
どうでもいいって事は無いと思うが
528仕様書無しさん:04/09/21 07:27:05
ポインタ自体が未初期化なのと、そのポインタが指すアドレスが未初期化なのは
意味が違うし、どちらもNULL(0)である補償はないよ。

基本的なことなんだが。
529仕様書無しさん:04/09/21 08:18:35
しょきか?
530仕様書無しさん:04/09/21 08:51:51
×補償
○保証
531仕様書無しさん:04/09/21 09:08:10
「要はNULL数字じゃない、Cでは便宜上0を代入すればNULLとする」
つーことでしょ。 >>528は話題がずれてる
532仕様書無しさん:04/09/21 09:24:20
>>528は中国か韓国の方でしょ?すぐに補償とかいっちゃうし。
謝罪と補償を・・・。
533仕様書無しさん:04/09/21 10:13:23
>>531
もともと、ポインタが有効かどうかをどうチェックするかって話題でしょ?
534仕様書無しさん:04/09/21 10:47:22
>>533
「もともと」?何処が話の始まりなの?
起点を示してくれ
535仕様書無しさん:04/09/21 10:53:56
463あたりから。
昨日のことなんだが。。。
536仕様書無しさん:04/09/21 20:58:27
途中からC/C++のポインタにおけるポインタ変数とNULLと0の話になってしまってるな。
>>506からかな?

厳密な>>463の辺りの話はゴタゴタの間に逸れてどっかいってしまった。
537仕様書無しさん:04/09/21 23:59:18
今とある会社でCOBOLプログラムを改修してるんですがね、
unicode対応とか言って一斉に改修をするよう指示があったんです。

どうするかって言うとですね、プログラム中の日本語固定値を
すべてunicodeのhex値表記に変えるんです。
例えば、"*"という日本語文字列があった場合、X"FF0A"とか。

if文も
if 漢字氏名 = space
とかだったのが
if 漢字氏名-r = all X'3000'
とかいう標記に変更。

どういう訳か、Unicode化されるのは漢字項目のみで、英数項目は
元のsjisのまま。

何をしたいのかわかりません(⊃д`)
538仕様書無しさん:04/09/22 00:07:13
ソースはSJISのままで、コンパイル直前に固定値をその16進表記に
変えてくれるサポートツールのようなものを使ったほうがラクなのでは。

というか、UNICODE対応のCOBOLコンパイラは無かとですか。
539仕様書無しさん:04/09/22 13:41:32
COBOLは定数値ハードコーディングが多いからね。つらいね
540仕様書無しさん:04/09/22 20:29:17
コ・ヴォール。
541仕様書無しさん:04/09/23 02:13:03
古慕流
542仕様書無しさん:04/09/23 07:24:00
>>539 COBOLは使った事ないからよう知らんけど、m4とか使えないのか?
543仕様書無しさん:04/09/24 06:28:28
>>540-541
民明書房から解説書が出てそうだな
544仕様書無しさん:04/09/24 20:01:03
if (memcpy(pA, pB, iLen)) {


},


全部直しておきましたよ 林さん
545:04/09/24 23:20:09
>>544
else 以下にエラー処理があるんだよ。
546仕様書無しさん:04/09/25 00:43:55
hoge1 += hoge2 << hoge3;

確かこんな感じだったと思うけど
一目見て、どういう順番で計算しているのか分からなかった。
書いた本人も自信がなくて(ここがポイント)確認したらしい。
ちなみにコイツ一目見て何やってるか分からないような
コーディングをポロポロやる。
あと見るのも嫌になるほど、意味なく縦に長い関数もよく作る。
547仕様書無しさん:04/09/25 00:56:34
>>546
代入演算子とシフト演算子だったら、優先順位すごい分かりやすいと思うが。
548仕様書無しさん:04/09/25 00:57:59
>>546
ようは + と << の優先順位の差だけなんだけどね。
549仕様書無しさん:04/09/25 01:03:13
>>548 += じゃなくて?
550仕様書無しさん:04/09/25 01:24:26
Javaみたいに言語使用でカッチリ決まってるならいいけど、Cだとコワヒ
551548:04/09/25 01:26:35
>>549
こめん。+ でなくて += ですた。
552仕様書無しさん:04/09/25 01:37:19
>>550
Cでは言語仕様で決まっていないとでも?
553仕様書無しさん:04/09/25 01:37:44
// ↓2003.08.22. 削除(なんとなく)
// hoge();



これでデグレードが20件ぐらい出た時、辞めるというか
そいつの首を絞めて殺してやろうと思ったさ
554仕様書無しさん:04/09/25 01:39:47
>>550
Cも決まってるだろ
555仕様書無しさん:04/09/25 02:43:40
演算子の順位が決まって無い言語なんてあるのか?
556仕様書無しさん:04/09/25 06:05:25
優先順位が無い言語ならあるけどね
557仕様書無しさん:04/09/25 09:21:34
保守性を考えたら括弧つけるべきだけどね。
書いたときにはなんか憑いてるか降りてるからさらっとかくけどさ。
558仕様書無しさん:04/09/25 09:38:11
hoge1 += (hoge2 << hoge3);
カッコつけるって、↑さすがにこれは冗長だと思うが。
559仕様書無しさん:04/09/25 09:46:17
分かりやすいと思うけど
560仕様書無しさん:04/09/25 10:14:47
さすがにってほど冗長には見えない
561仕様書無しさん:04/09/25 10:26:17
558とは仕事したくないな
562仕様書無しさん:04/09/25 11:09:23
561とは友達になりたくないな
563仕様書無しさん:04/09/25 11:53:25
代入演算子の右をカッコで括ったコードなんて見たことない。
564仕様書無しさん:04/09/25 12:11:40
>>563
だから?
565仕様書無しさん:04/09/25 12:32:08
             /∧        /∧
           / / λ     / / λ
          /  /  λ   /  /  λ
        /   /  /λ /   /  /λ
       /    / / //λ    / / //λ
     /            ̄ ̄ ̄      \
    /        / ̄ )         ( ̄ヽ λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   /        /●/          \● /λ <  バカバッカー
  /        //    ∧     ∧   \  /λ \________
  |              λ ` ー― ´/      / /|      *    *
 |               λV V V V/      / //|  + |\  |\ |\  +
 |               λ|   |/      / / //|    |_λ|__λ|__λ|\
 |                λAA/       / ///// +  | /λ /λ /λ-λ
  |                 λ/     / / ////|  ノ| | /λ /λ /λ /λ
  \                      / / ///// /\| ノ  /λ /λ /λ / |
   \                  / / //////// |  /|  ////////////|
     ―/ / / / / / // // ////////////―   |  /|  ////////////|
566仕様書無しさん:04/09/25 12:53:45
>>563
勉強になって良かったね。
567仕様書無しさん:04/09/25 12:57:10
>>553
その役に立ってないコメント大好き。
568仕様書無しさん:04/09/25 13:00:02
>>564
代入演算子の右を括って見やすいという感性が一般的でないということ。
569仕様書無しさん:04/09/25 13:11:35
「一般的でない」
570仕様書無しさん:04/09/25 13:27:43
飛躍が趣味なのかな、この人
571仕様書無しさん:04/09/25 13:29:42
というか、お前らが演算子の優先順位を理解ししてるかどうかじゃなくて

>書いた本人も自信がなくて(ここがポイント)確認したらしい。

ここがポイントだと思うのだが、
優先順位に自身が無いのであれば、括弧をつけるのは当たり前だろう?
572仕様書無しさん:04/09/25 13:44:15
>>571
それ以上に、
「a += b << c; は優先順位が分かりにくい、カッコを付けろ」
のほうが、ツッコミ入れたくなるよな。
573仕様書無しさん:04/09/25 13:56:52
naranai
574仕様書無しさん:04/09/25 13:57:28
ド忘れによるミスを防ぐためには効果的じゃね?
575仕様書無しさん:04/09/25 13:58:43
括弧をつけてもつけなくても変わらないのなら、つけるほうが親切だろ
それともおまいらは、つけずに初心者の前で「俺は括弧なくてもわかるぞ、かっこいいだろ」とか
思っているんじゃねーよなー
576仕様書無しさん:04/09/25 14:09:15
>>575に対して、極端に括弧つけまくった例を出して
なんか反撃したつもりの奴が登場する予感。
577仕様書無しさん:04/09/25 14:13:38
まあ、まともなコードを書いてる人で、代入演算子の右をカッコで括るという
スタイルの人は皆無だけどな。
578仕様書無しさん:04/09/25 14:15:45
もういいって
579仕様書無しさん:04/09/25 15:29:04
うちの会社のコーディング規約では、1行1機能にする事となってる。
a += b << c;

b << c;
a += b;
としなきゃなんねーってこった。
580仕様書名無しさん:04/09/25 15:37:37
>>579
いくらなんでも、それじゃダメだろ・・・

d = b << c;
a = a + d;

とか突っ込んでみるテスト
581仕様書無しさん:04/09/25 16:04:54
そもそもシフト演算子を使うことが日常的な職場なら、
優先順位がどうこういわんと思う。

オレが前出向したところでは、シフト演算子自体を
使ったことのある人間が少なかった・・・。
掛け算したさ。
582仕様書無しさん:04/09/25 16:13:29
なあ優先順位の自信が無いって
<<
に対して自信が無いから、いつも括弧をつけるようにしただけじゃん?
で、たの演算子がちかくになくても毎回つけてる、と
583仕様書無しさん:04/09/25 16:37:56
四則演算の括弧については、理系出身者から「かえって見づらい」と言われたことがあります。
文系の私としては、あった方が一目で把握できるので楽ですが。
584仕様書無しさん:04/09/25 16:41:44
>>579
その規約だと、

area = (h * w) / 2;

↑こういう処理は、

area = h * w;
area /= 2;

↑こうなるの?

いやな規約だね。
585仕様書無しさん:04/09/25 17:06:05
>>577
>まあ、まともなコードを書いてる人で、代入演算子の右をカッコで括るという
>スタイルの人は皆無だけどな。

よく見かけるけど、何か?

d = (a ? b : c);
586仕様書無しさん:04/09/25 17:29:09
>>585
その人、つねに括弧で括ってるの?
587仕様書無しさん:04/09/25 17:36:28
>>579
C言語を知らない学生さんは消えてくれ。頼むから、今すぐ死ね。
588仕様書無しさん:04/09/25 19:14:08
単体の = 以外の代入演算子って、右辺は普通は数字1個とか関数1個とかにするけど。
どうしても右辺側で計算するなら括弧をつけるよ。
同じように、1つの式で = を2つ使ったり、++i とかを式の途中に混ぜたりも普通はしないよ。
絶対しないわけじゃないけど、gotoと同じくらいに例外的。
589仕様書無しさん:04/09/25 19:20:49
括弧をつける意味って、日本語の説明とあわせることだと思うけど。
590仕様書無しさん:04/09/25 19:45:36
>>588
>どうしても右辺側で計算するなら括弧をつけるよ。

これは、君はそうするって話でしょ。
591仕様書無しさん:04/09/25 20:19:17
>>588
そういうスタイルの人がいても悪くはないけど、
それが一般的とか優れてるかとかって話ではないわな。
592仕様書無しさん:04/09/25 21:10:47
かといって、そういうスタイルじゃない方が一般的だとか優れているという話でもない。
593仕様書無しさん:04/09/25 22:11:02
>d = (a ? b : c);
こんなんするか?

d = (a < b) ? b : c;
とかなら見たことはある。
594仕様書無しさん:04/09/25 22:19:19
>>593
....








おまえあほやなあ
595仕様書無しさん:04/09/25 22:50:17
どこがあほなのかを教えてくれ、わからねーんだ…
596仕様書無しさん:04/09/25 23:09:18
>d = (a ? b : c);
そもそもこんなのに括弧つけるヤツがアホやなぁ、と言いたいんだと思われ
597仕様書無しさん:04/09/25 23:19:09
.......
598仕様書無しさん:04/09/25 23:27:31
>>597
お前内気やなぁ
599仕様書無しさん:04/09/25 23:27:35
>>592
優れているかどうか置いといて、一般的ではある。
600仕様書無しさん:04/09/25 23:30:13
>>596
そういう括弧を付けるのが普通だと主張して譲らない人が約一名。
601仕様書無しさん:04/09/25 23:36:16
コーディングスタイルについて語るスレってなかったっけ?
602仕様書無しさん:04/09/25 23:46:41
コードって極力見やすく&誤解されなく書くべきだと思うので
()をつけるのって悪くないんじゃない?
みんな演算子の順序くらい知ってて敢えてやってると思うんだけど
603仕様書無しさん:04/09/25 23:51:24
d = (a < b) ? (b) : (c);
とかならよく書く
604仕様書無しさん:04/09/26 00:06:54
別に括弧つけてもいいと思うよ。
だけど、こんなのに「どういう順番で計算してるか分からないから直せ」とかケチつけられてもねぇ。

>>546も、書いたヤツがタマタマバカだったから、
バカにするネタが出来たぞと、わざわざ2chにカキコしたんだろーが
もし、「はぁ?こんなのもわからないんですか?」とか言われてたらどーしたんだろうね。
605仕様書無しさん:04/09/26 00:08:55
>>602
代入演算子の右側を括弧でくくるような人は
いないので、それが分かりやすさに結びつくと
思ってる人はいないんでしょうなぁ。
606仕様書無しさん:04/09/26 00:17:13
もしくはソイツは気を使ってくれたのかもしれない。


>>546「おい、ここ一目見て、どういう順番で計算してるのか分かってるのか?」

ソイツ。oO(ハァ?ワカンネー訳ねーだろ。まぁこの人の自尊心を傷つけてもしゃーないな。

ソイツ「ちょっと分かりにくいかもしれませんね。私も自身が無くて確認しちゃいましたよアハハ」
607仕様書無しさん:04/09/26 00:17:24
代入演算子を自慢したいおりこうさんばかりじゃないのよ
IT土方はそれでいいかもしれないけど
608仕様書無しさん:04/09/26 00:18:33
>>463

結局、確保した領域のサイズも渡すことになったとさ

とある処理(char *p, int size){
 if(p!=NULL && size>0){
  pをつかう
  :
 }
}

めでたし、めでたし
609仕様書無しさん:04/09/26 00:23:11
>>607
代入演算子の話で、自慢されてるように感じるの?
610仕様書無しさん:04/09/26 00:23:12
代入演算子を自慢したい、ってすごい意味不明なバカが来た。IT浮浪者かな。
611仕様書無しさん:04/09/26 00:34:38
なんでそんなに括弧を付けるのを嫌うんだ?
括弧を付けることによって順位が明瞭になる結果、
バグの混入する確率が減るんだから、
何も悪いことなど無いと思うんだが。
612仕様書無しさん:04/09/26 00:37:51
かっこつけるんぢゃねー





...orz
613仕様書無しさん:04/09/26 00:38:31
なんで括弧をそんなに付けたがるのかわからん。
付けなくても順位は明瞭だし。
余計な括弧は冗長性が高く、見難く感じる。

よくreturnに括弧付けるヤツいるがあれもワカラン。
なんでムダに付けるんだろう?キータイプも余分にいるのに。と毎回疑問に思う。
614仕様書無しさん:04/09/26 00:39:17
つまり
自分の(従う)流儀以外の括弧の付け方はもにょる
ってことでFAにしないか皆の衆。
615仕様書無しさん:04/09/26 00:41:51
>>613
明瞭だと思われるところにもバグの可能性は潜んでいるし、
そういうバグこそ潰すのが厄介なんだよ。
616仕様書無しさん:04/09/26 00:47:03
>>615
そんなバグ、見たことねぇなぁ。

つうか可能性の話するなら、逆に括弧を付けたからバグが出る可能性も潜んでるだろ。
括弧の整合が意図しないようになっちゃったり。そういうバグも潰すのが厄介だろ。
617仕様書無しさん:04/09/26 00:51:33
>>615
>括弧を付けることによって順位が明瞭になる結果、

>明瞭だと思われるところにもバグの可能性は潜んでいるし、

括弧付けて明瞭にしても、明瞭だと思われるところにもバグの可能性は潜んでいるならどうしようもねーじゃねーか?
618仕様書無しさん:04/09/26 00:55:17
もしかして、括弧を付けない派の人は開発を一人でやっていたりするわけ?
619仕様書無しさん:04/09/26 00:58:13
括弧付ける派の人は、付けてない人を見ると付けろ付けろと、こうるさくく言う訳?
こんなんでガタガタ騒ぐなよ。もっと大切なことは沢山あるだろ。


これからはケチ付け回るの控えたほうがいいよ。
オレはバカだバカだと触れ回ってると思われてるかもよ。
620仕様書無しさん:04/09/26 01:04:39
612 :仕様書無しさん :04/09/26 00:37:51
かっこつけるんぢゃねー





...orz
621仕様書無しさん:04/09/26 01:12:48
正直、カッコのつけすぎはカッコよくない(照笑)。

カッコの閉じ忘れもバグの元だし、関数ポインタをよく使う人にはかえって紛らわしい。


622仕様書無しさん:04/09/26 01:18:07
括弧の内側にはspaceをひとつ入れて欲しいものだ
623仕様書無しさん:04/09/26 01:53:33
>space

俺はイラネ。勝手にやってろ。
624仕様書無しさん:04/09/26 01:57:41
俺もいらね
間延びして読みにくい
625仕様書無しさん:04/09/26 02:11:11
for ( ; ; );
626仕様書無しさん:04/09/26 02:26:43
> カッコの閉じ忘れもバグの元
どんな言語だ?
627仕様書無しさん:04/09/26 03:02:45
俺はひよっこだから、とりあえずカーニハンに従うよ
628仕様書無しさん:04/09/26 03:31:38
付けすぎちゃいけない。当たり前。
(a = (b * c) - (d / e) + (c / f));

最低限しか付けないと、それも可読性が落ちる。当たり前。
a = b * c - d / e + c / f;

他人が書いたソースは、比較的読みにくい。当たり前。

そんなことで議論して、スレ違いだと思いませんか。
629357:04/09/26 03:49:11
システム工学をかじってるなら
安全なほうをとれ
630仕様書無しさん:04/09/26 03:49:35
returnに括弧つけるのがうざいときお勧めなのが
void retrun(void);
って関数をつくること
返し値がないってエラーに悩んで、途方にくれてくれるぞ
631仕様書無しさん:04/09/26 04:13:45
>>630
スレタイ通りのコードですね
632仕様書無しさん:04/09/26 04:26:47
a = b * c - d / e + c / f;
 ↓
a = b * (c - d) / (e + c) / f;


...orz 意味を変えるなよ、意味を
633仕様書無しさん:04/09/26 04:46:46
>>632
正直うっかりやってしまうかも。
さらタチ悪く、バグを直してあげたつもりでやってしまうかもしれん。
いや、まじで。
634仕様書無しさん:04/09/26 05:26:45
現場では、時間を掛けない事が優先になるので
誰が見てもすぐ分かるよう括弧はつけられる。
と、漏れは思っているけど…
「あたりまえ」や「思う」で仕事するのは多古!
635仕様書無しさん:04/09/26 07:34:43
a = b*c - d/e + c/f;
が好みなんだけど、漏れはバカVBプログラマだから括弧つけちゃう派。

それより、狭いスコープ内(サブルーチン)で変数に参照を代入して、
最後にNothingを代入するヒトが居たんだけど、意味があるのかなぁって思った。
すごく意味無さげなんだけど、気になるから辞めてホスイ。。。
636仕様書無しさん:04/09/26 08:46:07
>>635
スコープの広さに関係なく、その人の中でのルールなんじゃない。
俺も結構明示的にNothing代入する派
637仕様書無しさん:04/09/26 09:09:23
漢文で充分意味が明瞭なのに、なんでわざわざ平仮名なんて使うんだ?
日本語は冗長すぎて、見づらく感じる。
638仕様書無しさん:04/09/26 09:30:57
>>637
日本の仕事するなよ
639仕様書無しさん:04/09/26 09:59:16
歓迎中華人民共和国的算譜土方、顧客要求日本語文書、
平仮名必須、使漢文於本国、謝謝
640仕様書無しさん:04/09/26 10:01:10
>>639
日本語にはきちんとひらがな使えよ
漢字だけにすれば中国語っぽく見えるけど、どう見ても日本g
641仕様書無しさん:04/09/26 10:27:24
>>637
漢文充分意味明瞭、何故態々平仮名使?
日本語冗長過、見辛感。

>>640
にほんごにはきちんとひらがなつかえよ
かんじだけにすればちゅうごくごっぽくみえるけど、どうみてもにほんg
642仕様書無しさん:04/09/26 11:23:29
てゆーか大陸の人なのに何故に繁体字?
643仕様書無しさん:04/09/26 11:26:24
それ、本当に中国語なの?
中国語なんて、使う機会0だしなぁ
644仕様書無しさん:04/09/26 11:53:28
ちゅーごくごも二種類あるだろう
645仕様書無しさん:04/09/26 12:49:59
>>642
漢文と中国語は違いまっせ。
646仕様書無しさん:04/09/26 13:19:44
漢文は日本で言うところの古文だもんな。
647仕様書無しさん:04/09/26 13:45:11
むずかしすぎてちんぷんかんぶんです
648仕様書無しさん:04/09/26 16:38:35
太難不明白
649仕様書無しさん:04/09/26 21:44:11
ちんぷん漢文(@゜▽゜@)ノ
650仕様書無しさん:04/09/26 23:09:29
649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11
ちんぷん漢文(@゜▽゜@)ノ
651仕様書無しさん:04/09/26 23:44:15
650 仕様書無しさん sage New! 04/09/26 23:09:29
649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11
ちんぷん漢文(@゜▽゜@)ノ
652仕様書無しさん:04/09/26 23:48:49
651 名前:仕様書無しさん 投稿日:04/09/26 23:44:15
メール:sage
650 仕様書無しさん sage New! 04/09/26 23:09:29
649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11
ちんぷん漢文(@゜▽゜@)ノ
653仕様書無しさん:04/09/27 00:15:14
652 :仕様書無しさん :sage :04/09/26 23:48:49
651 名前:仕様書無しさん 投稿日:04/09/26 23:44:15
メール:sage
650 仕様書無しさん sage New! 04/09/26 23:09:29
649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11
ちんぷん漢文(@゜▽゜@)ノ
654仕様書無しさん:04/09/27 00:16:32
653 仕様書無しさん sage 04/09/27 00:15:14
652 :仕様書無しさん :sage :04/09/26 23:48:49
651 名前:仕様書無しさん 投稿日:04/09/26 23:44:15
メール:sage
650 仕様書無しさん sage New! 04/09/26 23:09:29
649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11
ちんぷん漢文(@゜▽゜@)ノ
655仕様書無しさん:04/09/27 00:39:21
コピペ禁止
関数にしろ
656仕様書無しさん:04/09/27 00:53:23
>>655
でも、でも。
レス番とかタイムスタンプとか微妙に違うんですよぉ。
657仕様書無しさん:04/09/27 01:31:47
>>656
レス晩とかタイムスタンプとかは引数で渡せ。
メモリもったいないから参照私で頼む。
658仕様書無しさん:04/09/27 01:45:39
>656
TemplateMethodパターン
659仕様書無しさん:04/09/27 01:57:02
ここはひとつDecoratorで何とか
660仕様書無しさん:04/09/27 05:57:03
>>615
retrun 0;
はコンパイル時点で怒られるが、
retrun(0);
はリンクするときまでtypoしてることが分からなさげ。
バグの可能性を潜ませてまで括弧を使う理由が見当たらず
661仕様書無しさん:04/09/27 06:52:37
>>660
括弧を付けるのはコードを書いた者の意図を明確に示して
他人が読んだ場合も一目瞭然とするためだが、
それは何を明確にしてるんだ?
662仕様書無しさん:04/09/27 08:44:08
>>660-661
何言ってもこじつけにしかならん。
スタイル談義は相応のスレでどうぞ。
663仕様書無しさん:04/09/27 19:10:30
ぬるぽ。
664仕様書無しさん:04/09/27 19:41:20
>>662
いや、>>660 はスタイルの話ではないな。
単純に有用性の話だ。

>>615 がバグを潰す為に括弧を使うべきだと言ったのに対して、
ここで括弧をつけても何の予防効果もないよ、と答えたのだろう?
665仕様書無しさん:04/09/27 19:44:12
>>664
言いたいことはわかるけどさ、 今時 if (0 == NULL) とか書かないじゃん。それと同じだと思う。
666665:04/09/27 19:45:27
ごめん。俺、何書いてるんだか。
if (NULL == p)
とかだね。
667664:04/09/27 19:58:54
>>665
>言いたいことはわかるけどさ、 今時 if (0 == NULL) とか書かないじゃん。それと同じだと思う。

全然分かって無いじゃん・・・
668仕様書無しさん:04/09/27 21:05:13
>>666
定数を左に書くな
669仕様書無しさん:04/09/27 21:54:47
括弧あったほうが意図が明確に伝わるかもしれず。
a = (x + y) + b;
とか書けば、読んだ人は(x + y)の一塊に意味があると
感じてくれるかもしれないじゃないか。
670仕様書無しさん:04/09/27 22:06:22
>>668
条件式で定数を左に書くと、間違えて==を=にしてしまったときに
直ちにコンパイルエラーになるから有用、って話だよね、たしか。
職場で使ってた人がいた。
オレはやらんけど。
671仕様書無しさん:04/09/27 22:33:06
>>670
何度同じ話を出せば・・・・
672仕様書無しさん:04/09/27 23:17:55
火に油を注いでみる。

if(hoge = 1)

というバグがあった。
普通なら取るに足らないバグなのだが、
問題なのは単体デバッグが終わった後の
結合検査で見つかったということ。
しかも結合検査表を見るとOKと書いてある。
一体どういうテストをしているんだ。

これを発見する少し前に
自分が単体OKにしたけど、バグが残っていて
上記のコーディング、単体、結合検査をした奴に
目茶苦茶どなりちらされたことがあった。

サツイガワイタヨ。
673662:04/09/27 23:22:00
>>664
グダグダ言ってないでどれくらい有用なのか定量化して出せよ。
674仕様書無しさん:04/09/27 23:28:18
>>672
結合でOK出ても一概におかしいとは言えないでしょ?
結合は単体がOKなことを前提に行う試験だから、その部分がテスト対象じゃなかった可能性もあるし。
675仕様書無しさん:04/09/27 23:55:21
if(hoge = 1)
は常にtrueになるんだっけ?

シバラクヤツテイナカツタカラワスレタ...
676仕様書無しさん:04/09/28 00:04:39
>>675
代入が成功したらじゃなかったっけ?っとふぃっしんぐ。

でも、このスレは辞めようと思ったソースなんだから、もっと香ばしいソースが欲しいよ。
677仕様書無しさん:04/09/28 00:05:10
Dim str As String


(千行ぐらい)


switch(Mid(str,n,m))
case(hoge1)
 ・・・・
case(hoge2)
 ・・・・

たのむ、コメント入れてくれ・・・
文字列strの何をどう取り出して分岐してるんだ・・・
678仕様書無しさん:04/09/28 00:09:22
if(aFlag = bFlag)
って感じのソース最近見たな。
バグではないんだが少し悩んだ。
679仕様書無しさん:04/09/28 00:12:37
>>677
strって変数名で使ってるの?
それは嫌だな。予約語のような・・・。
680仕様書無しさん:04/09/28 00:18:03
>>679
あ、それは見なかったことにして。
実際はもっとふつーの変数名だったよ。
681仕様書無しさん:04/09/28 00:24:28
>>680
じゃあ、コメント云々以前に1000行の関数に突っ込めよ。
コメントあってもそんなの見たくない。
682仕様書無しさん:04/09/28 00:38:19
>>681
もちろんオレだって見たくないが、SQL文の動的生成やってるとこだから
ある程度は見逃してやらんと。
683仕様書無しさん:04/09/28 01:01:01
研修中の新人のソースでバグが出て詰まってるとの事なので見てやった。

for(int i = 0;i < 10;i++);
{
//必要な処理
}

セミコロン探すのに30分以上かかっちまったよ。
鬱だ。
684仕様書無しさん:04/09/28 01:16:21
>>683
甘い、今見ている「ン年前」のクソコードはこうだ

for(i=0;i<10;i=i+1)
{
/*限りなく無意味な処理の羅列が1000行ほど*/
} /*<-括弧の対応付けがなってない*/
685仕様書無しさん:04/09/28 02:23:03
仕様だけどWEBでPOSTされたデータを毎回別ロジックで展開しデータを拾いだして処理してた
しかも客ごとにカスタマイズされた枝製品がいっぱい
ある意味パズルを解いてる気分だった
686仕様書無しさん:04/09/28 08:00:09
>>675-676
hogeに1を代入し、hogeが真だったら。

ちなみにこれ動作フラグで
ここを通るたびに1(動作状態)になってた。
687仕様書無しさん:04/09/28 09:30:35
>>686
嘘書くな
688仕様書無しさん:04/09/28 10:35:19
>>684
for(int i = 0;1 < 10;i++)
{
//必要な処理
}

こんなのもあった

>>686
hogeに1の代入が成功したら。だろ。

VCのコンパイラだとワーニングがでたような・・・
689仕様書無しさん:04/09/28 11:18:50
>688
> hogeに1の代入が成功したら。だろ。
今すぐ本屋に言ってなんでもいいからC言語の入門の本買って来い。
いくらなんでも、こんなのを間違ってる本は無いよな。
690仕様書無しさん:04/09/28 11:42:13
>>688
VCの場合はなおかつhogeがfalseで無ければだな。
どちらにせよよほど古いコンパイラを使うか、わざとレベル下げてコンパイル
しない限り、ワーニングはでるよな。
691仕様書無しさん:04/09/28 11:45:57
hoge = 1
という式が返す値は hoge だ。
つか、「成功したら」って何じゃい??
// あ、失敗しても例外出ない環境?

>>689
今ドキの入門書のレベルの低さを知らないな?

>>690
デフォルトの警告レベルだと出ないな。
692仕様書無しさん:04/09/28 14:54:21
燃料どぞー

#include <stdio.h>
struct Perverse {
 bool operator = (int n) { return !n; }
};
int main (int argc, char *argv[]) {
 Perverse perv;
 if (perv = 1)
  puts("(゚Д゚)");
 else
  puts("(´ー`)");
 return 0;
}

// そういえばこれ、g++ 3.4.0 でコンパイルしたが
// 警告が出なかった orz
693仕様書無しさん:04/09/28 15:53:40
private static void main(String[] argv) {
 ......
}


…mainがprivateかよ。
694仕様書無しさん:04/09/28 16:03:56
>>693
凄い引き篭もりが作ったメインですかね。w
もう誰も僕に構わないでくれ!一人にしてくれ!って。
695仕様書無しさん:04/09/28 18:29:54
引きこもりすぎだろ(;´д`)
696仕様書無しさん:04/09/28 19:37:41
きっとライブラリ関数を集めたstaticメソッドだけのクラスで、mainが呼ばれることは永遠にないんだよ...
697仕様書無しさん:04/09/28 21:13:38
>>696
あ、俺それやったことあるな
ライブラリということでmainは動作確認にしか使わなかったので
動作確認時に、もうアホとしか言いようが無いメッセージや動きを
させまくっていたら、、、、、

3機種後でコードレビューが行われたらしく、その時の担当者が
客からボロクソに言われたという話が・・・・・・・・・・・・・・・・・・
698仕様書無しさん:04/09/28 22:19:54
以前派遣で逝っていた某社の話。

PM「コメントは1バイトコードのみで」
漏「了解しました」
・・・CVSからソースとってきて見ると確かに1バイトで書いてあった。
漏「え〜と、これ何語でしょう?英語じゃないみたいですけど?」
PM「ローマ字。英語は混ぜないでね。混乱するから。ローマ字なら
ヘボン式でもなんでもいいから。」
漏「なんで素直に日本語で書かないんです?文字コード統一しておけば
無理して1バイト縛りにするよりいいんじゃないですか?」
PM「客が見た時に読む気が無くなるでしょ。まず見ないとは思うけど、
念のためね。」

ツールでコメント抜いたソース作って、そっちを納めたほうが
楽なんじゃないか?と思ったけど言えませんでした。
契約更新のお誘いがあったのですが、謹んでお断りしました・・・
699仕様書無しさん:04/09/28 22:25:09
なぜカナで書かないのか?
700仕様書無しさん:04/09/28 22:27:13
なぜベストをつくさないのか
701仕様書無しさん:04/09/29 00:32:18
public class A{
 public void A() {
  // なぜかコンストラクタが実行されない。
 }
}
702仕様書無しさん:04/09/29 01:09:56
>>678
> if(aFlag = bFlag)
この if になんの意味が有るか教えて下さい。
aFlag って class なの?
703702:04/09/29 01:14:25
自爆。漏れも勘違いしてた。
この if は bFlag を評価するのね。何年 C やってるんだろ...
704仕様書無しさん:04/09/29 02:46:16
コンパイラが許しても、漏れは許さない
せめてこう書いてほすい

aFlag = bFlag;
if(aFlag)
705仕様書無しさん:04/09/29 09:00:45
if(aFlag=bFlag, aFlag)
ではダメでしょうか?
706仕様書無しさん:04/09/29 09:23:22
>>703
別に落ち込むことない。普通そんな書き方はしないし、めったにお目にかからない。
その記述、バグならまだ許すけど、それを仕様だというならば、書いた奴は糞ナルシストだ。
707仕様書無しさん:04/09/29 09:38:40
いったいどんな場合にフラグ情報の代入操作が必要になるのか
のほうが気になるがw
708仕様書無しさん:04/09/29 10:55:28
>>706
君の普通が業界でも普通だという根拠を示して呉れ給え。
709仕様書無しさん:04/09/29 11:06:45
クラスのメンバが全部publicなんだが、これ書いた奴簀巻きにして多摩川に投げ込んじまえ。
710仕様書無しさん:04/09/29 13:31:25
if(!p=malloc(s)){perror("p");exit(1);}
とかは、だめか?
711仕様書無しさん:04/09/29 13:49:35
>>710
それじゃ駄目ですね。
演算子 (! と =) の優先順位からすると。
712仕様書無しさん:04/09/29 15:44:00
>>677
VBっぽいが、それならswitch caseじゃなくて
Select Caseじゃないかと
713仕様書無しさん:04/09/29 17:20:09
> クラスのメンバが全部publicなんだが、

オブジェクト指向の意味がねぇー。
714仕様書無しさん:04/09/29 20:00:04
そういや、最近になってC++とJavaとで
protectedの意味が違うことを知った。

Java使わんからいいんだけどね、別に。
715仕様書無しさん:04/09/29 21:09:34
>>714
しかし、何故 Java は protected という単語に拘ったんだろ?

違う機能なんだから、単純に違う単語を使えばいいと
思うんだけどな。

え、C++ と Java は名前空間が違うから
同じ名前でも意味が違うのは当たり前だって?

これだから Java 厨は・・・
716仕様書無しさん:04/09/29 22:23:53
>>713
なんで? オレ、public static finalだったら、わざわざgetter
作らなくてもいーじゃんな主義なんだけど。methodがあれば、
オブジェクト指向の意味なくはないと思うなぁ。
717仕様書無しさん:04/09/29 22:39:16
オブジェクト指向の基本はカプセル化だぞ、不要な関数露出してたら意味ないだろ
718仕様書無しさん:04/09/29 22:43:48
カプセル化がなくてもオブジェクト指向は可能だから基本とは思わん。
719仕様書無しさん:04/09/29 22:52:03
オブジェクト指向の基本は別にカプセル化ではないとは思う。
そういう隠し事をするような子に育てた覚えはないし。
みんなオープンで逝けば良いと。

っていうのはまああれだけど。
Setterは判るけどGetterは納得いかないときは確かにあるね。
出力フォーマットとか出力データを差し替えとかわかるけど、そこまでけちにならんでも。
720仕様書無しさん:04/09/29 23:02:37
とはいえやっぱし突き詰めれば結合度と凝集度になるわけで。
721仕様書無しさん:04/09/30 00:15:02
MFCは全部public
722仕様書無しさん:04/09/30 10:02:51
Pythonも全部public
723仕様書無しさん:04/09/30 10:31:45
>>719
> Setterは判るけどGetterは納得いかないときは確かにあるね。

アフォですか? つりですか?
724仕様書無しさん:04/09/30 12:59:54
>721
725仕様書無しさん:04/09/30 13:37:19
perlも全部public。
privateにしたい時は、名前を _ ではじめて、「これはプライベートの
つもりなので、触れるけど、触れないことにしてください」と意思表示する。



…んだったよな?最近あまり触ってないから記憶あいまい。
726仕様書無しさん:04/09/30 13:48:04
別に興味はなくても、そうやって触るなといわれると触りたくなるのが性ってもんだな。
727仕様書無しさん:04/09/30 14:00:06
>>726
こういう奴がいるから、便利なPerlが便利じゃなくなるんだよなぁ・・・
と言ってみるテスト。
まあPerlだと、直接触った瞬間に落ちるプログラムも書けるわけですが。
728仕様書無しさん:04/09/30 14:06:06
>>727
ネタにマジレス、カコワルイ
729727:04/09/30 14:10:41
>>728
こないだ、俺のソース中の_で始まるメンバをしっかりと触ってくれたヴァカがいたよ・・・
ちゃんとアクセスメソッド用意してんのにさぁ・・・
730仕様書無しさん:04/09/30 14:52:28
普通におっぴろげとけば誰も触らないよ。
そうやって隠そうとするから・・・。
731仕様書無しさん:04/09/30 16:18:05
>>729
プロパティ変数そのものを触る香具師と同じか...
732仕様書無しさん:04/09/30 20:43:39
>>730の言う通り、おっぴろげとくベキものを、
おっぴろげてないだけかも知れないが。。。
でも、そんな感じの会社ってイパーイだからねぇ。。。
いつぞや辺りから、書籍をほとんど買ってないとか。
733仕様書無しさん:04/09/30 22:09:35
ぷろぱでぃとかメソッドを隠くさず、恥ずかしいソースは隠す。
734仕様書無しさん:04/09/30 22:12:03
正直に告白します
今日、ExcelのVBAマクロで

 Range("A1").Height = Range("A1").Height

みたいなコードを書きました。
いや、だって、高さ一回でも設定すると、高さの自動調整が利かなくなるからさ
本当は、なんかプロパティで設定するんだろうけど、ちょっと適当な資料整理だったんで

2度と見る必要はないと思うんだけど、後からみたら、さっぱりわけ分からないんだろうなぁ・・・
735仕様書無しさん:04/09/30 22:18:37
>>734
コメント入れとかないと、そのうちこのスレに書かれると思う。。。
736仕様書無しさん:04/09/30 22:30:52
とりあえず短納期だったんでコメントなし、表記法適当で置いときました。
737仕様書無しさん:04/10/01 14:57:17
GOTO あっち
GOTO あそこ

ラベル名が日本語ということより、「あっち」「こっち」
とかいうところに飛ぶらしい。
「さっちゃん」とか人名ぽいのもあった。
738仕様書無しさん:04/10/01 14:57:18
既出だったらゴメンな。VB.NET で。

If 何か処理() = 失敗 Then
 Throw 例外
 Return False
 Exit Sub
End If
739仕様書無しさん:04/10/01 22:52:17
>>738
すげーな
とりあえずJavaでは書けないコードだ
740仕様書無しさん:04/10/02 00:08:16
何もかも投げ出して帰るんだ、さあ飛び出そう!
って感じか
741仕様書無しさん:04/10/02 02:00:21
>>738
Return と Exit のところに、
//念のため

とかコメントがあればよかったのに
742仕様書無しさん:04/10/02 04:07:38
俺、hogeが変数でもsizeof(hoge)って括弧付けるけど、
普通つけてる?
743仕様書無しさん:04/10/02 10:35:02
使われる場所による。
式の中なら見やすいように付けるかも。
744仕様書無しさん:04/10/02 12:00:38
sizeofはカッコ付けるので統一してる。
ちゃんとルール持ってるのが重要かと。
745仕様書無しさん:04/10/02 12:30:01
>>742
付けなくても通るのか?
すまんが言語を明記してくれ。
少なくともCだと付けないと通らない。
746仕様書無しさん:04/10/02 12:36:47
>>745
変数だと通らない
型名なら通る
747仕様書無しさん:04/10/02 12:36:57
Borland C++ 5.5.1だと通ったな
748745:04/10/02 13:43:26
>>746-747
そうなんだ〜
知らなかった。
サンクス

749仕様書無しさん:04/10/02 18:46:51
こんなWebサイト見つけました

http://larthe.tripod.com/index.html
750仕様書無しさん:04/10/02 19:32:51
> この会社辞めようと思ったソースコード。

//偽装派遣は法律違反だ
//偽装派遣をやる会社は来年以降危ない
751仕様書無しさん:04/10/03 00:19:29
/*
ちなみにSTL使えば以下の数行で終わるんです
文句は環境決めた人に言ってください

(コード)

*/
752仕様書無しさん:04/10/03 00:22:53
>>751
カコイイ!!
てかSTLも使いこなせんでC++出来ますみたいなやつはウンコだよな
753仕様書無しさん:04/10/03 00:39:03
STLつかって、おれってかっこいいと思ってる香具師がうちの会社に居ます

特殊環境なので、そのままのアロケーターはメモリリークします
また、コード肥大化で、メモリ不足になります

目先のコード短くするのだけは勘弁して欲しい
そんなゲームプログラマな漏れ
754仕様書無しさん:04/10/03 01:16:44
>>753
そりゃゲームプログラミングでSTL使ってもしょうがないけどさ。
DB関係でProC使うなら、メンテナンス考えてもコンテナ使いたいのは
当たり前・・・。
C++自体禁止だったらしい。
755仕様書無しさん:04/10/03 01:28:12
>>749
作者乙
さらされてた二人よりもおまいさんのほうが一緒に仕事したくない。
プログラム技術以前に社会常識とか守秘義務とかから学びなおせ
756仕様書無しさん:04/10/03 01:35:56
>>749
通報しますた
757仕様書無しさん:04/10/03 01:38:52
つーか日本人じゃないのに日本語使ってる時点でサイト開設者より
上だな。
758仕様書無しさん:04/10/03 02:00:08
>>753
ゲームプログラマーに成り立てのうちはコンシューマーハード特有のことは
知らなくて当然だとは思うが、そうでないならちょっともにょるな・・・
759仕様書無しさん:04/10/03 04:36:23
>>753
アロケーターカスタマイズしたり、部分特殊化したりしてればいいの?
「ゲームプログラムだから」という理由でSTLを使用しない方がいいなんて思ってるんじゃないよな?
760仕様書無しさん:04/10/03 05:11:50
んなわけない
チームで、軽量版STLつくってたのに、自分の好きな機能ないからって
コンパイラ付属のSTLを勝手につかってた
コンテナもオリジナルのをつかわれて、どれだけ苦労したか、、、

アロケーターは限定版をもちろん用意している
てか、ライブラリのヒープ管理使わないと大変なことになるしな

で、やつの言い分はこう

(奴が)普段使ってる機能もはいってないのはSTLなんて呼ばせない
C++なんだからSTLはつかっていいに決まっている、規格であるんだから
自分がSTL使いこなして無いからって、いちいち文句言わないでください(勝ち誇り)

さっきの書き込みの後、奴のつくったモジュールをリファクタリング(作り直しの)して
コードサイズが700KB減って、テストベンチも高速化して
なにより、ヒープテストに合格するようにしてやったんだが
あさってなにをいうか楽しみだw
761仕様書無しさん:04/10/03 11:09:36
>760

(´-`).。oO( 平和なチームだねぇ )
762仕様書無しさん:04/10/03 11:49:42
>>760
とりあえず、彼の言っているのは
まともな意見だな。

悲惨な会社に入ると、こうなってしまうという
よい見本だね。

良い例を出してくれてありがとう >>760
763仕様書無しさん:04/10/03 12:57:16
両方とも正しい気がする、メンテのこと考えると速度の犠牲なんてどうでもよかったりして
764仕様書無しさん:04/10/03 13:19:45
問題はどういう仕様を要求されているのか、だな。
760の過剰反応かもしれんし
彼の単なる我侭かもしれんし

そういう話し合いが足りてないんじゃないかなー
765仕様書無しさん:04/10/03 14:20:02
とりあえず、せっかく作ったライブラリをないがしろにされるのは悲しいので
>>760の言い分は正しいと思う。

でも、そいつがデスマ中に召還された派遣で、ライブラリのありかも説明されないまま
「3日やるから適当に仕様書作って」とか言われてほったらかしにされていたとすれば
オレはそいつの味方をします。
766仕様書無しさん:04/10/03 14:30:57
たしかにこの業界経験者ならなんでもできるだろうって勘違いやろうが多いね
超能力者じゃないんだから仕様まではわかるわきゃないって
767仕様書無しさん:04/10/03 15:45:25
>>753
特殊環境なので、そもままのアロケータはリークするってのがよくわからん。

本当にリークしてるのか?プールしてるんじゃないのか?
768仕様書無しさん:04/10/03 15:56:42
カスタマイズした出来損ないのアロケータを std:: においてるだけだったりして
769仕様書無しさん:04/10/03 17:53:31
>>760
STLport + _STLP_NO_EXCEPTIONS + _STLP_USE_MALLOC マジお勧め。
770仕様書無しさん:04/10/03 19:07:51
>765
>とりあえず、せっかく作ったライブラリをないがしろにされるのは悲しいので
> >>760の言い分は正しいと思う。

もしお前がアマチュアならば、その発言を認めてやろう。

プロなら士ね!
771仕様書無しさん:04/10/03 19:20:59
ゲームプログラムは、君らのような世界で無い特殊なところでやってるとおもってくれ
ウィンドウズゲームは別な、PS2とかGBAとかそういうやつな

例外はデバッガがおかしくなるので使えない
ヒープは、ハードライブラリ独自のをつかわないといけない
そういう世界なんだ、組み込み系とも違った特殊な世界

メモリ不足になったらスワップが発生するんじゃなくて、動かなくなる
速度が遅いとがびがびな画面になって使い物にならなくなる

こんなシビアな世界経験したこと無いだろ?
772仕様書無しさん:04/10/03 19:24:39
組み込み……
773仕様書無しさん:04/10/03 19:27:53
>771
他のはともかく、
>例外はデバッガがおかしくなるので使えない
は単にデバッガが糞なだけだろ。まずデバッガを直せ。
774仕様書無しさん:04/10/03 20:10:48
>773
そのデバッガからコンパイラから、ハードメーカー指定のもんだったりするから
手がだせんのよ。
(正確に言えば手は出せても、それでトラブったら最後メーカーから愛想尽かされる)
775仕様書無しさん:04/10/03 20:30:26
要するに
彼はそのゲーム機の仕様をよく知らなかったから、STLを使った
会社は、それを知ってか知らずか彼を雇い、教育すらやらずに現場に放り込んだ
現場の人間がそれでキレた

でFA?

ハードメーカーの仕様書渡して一週間様子見れば?
776仕様書無しさん:04/10/03 20:40:56
シビアっていうか不幸なだけじゃん。
不幸なんだからあきらめろと言い聞かせればよい。
777仕様書無しさん:04/10/03 21:31:49
十分に教えた結果

STL使えるのは当然!
と抜かしやがったのよ
自作簡易STLがあったのは伝えてる、でも機能が少ない
778仕様書無しさん:04/10/03 21:34:25
そうだとしたら処置は簡単


切れ
779仕様書無しさん:04/10/03 21:53:53
>>771,774の言うことがホントなら、
「やってよいこと」を制限するのは正しいことだと思う。

例えばHWメーカ提供のライブラリがバグってて、
メーカは絶対それを認めなくて、
仕方なくそれを回避するようなギミック込みのライブラリを自分らで用意する、
なんてことはありえそうな話だ

そんな環境では
> (奴が)普段使ってる機能もはいってないのはSTLなんて呼ばせない
> C++なんだからSTLはつかっていいに決まっている、規格であるんだから
なんて主張は通らんだろうな。
780仕様書無しさん:04/10/03 22:13:13
世の中にはANSIとかISOという言葉が存在していない現場が
いくつもありますでねぇ。
あ、ISOはISO9000とかに関してだけありえるか。
781仕様書無しさん:04/10/03 23:15:42
俺はtemplateも使えないC++コンパイラで仕事してますが、、、
STLがどうのこうのといえる時点でうらまやしぃ
782仕様書無しさん:04/10/03 23:32:52
何年前のC++コンパイラ使ってるんだろ…
783仕様書無しさん:04/10/03 23:35:55
>782
Mozillaのコーディング標準をご覧あれ。
例外禁止、テンプレート禁止、その他etc.etc.
まぁ、可能な限り現存する全ての開発環境でビルドを可能にしたいが故の
やむを得ない措置ではあるわけだが。
784仕様書無しさん:04/10/03 23:45:31
コンパイラ (NEC製) は ANSI 対応を謳ってるのに
環境 (富士通製) はストリームI/O に一切対応してない、っつーのがあったな。
ファイルから行単位で読むのに、F製ライブラリで1文字ずつ読んでたら
50バイト程度の行読むのに200msecもかかってて
結局 fgets 相当の関数を自作したら読み込み速度が300倍になったよ。
785仕様書無しさん:04/10/03 23:52:26
とりあえず、研究室みたいなところの奴と
ありえない現場環境の作業員のような関係だな
このスレのすれ違いな部分は
786仕様書無しさん:04/10/03 23:56:25
Java厨VB厨Cobolerがついて来れなくなってるよ!
787仕様書無しさん:04/10/03 23:59:08
現場環境では、
使うツール、ツールの使い方を制限するのがアタリマエなんだと思う

研究室みたいな奴というのは、なぜ↑のようなことをするのか、
その意義を理解していないだけなんだと思う。

でもさ、現場に出てみなくても、想像はつくと思うんだがなあ・・・
そうでもない?
788仕様書無しさん:04/10/04 00:54:35
>>787
でも、制限を受けてこんなところでグチをこぼさなきゃならない
ひとってのが、どんな理不尽な仕打ちを受けているか、なんてのも
わりと想像がつくと思うよ。

まえにいたプロジェクトでは浮動小数点型が使用禁止だったけど、
小数点計算を行うことが前提になっている仕様なのでどうにも
納得がいかなかった。
確かに、繰上げ繰り下げを明確にするのは大切だけど、桁あふれ
させてちゃ意味ないじゃんよ・・・。
789仕様書無しさん:04/10/04 01:09:01
>>760
環境を無視して我を通す奴とは一緒に仕事したくないな。
C++の規格で通ってるから何?役に立たないもの作ったって金なんか払わない
とでも言っておけば?
環境に適応できないやつは本当になんとかしてほしい。
790仕様書無しさん:04/10/04 01:14:16
>>787,788
それが想像つかないからこういう板(スレ)ではすれ違いが無くならんのよね・・・。

791仕様書無しさん:04/10/04 01:51:09
漏れの会社のヤシのコード

If (IsDate(strDay) = False) = True Then

そいつのコード見るの鬱になってきた
792仕様書無しさん:04/10/04 02:04:25
>>791
そいつは確かに鬱だな
何でわざわざ = True してんだよ…

というわけで、半ばお約束的に改良してみた


' 文法、うろおぼえ
Public Function IsTrulyTrue(ByVal expr As Boolean) As Boolean
    IsTrulyTrue = IsTrulyTrue(expr)
End Function

Public Function IsTrulyFalse(ByVal expr As Boolean) As Boolean
    IsTrulyFalse = IsTrulyTrue(Not expr)
End Function

If (IsTrulyFalse(IsDate(strDay))) Then


こいつを遠慮なく使ってくれい
さあ
793仕様書無しさん:04/10/04 02:13:08
トゥルリラー トゥルリラー 風に吹かれて♪
794仕様書無しさん:04/10/04 02:15:57
書いたのオレ様の予感!
795仕様書無しさん:04/10/04 08:01:56
PS2のゲームプログラマだが、stlもboostも余裕でチームのプログラマ全員使ってるよ!
古い人に多いんだが、比較的新しいモノって、多くの場合知識不足ゆえの誤解をしてるんだよね。
食わず嫌いっつーか、試しもせず否定したり、昔の知識がそのまま通用すると思ってたり。
796仕様書無しさん:04/10/04 10:57:47
新しい人に多いんだが、今の知識がどんな環境でもそのまま通用すると思ってたり。
とか返されるぞ。開発環境は千差万別なんだってば。
797仕様書無しさん:04/10/04 14:49:18
A = A + 3

.NET環境でのお話
798仕様書無しさん:04/10/04 15:36:12
やっぱりコレだろ

a = a + 3; // aに3を足す

コメント意味ねぇ
799仕様書無しさん:04/10/04 16:50:08
>795
>試しもせず否定したり
「試したら大丈夫だった」と言うだけで信用するアフォはおらんと言って見るテスツ。
説得するには「信用できる」証拠が必要。
(「信用できる」ってのが一番のミソ。)

>796
そーやって己が努力しなかった結果を、環境に転嫁するのですねと言ってみるテスツ。
素直に己の無力さを認めて、「決まりだから仕方が無いよ」と言った方がよっぽど納得して貰えるぞ。
それでも諦めないヤル気のある奴は、実力があるなら環境改善に利用し、
無いなら自爆するよう仕向けるべし。
800仕様書無しさん:04/10/04 17:10:13
例外処理はともかくとして、STL あたりは負の要因はあんまりない気がする。
フールプルーフ(←言い方悪いけど)として外してるのだろうか?
801仕様書無しさん:04/10/04 18:06:28
>799
795が言いたいこと796が言いたいこと
どちらにもずれている気がする。
802仕様書無しさん:04/10/04 18:26:51
>>801
つりでしょ?

そうでなかったら、>>799みたいな上祐とは一緒に仕事したくないな。
803仕様書無しさん:04/10/04 19:03:37
>>792
どもっ!
804仕様書無しさん:04/10/04 19:10:24
>800
テンプレートの実装がバグってるコンパイラもあるし、
STLはある程度汎用性を持たせた作りになってるから
特定ターゲット向けにガチに作り込んだ類似のライブラリの方が
良い場合もあるんだろう。
>760を読む限りでは改善してるらしいし。
805仕様書無しさん:04/10/04 20:16:27
STLを特定ターゲット向けにガチに作りこむ?
例えばSTLの何を特定用にガチに作りこめる?
STLportの実装とか結構良く出来てるぞ。

独自似非STL用意しちゃうと、その分テスト、ドキュメント等の整備が結構大変なんだよね。
そのコストに見合った分、果たして本当に向上すんのかね?
806804:04/10/04 20:41:13
んー、例えば整数しか入らないことが分かり切ってるvectorのミニマム版とか。
漏れは760の会社は知らんからてきとーにほざいてるだけだがw

まぁ760の言い分がマジかネタかでしょ。
マジなら既にそのライブラリ使ってゲームを1本以上リリースしてるんだろうし
だったら(今のところ不具合が出てないんだろうから)信頼できるんだろう、760の社内では。

ちなみに漏れとしてはSTLがふつーに使えるなら迷わずそっち使うっす。
807仕様書無しさん:04/10/04 20:44:38
>>795
おまえは、自分の作ってるゲームだけがPS2のプログラムとでもおもってるのか
すくなくともアロケーターとコンテナ系STLは作り直さないと
とてもじゃないが使い物にならん、うちのPS2プログラムでは

メモリ確保開放をものすごい勢いで行うので(ランダムインスタンス系ゲームなので)
あれをそのままつかってたら、すぐにでもフラグメントして駄目になる

まああれだ、おまえの世界だけがすべてじゃないってこった
井の中の蛙になるなよ

もちろん、漏れみたいな環境ばかりとも思わない
ただ、うらやましいと思うだけだ
808仕様書無しさん:04/10/04 20:45:49
ココ見てたら俺のレベルでもPGのバイトできるような気がしてきた。
809仕様書無しさん:04/10/04 21:17:21
>>807
おまえは、自分の作ってるゲームだけがランダムインスタンス系ゲームとでもおもってるのか

>すくなくともアロケーターとコンテナ系STLは作り直さないと
>とてもじゃないが使い物にならん、うちのPS2プログラムでは
どんな面で使い物にならないと思ったんだ?
んで、どのコンテナを、どんな風に作り直したんだ?
標準のSTLと比べて、何がどれくらい向上したんだ?
ドキュメントはちゃんと作ったか?


つうか、フラグメンテーションをやたらめったら恐れすぎな人も多いねぇ。
大きいメモリ確保、小さいメモリ確保を別のプールに分ける等工夫すれば、
オレが試したトコろ、断片化のせいでメモリが足りなくなるなんて起きないんだけどねぇ。
810仕様書無しさん:04/10/04 21:35:02
そういうノウハウ込みで、「ツールの使い方」だと思うよ
だから、
オレんとこでは使えてる
なんて主張されても困る。
811仕様書無しさん:04/10/04 22:02:39
オレも、オレんとこでは使えてない
なんて主張されても困る。
812仕様書無しさん:04/10/04 22:16:49
すくなくともオブジェクトプールくらい作れないPS2のソフト開発者が
一人いることはわかった。
813仕様書無しさん:04/10/04 22:32:23
最低限アロケーターは作らないとだめだよな、PS2
プール分けすらできんから

vectorのコードみるとわかるが、バッファが拡張されることがしょっちゅうおこると
場合によってはフラグメントすると思うぞ
814仕様書無しさん:04/10/05 00:54:31
おまいら、Java厨がついていけないそうだ。
815仕様書無しさん:04/10/05 05:49:41
>この会社辞めようと思ったソースコード。
>プログラマとして幻滅するソースコード。

/* 偽装派遣は、使い捨てにされます。 */
816仕様書無しさん:04/10/05 06:51:07
>>807
> おまえは、自分の作ってるゲームだけがPS2のプログラムとでもおもってるのか
どこをどう読んだらそういう発想が出てくるの?
頭の悪いいいがかりじゃないなら、筋道立てて説明してみて。
817仕様書無しさん:04/10/05 07:10:14
「そういう意味を含んでいるつもりは無かった。自分の書き方が悪かったかもしれない」
という考えは微塵も出てこないんだね。ゲームプログラマて、皆さん自信家ですか?
818仕様書無しさん:04/10/05 07:59:57
金も技術も無いのにプライドだけ高いからね。
819仕様書無しさん:04/10/05 08:01:19
>>817
いるよね、そういう「認識の相違」を考慮できない人。
たとえエンジニア同士であっても他人に過ぎないんだから
自分の言ったことが別の形で伝わってる可能性も充分に考えられると思うんだけど、
他人とのコミュニケーション経験が少ない場合は
他人がどう考えてるかを予測する能力が低いから理解できないんだよね。

そういう人間が多い業界なのはわかるんだけど、
「そういうもんだ」で済ませてる人が多すぎる。
「相手がどう思うか考えて行動しましょう」ってだけなんだけど、
常識過ぎて誰も見直そうとしないし、みんな自分はできてると思い込んでる。
820仕様書無しさん:04/10/05 08:04:25
   /⌒\
  (  人 )  ミ  _)
  |  |ミ  /
  |  | / チンコ
  ( ・д・) )) ウンウン
 (     )
(_____)
たしかにそういう奴いるな、、、、人のことを考えられないってことなのか、、
821816:04/10/05 08:42:15
>>817
> という考えは微塵も出てこないんだね。
だって元の発言書いたの俺じゃないもん。
「別人が突っ込んだのかもしれない」という考えが微塵も出てこないのは
どうかと思うぞ。
822仕様書無しさん:04/10/05 09:01:50
おまえの発言を見れば(余裕で使ってるって表現がバイト臭漂うが)
・PS2でSTL boostを使っている
・古い考えの人間は新しいもの(ここではSTL)を使いこなせない
・ゆえにPS2だろうが、STLを使わないのは古い人間
というふうに読み取れるし、そういう意図で書いたと漏れは読んだ
そういう意図じゃなかったの?
823仕様書無しさん:04/10/05 09:03:26
これは他人に誤解されないソース書きなさいという教訓ですか?
824仕様書無しさん:04/10/05 09:22:41
>>823
他人に誤解されないよう正確に情報を伝えられるコミュニケーション能力が重要だね、
ってことでないかいな。
825仕様書無しさん:04/10/05 10:32:19
> メモリ確保開放をものすごい勢いで行うので
で、だれもこれには突っ込まないの?

ネタはスルーってんならそれでいいけど。
826ネトゲ@廃人:04/10/05 11:02:01
コンプレラC:\メモリMaple.exe@nexonのバイナリF2コード逆探よろ
827仕様書無しさん:04/10/05 11:53:04
使い方によっては、物すごい勢いで行うこともあるんじゃないか?
なんどもいわれているように、お前の環境がすべてと思わないように

メモリ少ないんだから、初回から十分なバッファとって、倍々に増やすともかぎらないだろ
STLの本質は内部実装でなくて、外部インターフェイスの統一なんだから
どんな実装があってもおかしくはない
PS2っていってもGCCじゃなくてコードウォーリアーなのかもしれないし
828仕様書無しさん:04/10/05 15:46:47
VB6のプログラムに…


GoSub見つけちゃった…  orz
829仕様書無しさん:04/10/05 16:00:38
それこそ本来のベーシックのあるべき姿じゃないか。w
88ベーシックとかからの移行組ですかね。
830仕様書無しさん:04/10/05 16:45:40
同じ作業を繰り返すのに、ループじゃなくてコピペが使われてた…●| ̄|_
831仕様書無しさん:04/10/05 17:35:54
リトライにGoTo……勘弁しちくり orz
832仕様書無しさん:04/10/05 21:41:27
int      a;
short  b;
 (略)
int ret = (int) b / a ;

「(除算は)doubleが返ってくるからキャストしなきゃいけない」んだとさ。
833仕様書無しさん:04/10/05 22:06:38
>832
そいつの横っ面をK&R第二版でひっぱたいてあげなさい。
834仕様書無しさん:04/10/05 22:09:46
久しぶりにほほえましいのが来たなぁ。でも

double d = 1 / 2 * (hoge + hage)(以下略)

なんてやらかして、dはいつだって0!!ってコードを
何年か前に見つけたときは、ホントにキーボードに
頭突っ込んで倒れたぞ・・
835797:04/10/05 22:31:12
>>798
読みにくいので、バグ取り中に
A += 3
と書き直したら、コード書いた先輩に
A += 3 ' (今日の日付)(漏れの名前)(修正箇所(理由))
とコメントしておかないとダメじゃないかと怒られました。

          |
          |
          |
        (-_-) 漏れ、悪いことしたかなぁ…
        (∩∩)────────────────
      /
    /
  /
836仕様書無しさん:04/10/05 22:37:07
まぁ
「動いてるならいじるな」
は鉄則ではあるわけだが。
とはいえ、見なかったことにしてしまうのも嫌だというのは分かる。
837仕様書無しさん:04/10/05 23:17:58
正直、コードスタイルの問題なんだから
チーム規約とかじゃなければ、どうでもいいとおもうが
838仕様書無しさん:04/10/05 23:19:06
>>827
ものすごい勢いで行うことがわかってるなら再アロケーションのコストや
断片化の起こりやすい実装にはしないはずなんだか。

ねえ、ほんとにネタじゃないの?
いまどきそんなのVectorにころがってる自己満足ゲーぐらいでしかやらないよ。
ゲー専の卒業課題じゃないんだからさ。
839仕様書無しさん:04/10/05 23:41:14
ゲーム業界みたいな閉鎖環境で、すべてしっている838は中学生ですか?
840仕様書無しさん:04/10/06 00:10:32
喪前ら、それ以上やるんならゲームPG専用スレでも立ててやってくれ。
841仕様書無しさん:04/10/06 01:10:40
↓こちらへどうぞ。
ゲームプログラマーの人に聞きたい 5問目
http://pc5.2ch.net/test/read.cgi/prog/1093629292/
842& ◆R7PNoCmXUc :04/10/06 01:56:59
既出過ぎかもしれませんが・・・

char buf[256];
memset(buf, NULL, 256);
strcpy(buf, "AHO\n");
xyz_print(buf);

みたいなコードを見て苗まくった 9 年前の新人時代。

「NULL」ですか。はぁ。
memset() は「一応、念のため」ですか。はぁ。
xyz_print("AHO\n"); は邪道ですか。はぁ。

ところで、「256」がソースのあちこちに出てくるようで・・・お好きな数字なんですね。
843目森二五六:04/10/06 02:27:57
わしはプログラムに自分の名前を刻むんじゃ〜
844仕様書無しさん:04/10/06 09:34:42
>>842
そのまえにxyz_printって何?
Cではなさそうなんだが・・・
845仕様書無しさん:04/10/06 09:48:56
xyz_printの仕様によっては、xyz_print("cons str\n")は邪道にならないか?
846仕様書無しさん:04/10/06 10:02:29
>>843
そのネタ、今の若い奴は知らないんじゃないぜ、父ちゃん。
847仕様書無しさん:04/10/06 10:03:17
xyz_print が引数の文字列を書き換える場合とかは、邪道かな?
他は確かに萎えるけどね
848仕様書無しさん:04/10/06 19:58:48
counter = 0 ;
for ( int i = 0 ; i < data->cnt; i++ ) {
 //データの個数を数える
 counter++;
}

…小人さんが書いたのか?
849仕様書無しさん:04/10/06 20:56:35
すまん、そのままの名前を出すとまずいと思って、安易に xyz_print
などとしてしまった。

プロジェクトのとある共通関数で引数の文字列は書き換えないっす。
fputs にでも置き換えて説明すりゃよかったな。

あと、思い出したのが
memset(buf, NULL, 256);
の部分が
strncpy(buf, NULL, 256);
のようになっているソースもあった。
850仕様書無しさん:04/10/06 22:36:50
strncpy(buf, NULL, 256);
は悪しき書き方を逸脱して明らかなbugだなあ
851仕様書無しさん:04/10/06 23:40:21
char dummy[256];
ってのがグローバルにあって
main処理の最初に
memset(dummy, NULL, 256);
ってあって
あちこちに
memcpy(初期化したい変数, dummy, sizeof(初期化したい変数));

今保守させられてるソースの話さ(涙)
852仕様書無しさん:04/10/06 23:43:18
VBで。

Dim StrData1 As String * 48
Dim StrData2 As String * 48

lPnt1 = VarPtr(strData1)
lPnt2 = VatPtr(StrData2)
Call StrCpy( StrData1, StrData2, LenB(strData1) )

VBでstrcpy?と思ったら、わざわざCでDLL作ってVBから呼び出せるようにしたんだと。
そこまでやるんなら最初から全部Cで作ればいいじゃん。
もう何がしたいんだか全然解りません_| ̄|○
853仕様書無しさん:04/10/06 23:51:39
VarPtr()なんて初めてみた。こんなんあったんだな・・・・
854仕様書無しさん:04/10/06 23:55:46
つうか、そのソース非常に危険なような気が。
VBのStringってBSTRだっけ?
APIに渡すときはchar*とかにしてくれるけど、いまいちだったような気が。

>>853
VBもポインタを取る関数はいくつかあります。
関数ポインタも取れるし、やる気になれば結構できます。
ただ、そういうのはVBでやるもんじゃないっす。
855仕様書無しさん:04/10/06 23:57:44
>852
ガワをVBで作って肝はC/C++で作るって手はありでないの?
M$がCOMを喧伝してたころはそういうのを推奨してなかったっけか。
856仕様書無しさん:04/10/07 00:01:53
>>855
そうだとしたら、文字列操作のためのI/Fなんて作るべきじゃないでしょ?
2階層とか3階層システムみたいにVBとCの役割分けないと。

ViewとコントロールをVB、ModelをCってのがMSの言いたいモデルじゃないの?
857仕様書無しさん:04/10/07 00:03:49
いや、素直に

StrData1 = StrData2

で済む話だろ、と>852は言いたかったのでわ。
858855:04/10/07 00:11:41
>856
そりゃそうだなorz
852が「最初から全部Cで〜」と書いてるので、
855みたいのもありでないの、というくらいのつもりだったんだわ。
少なくとも852の例に関しては分ける意味無し、に同意。
859VB-Slime:04/10/07 00:17:52
>855
うちもまだそういう手法にこだわってる人多いです。
確かに、ファイルI/OなんかはCのほうが遙かに優秀だしね。

>852みたいなソースも見たことありまつ_| ̄|○
860仕様書無しさん:04/10/07 00:55:30
C 言語で main() で return するコードを書いたら
「え〜っ、めいんからりたーんしたらどこいっちゃうのぉ〜?」
とキャリアウーマン風の先輩に鼻で笑われました。

とりあえず、
「え〜っ、めいんはどこからよばれるのぉ〜?」
と返しておきました。
861仕様書無しさん:04/10/07 01:38:26
 char buf[256];
 memset(buf, NULL, 256);
みたいなコードを
 char buf[256] = {0};
と書き直したら怪訝な顔をされますた。
862仕様書無しさん:04/10/07 02:02:10
>>855
基本的にはありだけど文字列のコピーみたいな小さ単位で小出しにされるのはちょっと。
VBの関数なのかCの関数なのかわからんコードはメンテしずらくてかなわん。
もしかしたら、そいつが機能の切り分け下手なだけだったのかもしれんが。
863仕様書無しさん:04/10/07 02:22:27
>>842
うちの職場ではそのmemset()やらんかったらバグ票に初期化漏れって書かれる。
俺はしょうがないから'\0'で初期化してるけど俺以外のヤツはみんなNULLでやってるな。
864仕様書無しさん:04/10/07 02:26:58
>>860
理解できないシチュエーションだなあ。先輩の仕事はなんだ?
先輩はmain()からでるときはexit()使えっていいたかったのかなあ?
865仕様書無しさん:04/10/07 02:28:30
>>861
char buf[256] = {NULL};
にしなかった>>861が悪い。
866861:04/10/07 02:34:07
>865
なるほどー。うっかりしてますた。(w
867仕様書無しさん:04/10/07 03:14:56
>>865
char buf[256] ={'\0'};
が正解かと
868仕様書無しさん:04/10/07 03:45:12
>>867
>>861の職場ではNULLでないと意味が通じないと思う
869仕様書無しさん:04/10/07 07:42:19
>860
え〜と、それ聞かれると正確に答える自信ないけど
argc, argv, envpを積んでくれるとこかな?
870仕様書無しさん:04/10/07 10:51:04
>>860
制御系ではmainからリターンしないことも
たまにある。
871仕様書無しさん:04/10/07 11:06:21
>861,865,867
char buff[256];
memset(buff, 'a', sizeof(buff))

char buff[256] = {'a'}
って等価じゃないんじゃないか?

試しに
for(i = 0; i < sizeof(szBuff); i ++) {
  printf("%c", szBuff[i]);
}
をやってみたら前者は最初だけ'a'が表示されて後者は全部'a'が表示されたんだが
ちなみに使ってるのはVisualStudio6.0のコンパイラですだ
872仕様書無しさん:04/10/07 11:20:00
>>871
あたりまえだが、それがどうかしたか?
873仕様書無しさん:04/10/07 11:21:10
'A'と\0じゃ役割がちがうだろうが。
Cの文字列はNULL止めしてあればいいから、全てをNULL値で初期化する必要はない・・・。
但し、その前提はCHAR配列を文字列として使ってる場合だな。
文字列じゃなくて単に配列(変な表現だが)として使ってる場合、全部を\0で初期化する意味は出てくる。
874仕様書無しさん:04/10/07 11:23:44
>>873
この流れで「NULL止め」とか言える勇気は尋常ではないな。
875仕様書無しさん:04/10/07 11:24:52
>>871
逆じゃねーか?
876仕様書無しさん:04/10/07 11:30:06
漏れは、
char buff[256] = "";
派だな。

邪道?
877仕様書無しさん:04/10/07 11:32:03
>876
悪くはないと思う。
ただ、どっかの馬鹿が何も考えずにbuff[100]辺りをいきなり読みに行ったら

……ここで晒してくれい。
878仕様書無しさん:04/10/07 11:32:16
ROMが減る
879仕様書無しさん:04/10/07 11:34:36
本気でいってるのかどうかわからんけど

char buff[256] = { 0, };
で全部0になるよ
880871:04/10/07 11:42:17
>875
自分の書き込み見直したら、貴方のおっしゃる通りでした_| ̄|○

吊ってきますΛ||Λノシ
881仕様書無しさん:04/10/07 12:01:51
>>880
もう来るなよ
882仕様書無しさん:04/10/07 17:58:47
typedef double dobule;
typedef double dable;
typedef double dabule;

typedef float froat;
typedef float floot;
typedef float froot;
883仕様書無しさん:04/10/07 21:27:11
>>882
これ便利でいいよね。打ち間違えしても安心。
884仕様書無しさん:04/10/07 21:35:26
グラディウス2をやってた人用
typedef double dabo-
885仕様書無しさん:04/10/07 21:45:21
typedef int integer
とか
886仕様書無しさん:04/10/07 21:56:20
typedef int itn;
typedef int tin;
typedef int *tinpo;
887仕様書無しさん:04/10/07 21:57:20
>886
最後のはなんだ最後のはw
888仕様書無しさん:04/10/07 21:57:43
>>880
そんな素直に間違いを認めたら、>>872さんが赤っ恥かくじゃないか。
もう少し気を使えよ。
889860:04/10/07 23:58:08
>>864
main() から return するとプログラムが暴走すると思っているようです。
ちなみに、UNIX 上の ANSI C なコンパイラでの話です。

>>870
それは無限ループさせているから main() から抜けることはない、ということですか。
それとも、制御系の開発で使う C コンパイラでそのような仕様になっているものがある、
ということですか。
890仕様書無しさん:04/10/08 13:02:40
制御系ではmain()無いとか普通にあるし。
891仕様書無しさん:04/10/08 16:18:35
だからなんだよ低能
892仕様書無しさん:04/10/08 16:39:56
何でも煽ればいいってもんじゃないだろ……
893仕様書無しさん:04/10/08 18:32:37
ヽ( ・∀・)ノ
894仕様書無しさん:04/10/08 19:29:36
だからなんだっていってんだろ
895仕様書無しさん:04/10/08 19:47:44
カルシウム摂れ
896仕様書無しさん:04/10/08 20:29:58
(@u@ .:;)ノシ
897仕様書無しさん:04/10/08 20:58:05
>896
なによs(ry
898仕様書無しさん:04/10/08 21:05:49
>896
なんd(ry
899仕様書無しさん:04/10/08 21:35:41
TakahashiException

例外は開発者ごとに苗字を付ける決まりがある。
900仕様書無しさん:04/10/08 21:44:59
>899
同姓の香具師がいたらどーすんの?
901仕様書無しさん:04/10/08 22:14:29
>>899
一人一つしか例外を作れないってことか?
902仕様書無しさん:04/10/08 22:30:47
TarouYamadaNullPointerException
903仕様書無しさん:04/10/08 23:20:13
>例外は開発者ごとに苗字を付ける決まりがある。
エラーダイアログに、携帯電話の番号を入れるためでつか?
904仕様書無しさん:04/10/08 23:45:39

UNIXの画面のscreen shotデジカメで撮ってるのにはワロタ。ってか( ゚д゚)ポカーン
(xvでgrabするだろ普通。)
905仕様書無しさん:04/10/08 23:57:58
>>904
xwd
906仕様書無しさん:04/10/09 00:20:47
>>905
> xwd
( ̄ー ̄)ニヤリッ
907仕様書無しさん:04/10/09 12:02:28
>>904
「このデジカメじゃ満足な画面が撮れません。会社の金で高いの買ってくだちい」で
欲しかった機種を買ってもらって(゛д゛)ウマー
908仕様書無しさん:04/10/09 17:05:58
先週で解雇になった人のソース引き継ぎました。


void foo(){
  int loopflag;
  for(loopflag = 0;loopflag < 3;loopflag++){
    if(endflag = 1)
      goto RABEL1;
    switch(loopflag){
    case 1:
      init();
    case 2:
      ctrlmain();
    case 3:
      fin();
    }
  }
RABEL1:
  return 0;
}

えーっと…どこからツッコミいれればいいですか?
とりあえず、コンパイル通らないんですけど…orz
909仕様書無しさん:04/10/09 17:12:35
散々ガイシュツのネタをわざわざ書き込むブァカも早く解雇したほうがいいな
910仕様書無しさん:04/10/09 17:17:04
>908
とりあえずコンパイル通るようにだけ直しとけ。
あとは触らない。これ鉄則。
911仕様書無しさん:04/10/09 17:26:57
>コンパイル通らない

それぐらいすぐ直せ
912仕様書無しさん:04/10/09 17:36:45
リファクタリングしてみた
void foo()
{
      init();
      ctrlmain();
      fin();
      ctrlmain();
      fin();
}
913仕様書無しさん:04/10/09 17:36:54
コンパイル通るようにしようとやってみたんですが、私じゃムリです。
関数のプロトタイプと本体で食い違いがあったり、
タイプミス?と思われる未定義変数が多数。
疲れたので今日はもう帰ります。
914仕様書無しさん:04/10/09 17:39:47
>>912
あれ?設計書に書かれてる内容と随分違っているような。
initで初期化処理をして
ctrlmainがメインループ
finが終了処理って聞いてたんですが…。


やっぱり帰らせて頂きます
915仕様書無しさん:04/10/09 17:52:19
>>913
1から書き直そうと思っても仕様が不明だったりするしね。
916仕様書無しさん:04/10/09 17:59:19
if (endflag = 1)
ワロタ
917仕様書無しさん:04/10/09 18:05:42
>リファクタリングしてみた
void foo()
{
if(endflag!=1) init();
if(endflag!=1) ctrlmain();
if(endflag!=1) fin();
}
918仕様書無しさん:04/10/09 18:09:07
void foo()
{
  init();
  ctrlmain();
  fin();
  return 0;
}
919仕様書無しさん:04/10/09 18:09:55
>918
ネタはよせ
920仕様書無しさん:04/10/09 18:11:17
899 :仕様書無しさん :04/10/07 15:20:38
'マスタから税率取得
Dim Zei As Double
Set rs = db.OpenRecordset("税率マスタ")
rs.MoveFirst
Zei = 0.05
rs.Close

ヽ(`Д´)ノ
921仕様書無しさん:04/10/09 18:15:56
>関数のプロトタイプと本体で食い違いがあったり、
本体を信じろ

>タイプミス?と思われる未定義変数が多数。
定義しろ
922仕様書無しさん:04/10/09 18:17:20
>>920
ワロタ
923仕様書無しさん:04/10/09 19:01:21
finは通らないだろ
リファクタリング

void foo(){
 if(endflag!=1){
  init();
  if(endflag!=1){
   ctrlmain();
  }
 }
}
924仕様書無しさん:04/10/09 19:07:59
breakないからfinは毎回通るんだよ!
925仕様書無しさん:04/10/09 19:14:12
>>908
リファクタリングしてみたYO!
void foo(){
}
926仕様書無しさん:04/10/09 19:18:00
でもendflagはどんな型のグローバル変数かわからないんだよな。
enum endflag{一個しかない};
かもしれないし。
927仕様書無しさん:04/10/09 19:18:06
りふぁくたリング
は振る舞いを変えてはいけない!

リストラくちゃ
なら作り替え
928仕様書無しさん:04/10/09 19:20:52
>927
じゃぁ、endflag が volatile な何かかもしれんから
こうか?
void foo(){
endflag = 1;
}

929仕様書無しさん:04/10/09 19:35:54
>>928
ワラタ

でも、return 0; が実装されてないぞ
あれ?void?
930仕様書無しさん:04/10/09 20:07:30
>929
だからコンパイル通らないんだろ、きっと。
931仕様書無しさん:04/10/09 20:19:12
#define endflag カンマで区切られたなんか凄く長い文

だったらやだな
932仕様書無しさん:04/10/09 20:44:30
何人か気付いてないヤツがいるようだが、

 if(endflag = 1)

ですよ。
933仕様書無しさん:04/10/09 22:14:20
ハァ?
934仕様書無しさん:04/10/09 22:32:08
>>933
932には
if(endflag == 1)
だろっ?ってことをいいたいのかと・・・
935仕様書無しさん:04/10/09 22:43:04
どんなふうに教わったらあんなソースを書くようになるのか
が気になる
936仕様書無しさん:04/10/09 22:43:38
>>934
勝手に思い込みでプログラムを変えるな。
937仕様書無しさん:04/10/09 23:02:11
しかしそこを変えないとコンパイル通らない
938仕様書無しさん:04/10/09 23:04:01
// Soooooooooooooooooooooooory!!!!!!!!!!!!!!!
// I just haven't had time to finish it. I'll update the documentation in the near future.
// Plese, just give me a little time to do it.
939仕様書無しさん:04/10/09 23:20:53
>>937
ハァ?
940仕様書無しさん:04/10/09 23:53:52
だから 928 が正解だろ?
941仕様書無しさん:04/10/10 00:22:38
コンパイル通るよ
942tom ◆q6w1pW48lY :04/10/10 00:38:20
会社って大変だね・・・
5人くらいが同じコードいじってるんでしょ?
943仕様書無しさん:04/10/10 00:42:13
>5人くらいが同じコードいじってる

...それはないな(w
944tom ◆q6w1pW48lY :04/10/10 00:45:02
>>943
そうなの?
モジュールで分けてるから同じコードいじることはないか・・・

でも同じチームにいたら見るくらいはするっしょ
945仕様書無しさん:04/10/10 00:47:43
複数人で同一コードさわるような開発ならCVSなりなんなり
使うのが当然だろ。
946仕様書無しさん:04/10/10 00:52:09
>940
endflag = 1 が偽になる可能性は考慮しなくて良いのですか?
演算子オーバーロードとか…
947tom ◆q6w1pW48lY :04/10/10 00:52:32
>>945
やっぱプロの人も使うんだー
SourceForgeの人たちは全員使ってるよね

どんな修正したあとも
今までのどの状態にでも戻せるってのは
一人でなんか作るときにも役立ちそうだ・・・
948仕様書無しさん:04/10/10 00:58:38
class EndFlag { operator = (int) { exit(0); } } endflag;
949仕様書無しさん:04/10/10 01:05:14
/*
もとのコード
*/

よし、コンパイルは通t
950tom ◆q6w1pW48lY :04/10/10 01:08:54
>>949
そういうやりかたやっぱよくないかな

たまーーーにする
951仕様書無しさん:04/10/10 01:41:42
>>940
そんなこと言ったら識別子全部マクロってことだって
952951:04/10/10 01:43:14
>>946の間違い
953仕様書無しさん:04/10/10 01:56:50
VC++とVSFlexGridにて。
クリックされたセルのカラムの確認。

if( col == 2 || col == 3 || col == 5 || col == 6 || col == 8 || col == 9 || col == 10 || col == 12 || col == 13 ) {
/* 処理 */
}

…ホントはもっと長かった…。
しかも3箇所同じのがあった…。

さすが共産主義の国。
954仕様書無しさん:04/10/10 05:45:33
>953
> さすが共産主義の国。
それって中国に発注したってこと?
日本でも思うことは
会社の外は資本主義、会社の中は共産主義。
955仕様書無しさん:04/10/10 06:08:25
>>953
仕様変更に強い可能性もあるし、、、
956仕様書無しさん:04/10/10 06:17:33
switch(col){
 case 2:
 case 3:
 case 5:
 case 6:
・・・
957仕様書無しさん:04/10/10 11:27:19
#define numberof(v)  (sizeof (v) / sizeof *(v))
static const valid[] = {2, 3, 5, 6, 8, 9, 10, 12, 13};
for (i=0; i<numberof(valid); i++)
  if (col == vaild[i])
    break;
if (i < numberof(valid)) {
  /* 処理 */
}
958仕様書無しさん:04/10/10 19:52:31
>>956-957
どっちでもいいような。
状況によっては、>>956のほうがシンプルでいいかも。
959仕様書無しさん:04/10/10 20:14:16
if( col >= 2 && col <=13 ){
 if( col !=4 && col != 7 && col != 11 ){
  /* 処理 */
 }
}
程度で
960仕様書無しさん:04/10/10 21:12:26
↑全然改良になってないな。むしろ改悪だコレ
961仕様書無しさん:04/10/10 21:15:25
比類なき pascal では

if col in [2..6, 8..10, 12..13] then begin
end;

で済むな。
962仕様書無しさん:04/10/10 21:33:04
>>961
じゃあ
if not col in [4,7,11] then begin
end;
というふうにも書ける?
963仕様書無しさん:04/10/10 21:57:25
比類なき pascal では

if not (col in [4,7,11]) then begin
end;

ですね。これほどに比類なき pascal なのに
なんで下火なんだろw
964仕様書無しさん:04/10/10 22:09:10
>963
そりゃ言語製作者本人が
「もうちょっとちゃんと作っとけばよかったorz」
なんて言い出すくらいだから。
965953:04/10/11 01:57:00
あー、ちなみにコレは序の口だから。

300行に渡る同じ処理が8個コピペされてたり、
ほぼ同じ画面(違いはボタンのアクティブ/非アクティブぐらい)なのに
クラスもリソースも別だったりするから。

あとcsv吐き出し処理の中に見出し行がハードコーディングしてあったりな。
確実に使いまわしで変更かかるのに。
defineさえされてねぇよ…。

>>954
その通り、中国です。
966仕様書無しさん:04/10/11 12:43:40
あーみえて、中国は個人主義だからな
後のメンテナンスの事とか絶対にちーむでの効率とかは考えないぞ。

そもそも設計がなければ自分では作らない(言われた事はちゃんとやるが)。
967仕様書無しさん:04/10/11 13:21:53
ま、日本企業の相手なんかする奴はレベル低いのしかいないわな
968仕様書無しさん:04/10/11 18:47:42
>>966
>後のメンテナンスの事とか絶対にちーむでの効率とかは考えないぞ。
中国人に限ったことではない・・・。
969仕様書無しさん:04/10/11 19:16:06
中国とかの場合、警戒して準備するもんな。
日本語の通じない日本人よりマシかもね。
970仕様書無しさん:04/10/11 23:59:14
>>966
>設計がなければ自分では作らない

まるで、日本人は仕様書が無くても作れるみたいな言い草だな。
971仕様書無しさん:04/10/12 00:16:24
変更元ソースと口頭で変更点を伝えられて(文書は証拠が残るので出さない)
あとはドカチン・ドカチンと
972仕様書無しさん:04/10/12 09:24:23
そうしてまた仕様不明のブラックボックスが完成と。
だから日本のソフト産業は競争力がなくなるんだな。
>>971の場合でも、クローズな場面のみで通用する論理だし。
973仕様書無しさん:04/10/12 20:39:27
実は品質なんかどうでもいいんじゃないか。
存在している事に意義があるみたいな。
974仕様書無しさん:04/10/12 21:03:31
いやいやいや、それはさすがに。
975仕様書無しさん:04/10/13 00:55:01
規律・過程・美徳を重んじる日本人、臨機応変を好み結果重視の中国人。
麻婆豆腐文化の中国は、ずさんな品質管理を露呈する一方で、日本でも難しいロケット打ち上げに成功するほどの高度な技術力を持ちます。
976仕様書無しさん:04/10/13 00:59:30
結果重視っつーか収入重視。
金がもらえれば出来具合なんぞしったこっちゃありませんwwwww
977仕様書無しさん
>>976
今の現場ソレだよ…

in日本