1 :
仕様書無しさん :
04/08/09 22:28 この会社辞めようと思ったソースコード。 プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板に逝って。
2 :
仕様書無しさん :04/08/09 22:29
あいや、#Eは落ちたか…… ともあれ>1乙
さらに即死までしような勢いなのでage
葡喘
/* ROOP */ for(…) { … } 中学から英語やり直せと。
if(条件A){ if(条件A){ /* 念のため */ : ...泣くぞ
>8 ハゲワラ
>>8 ワロタ!!
俺はそうだな、おもしろくはないが、VBの標準モジュールで
100行以上にわたるPublic変数の宣言を見たときウンザリした覚えが。
ちなみにそこは辞めたけどなw
>8 スレッドが絡むフラグの場合そういう判定をすると聞いたことがあるが……
いずれにしても、殴り書きしたか、よほどの バカとしてか思えないようなif文てのは、 よくある。 イヤガラセとしか思えないようなネストの オンパレードとかあるからな・・・
熟練度はifとループの仕方がどれだけうまいかで分かる罠
>>11 聞いたことがある、って……おまえ……。
Double-checked locking と言って、スレッドを使ったプログラミングでは必須のテクニックですよ。
if (!リソース使用中)
排他処理
if (!リソース使用中)
リソースにアクセス
ってね。念のためにやってるわけじゃないよ。
15 :
仕様書無しさん :04/08/12 11:08
>>14 test and set
の命令があるから不要です
>>14 >必須のテクニックですよ。
ださ…
>if (!リソース使用中)
>排他処理
ここがアトミックじゃなけりゃ意味ないって。
triple-checked でも塞ぎきれないのがわかったんで結局ロジック変えろって話になってなかったっけ?
「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 を使用することです。
なるほど!
>17-18 出るとは思ってたJavaの話…
>>20 DCLが破綻してるってのは、別にJavaに限った話じゃないでつよ。
NUMAとかメモリアクセスがout of orderで行われるようなアーキテクチャとかでは
よくある話。
IA-32の呪縛に囚われた>20には理解できんだろうけど。
>21 最後の一言が余計。どーしてそう喧嘩売りたがるかね……。
>>22 スマソ。デスマでイライラしていたようだ。
>20にもスマソ。
>23 デスマ中でしたか。そりゃあ仕方ないね。こちらこそ言い方きつくてスマソ。
クリティカルセクションで、排他処理してたら それをまねして、通常のセクションでにたコードをコピペされてた ぬるぽ
26 :
仕様書無しさん :04/08/15 20:00
>>18 static field に対しては、クラスのロードからその初期化中に
別のスレッドがまだ不完全な static field にアクセスすることは無いのかしら。
27 :
仕様書無しさん :04/08/16 11:50
スレッドの切り替えに関して きちんと書かれてるマニュアルが見つけれないのですが。 クラスの初期化中に、スレッドが切り替わるのは、困りますね。 初期のjavaには、そなん実装もされたらしですね。
>>26 staticイニシャライザのコール中にコンテキストスイッチして、またstatic
イニシャライザ呼ばれたら、困るなあ…
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" '何もしない … のっけからこれ。殺して、もう俺を殺して…
>>30 無意味に文字列で情報を受けているのがキモイが、
問題はそれくらいで、だいぶ読めるソースではあると思った。
32 :
仕様書無しさん :04/08/16 20:29
VB(だと思うけど)って、よく分からんのだが どこが一番つっこみどころなん? ふつーに、設計がまずいだけで、特につっこみどころがないような・・・
>>30 無意味にLOOPするようなソースよりは大分マシだが。
読めるし。
無駄が多くて、A型の俺にはちょっと我慢できん。
動くんだろうが、出来れば書き直したい。
>>31 CTR.Visible と CTR.Enabled は恐らく論理型でしょうけれど
それを論理定数と比較している部分を見て
間抜けだと思わないのは
あなた自身もかなりヤバイという事です。
???
36 :
仕様書無しさん :04/08/17 03:07
>>30 >If CTR.Visible = True And CTR.Enabled = True Then
を
If CTR.Visible And CTR.Enabled Then
としろと
釣りですか
>34 BOOL(boolではない)型をTRUEでチェックするのに比べりゃ、まだマシ。(無駄なだけ)
>>30 'データ型チェック
If Len(value) = 0 Then
ワラタ
なんか内在バグハセーイなヨカンのする召喚魔法でつね。
>>36 おいおい、VB厨か?
VBだとAndで既にFalseとなり条件が合致してなくとも、And移行の比較もやっちゃうんだぜ。
(VB.NETでは、AndAlsoがあるが)
Trueも省略すべきじゃないな(まあそのAndなら早くなるが)
簡略化するより、誰が見てもわかるようにしろよ。
さらに投下。 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文を書こうとするのか…。しかもべたで…。
>>40 あ、 ’’’以下SQL作成’’’ 漏れがはしょりました。
あと、Key_Kaisya はもちろんグローバル変数です つД`)・゚・。・゚゚・*:.。..。.:*・゚
>>40-41 ビジネスロジックは、
クラスモジュール(Friendで)か、
クラスがわからんバカには、標準モジュールに
書けと言ってくれ。頼む。これ以上VB厨を増やしてほしくない。
> Dim SQL As String コーディング規約ないのかよ... とほほだな。 これだけでもゲボが出そうだ。 ローカル変数で大文字スタートの変数使うなよ。 Camel方式にしてくれよ、他の人がみづらいしぃ。 こういう香具師に限って、1プロシージャが数百行とかあるんだろうなぁ...
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 /* おいおい... バリアントかよ! */ /* 何で余計酷くするんだ!! */
あ、
>>44 のラストは、VB6の話なので、intDay以外はバリアント型になります。
VB.NETではCの宣言に近づいたから、ちゃんとInt型になるけど。
>44 三段ボケワロタw Yeayが特にツボだ。
>>46 Yearをどう勘違いすれば、Yeayになるのか...
私もかなり指摘するのに躊躇しました。
Manthはわかるとして、 Yeayはどう発音すればよいのでしょうか? いあィ??
>>40 その程度で愚痴るおまえは幸せ。過去ログを読み返せ。
>>49 あなたは、寛大ですね。
この業界、厨PGはピンキリとは言え、私はすべて許せません。
というか、許せれたら厨PGではないですから。
VB.NETで文字列連結をことごとくStringオブジェクトだけで やってるのを見ると、思わずStringBuilder勧めるんだが、 全然納得してくれん。 ReturnもAndAlsoもそんな調子・・・ 手間もかからず安全な改善すらしない連中っていったい・・・
>>52 動いてるんだから、それ以上改善のしようがないと思ってるに違いない。
「動けばそれでいい」という価値観を崩す必要がある。無理だと思うが。
>>53 プログラミング作法とか、リファクタリングあたりを読ませたいところなんだが、
入門書しか読まない連中なんで、おそらく拒絶される。
その道の権威が言ってるんだからという説得も、そもそも、カーニハンも
ファウラーも、名前すら知らない可能性大・・・
>>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年後でも通用するプログラムを打てるようにみたいなことを見たのですが 実際皆様の打っているプログラムでそういった意識を持っておられる方はいますでしょうか? 質問ばかりで申し訳ありませんが気が向いたら答えてやってください。
>>58 わかりやすいプログラムかどうかと高度かどうかは関係ないよ。
まあ、高度って何よって話はあるんだが。
プログラムを作れるようになるためにはコンピュータがどうやって動いてるかを
想像できるようにならなきゃいけないと思うんだけどね。
あと、プログラムを打つ、って表現は普通しない気がする。
昔はベーマガ見ながらプログラム打ち込んだYO
>>58 PGになるのはやめとけ。向上心のある奴は向かない。勉強しない馬鹿ばっかでいやになるぞ。
可読性と高度なプログラミングは、十分な知識があれば反しない。
極端な例だが、たとえばwhileやforを知らない奴はifとgotoでループするしかない。
単に無知だから書けないし読めないだけなんだが。
そんな奴らにとってはwhileやforは可読性最悪なプログラムなわけよ。
自分以外そんな奴らばかりだから、自分もifとgotoでループせざるを得ない。そんな感じだ。
あとは、デザインパターンを適用したのより、相互依存しまくりな方が読みやすいとかね。
構造がシンプルだから。そういう奴らが馬鹿でかい万能クラスを書いたりする。
これも無知なのが理由。そんな奴らばっかだよ。やってられねえ。
実際にはwhileやforを知らない奴は居ないが、再帰すら理解できない奴は結構多い。
趣味のプログラムは可読性なんかも考慮してちゃんと作るが、仕事のプログラムはやっつけで作る。
高度な技術も使わない。その方が読みやすいらしい。
それに仕事でちゃんとしたプログラムを作っても他人が無茶苦茶にするから意味がない。
これも例だが、たとえばふと気づくと変数がみんなグローバル変数にされてたりする感じ。
最悪だろ? デジドカって単語は伊達じゃないよ。PGになるのはやめとけ。
長々と書いてから気づいたけどスレ違いだね。ごめん。
>>58 このスレをどう見れば近い話題に思えるのか、
それを考えると、お前は向いてないな。
むしろ、氏ね。
>>51 誰が「愚痴」などと書いた?
ちゃんと、教育しておる。キレながらだけどな(w
>>52 を責めてるバカとは、一緒に仕事したくないな。
>52の話題で出てきたバグ生産機と同じレベルの思考じゃねーか。
会社のためとかじゃなくて、やってあたり前のことだと思うのだが。
釣れますかね?
VBしらんので
>>52 の内容が分からない。
誰かコードで示してくれ。
うちの会社の先輩はいまだにVB2.0使って開発してまつ。
秀丸の作者だったか同じようなことしてたな 環境の古い人にも使って欲しいからそうしてるとか
70 :
仕様書無しさん :04/08/19 08: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(); } }
>74 その人にオブ脳本1000回音読させれ。世のため人のために。
XXXXオブジェクトを得るのにXXXXFactoryのgetXXXX()を使う 所だろ?
>>78 無駄にXXXXFactoryクラスが存在するところ。
そんな腐れファクトリーを作るくらいなら素直にnewすりゃいいじゃん。
Factory Methodパターンを勉強し直せ。
将来的にXXXXの構築が複雑化しそうだと踏んだから Factoryを作った、というのは考えないの?
>>80 考えないだろ。おまえ論外だ。
構築が複雑だという問題をFactory Methodパターンは解決しないじゃん。
>>77 むかし、そういうソースを協力会社のベテランが書いてたなあ。
Factory クラスの生成メソッド名は create か createFoo になるべきだな。
複雑な構築のサポートはBuilderだね Factory Methodの使いどころはけっこう難しいよ
>>81 80じゃないけど、
「構築が複雑化」っていうのは単体のクラス自体の構築の複雑さを言ってるんじゃなくて、
XXXXと同じインターフェースを持つ複数のクラスから生成するクラスを選択したり、
選択の結果によっては生成に引数が要るようになったり、
生成後にインスタンスをどこかに登録してから返したり、
そういう話だと思う。
85 :
仕様書無しさん :04/08/20 07:18
だからオブジェクト指向はいやなんだ つまりjavaのことなんだけど
>>74 以降の、JAVA厨の独自ワールド構築に必死な姿にワラタ
後でSingletonパターン適用しようと思って
>>74 のようなコードを書いたことがある。
結局いまだに適用していないが・・・
>>84 もしそうなら、クラスを選択するためにgetXXXX()が引数をとるように修正しないといけないじゃん。
そしたらクライアントのコードを軒並み修正する必要があるんだから、直接newするのと変わらん。
無駄に複雑にしているだけだ。
第一、そういう予定があるならXXXXはインターフェイスか抽象クラスにしておくだろ。
89 :
仕様書無しさん :04/08/20 16:33
74のコードがほんとにその5行だけならおかしいが、 newしたオブジェクトに複雑な設定をするとか、 将来newするオブジェクトに変更が発生する可能性があるなら そのコードはありだな
>>89 どうしておかしくない場合をむりやり仮定したがるかな。
辞めようと思ったコードなんだから、おかしいのが自然だと思うけど。
どこかでFactory Methodパターンを見た馬鹿が訳も分からず形だけ真似たんでしょ。
> newしたオブジェクトに複雑な設定をするとか、
コンストラクタでやればいいでしょ。できない場合はしかたないけど。
> 将来newするオブジェクトに変更が発生する可能性があるなら
new XXXXの代わりにnew YYYYするってこと?
それだとXXXXFactoryとかgetXXXX()って名前が最悪。
YAGNI! 複雑だのなんだのって、それが必要になった時にすりゃいいじゃん
>>91 XP的な発想だね。それ、賛否両論だから辞めようとまでは思わないんじゃないかな。
93 :
仕様書無しさん :04/08/20 23:46
まぁ、あれだ 2chの書き込み制限の中だと、本当に言いたいことが十分に書ききれないことがある っていうことで、納得すればいいじゃねーか。 君子なんちゃらに近寄らず、ですよ。えぇ。
えーと、君子虎穴に近寄らずんば孤児を得ず、だっけ?
ではこの屏風から虎を追い出してください
>>78 XXXXのサブクラスを返さなきゃいけないんだよね、普通。
猿も歩けば河流れ
見た! 聞いた! 言った!
馬の耳に綿棒
昔取った衣笠
むしり取った衣笠
>>101 こんな時間に一人で爆笑してしまった。責任とれ。
チコたんをこの板で見ようとは思わなんだ・・・
綿棒ワロタ 電車ん中で笑いを堪えるのに必死だったよ。
107 :
69式フリーPG ◆hND3Lufios :04/08/25 23:43
定番スレあげ
108 :
仕様書無しさん :04/08/25 23:54
グローバルの構造体の中身が100個 で、それがまた構造体! いったいどういう構造してんねん! とにかくグローバルは全部つめたやろっ?って ありえん構造・・・。
#include<???.h> floot a,b,c; int d,e,f; double g,h,i; //変数を変えないで!
110 :
仕様書無しさん :04/08/26 00:01
>>109 #define f g_fValue1
#define g_fValue1 a だったorz
111のほうが面白いな
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年目って人のソースとは思えなかった_| ̄|○
>>114 「動けばイイ」って考え方かねぇw
処理Aとか処理BでintModeを変更していると、一気に難しくなるねw
>>114 リファクタリング途中のソースに文句ゆーなよ(w
>>116 すまないが、リファクタリング前の状態と、適用しているリファクタリングの名称を示してくれ。
>>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行ぐらい)
}
ってのを見たことはあるが。本人は「仕様書どおりじゃないか」と言っていた
跡形も無く書き換えて、Authorを自分にして胸を張って 査定に臨める。ぐらいに前向きに考えるのがいいかも。 って今も経験15年くらいのCプログラマの見るに耐えん クラス設計を片っ端から置き換え中。 こんな基盤にゃ俺のコードは乗せられん!とか言いつつ。 これくらいしないとストレスで胃が壊れる・・・
>>119 糞なソースを書き換えていいお前がうらやましい・・・
既存ソースに修正入れるのに申請が必要で、
元のソースをコメントで残さないといけないから、
手を入れない方が見やすい。。。
>>114 ソース以前に5年目でVBって時点で駄目だろw
>>121 煽られ覚悟で書いてみる。
ベテランが書いたVBのソース(設計含む)は目を見張るものがあるぞ。
VBを仕事で現役でつかってる人だっているだろ
他の言語で悪戦苦闘している同僚を尻目に、涼しい顔して定時に退社するVBグラマ。
おれの見たベテランのVBのソースは目を覆いたくなるものだったが・・・
127 :
仕様書無しさん :04/09/05 02:07
>>120 洩れんとこも似たようなもん。
だから、リファクタリングする気にもならん。
したって、時間の無駄使いと言われるだけで
評価どころか下手すると、無能扱いされる・・・
英語のveteranなら古株と同じ意味だが 日本語のベテランなら、優れた人って意味で使うな
【veteran】 ━━ n. 老練者, ベテラン; 老兵; 退役[在郷]軍人; 使い古したもの. ━━ a. 歴戦の; 老練な. 【ベテラン】 ある事柄について豊富な経験をもち、優れた技術を示す人。 老練者。ふるつわもの。 【テヘラン】 イラン-イスラム共和国の首都。エルブールズ山脈の南麓、 海抜1160メートルの高原に位置する。
てか、ほんとにVBしかできないやつのソースってのすごいぞ。 つまりだな、VBでサンプルが載ってないと、技術書を読めないんだよ(あっても読まない)。 そいつらが集まってること想像してみれ。漏れは子供だったから割り切れなくて辞めたよ。
最近Javaでそういうのが増えて困ってる
132 :
仕様書無しさん :04/09/05 05:41
なるほど、テヘランに違いない
北オセチアはベスラン
134 :
仕様書無しさん :04/09/05 09:18
>>130 そもそも、素人のプログラミング初心者が読むような本しか
読まないしな。
VBは良いコードを書く香具師もいるが、どうしたら
こんなひどいコードを書けるんだろう、というのも多い。
その落差が他言語と比べて強烈だ。
>134 VBは少々のことがあってもそれなりに動いちゃうから&最初に設計してからじゃなく 作りながら考える奴が多いから。 コマンドボタンのイベントを一つ作ってF5押して「動いたー♪」 そんなことの繰り返しで「完成」だもん。
VBでCreateEventだののAPIを呼び出しまくっているのを見たことあるな。 そんな無茶しなくても、VC++を使ってそこだけdllかCOMにすりゃ良いのにと 思ったが。。。
VBはやっぱクソだな。 Javaマンセー。
実話: アップルマンの本を俺から取り上げた先輩の一言。 なんだ?この本サンプル少ないな。使えねぇーーーーーーーーー!
Windowsの画面系に関して言えば、多言語も似たようなもんだと思うが・・・。 むしろ、Unix+C(C++ではない)の開発では、それこそ目を覆いたくなるようなものが。 お客さん、この仕事ハジメテ?みたいなの。
>>135 ププ。トライ・アンド・エラー知らないの?
スロー・イン・ファースト・アウトなら知ってる。先輩に教わった。 派遣当初はゆっくり慣れて、逃げるときにはとっとと逃げることだってさ。
スロー・イン・ファスト・アウトな。
最初に逃げるのも重要だぞ
144 :
仕様書無しさん :04/09/05 15:22
サンプルって断片的な使用例ならK&Rとかでも 豊富に載っててなかなか役に立つよ。 完成されたサンプルアプリケーションじゃないと ダメって意味か?
>>134 > VBは少々のことがあってもそれなりに動いちゃうから
「それなり」って、それは動いちゃいない。
画面描画部分とイベント処理部分(VBランタイムが担当しているところ)が動いているだけ。
俺の認識では、VBプログラマには「動いている」とみなすレベル(閾値)の水準が著しく低いって感じ。
>>145 そうだね。VBプログラマは「書いてすぐ実行する」の繰り返しで作るもんねw
いや、書いてすぐ実行してもいんだけどさぁ、 ほんとにすごいんだって、一見百聞にしかずとはまさにあれだよ、そこの奥さん! ネストの嵐とか普通だから。ファイルをぱっと開けば、そこのあなたもフリーズ間違いなし! AAかと思ったくらいにして。
>「動いている」とみなすレベル(閾値)の水準が著しく低いって感じ。 言語に関わらずだがつくづくそう思う。 VBで特にはひどいってのは確かかな。なまじ動いちゃうだけに。
149 :
仕様書無しさん :04/09/05 18:50
>>147 それを親切に分割したり、分岐構造を書き直したりすると
余計なことして、見づらくなったと逆ギレされる罠。
-----りふぁ前----- 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 ----- >適用しているリファクタリングの名称 しらね。 ボトルネック処理の高速化か?
>>150 余計なことすんな、見づらくなったぞボユゲ。
>150 どこらへんが高速化したんだ?
>>150 ループ内の変数の判定を毎回やっていたからといって
大して処理速度が遅くなっていたとは思えない。
(ループ数が莫大ならちょっとは影響があるかもしれんが)
>151の言うとおり、むしろ可読性が落ちたと思うし、
intCntを複数の場所で扱うのはバグ生成の原因になりかねないなー。
「りふぁ後」の二つのForブロックを別関数に・・・
だって頭でIf intMode = 3 Thenとか書いておきながら Forループの中でIf intMode <> 3 Thenなんて条件追加したら えぇーーーって感じだよ。 (処理A)とか(処理B)でintModeが変更される可能性があるのかな? でもそんな書き方したら速攻バカ認定だしなぁ。 心痛お察しします。>114さん。
For i = 1 To 3 If i = 1 Then 処理A ElseIf i = 2 Then 処理B ElseIf i = 3 Then 処理C End If Next i いったい何がしたいんだよ…
それは流石にネタだろ?
>>156 何がしたいかわかんないの?
駄目PGだね、キミ・・・
>>157 残念ながら過去3回ほど、それぞれ相互に何の関係もない場面で
こういうコードを目撃した。
ご愁傷様。 で、ここに出てくるコードにVBの例が多いのは、 やっぱりそういうことなのかね? 熟練VBプログラマの方々には悪いけど。
>>150 それ、仕様変わってないか?
これだけなら問題なさそうだけど
forの途中で、タイマ割り込みなんかが入って
intModeの値が変わったら結果が変わる可能性があるよな
リファクタリングしたつもりが動作が変わってバグったって例なのか?
>>161 >forの途中で、タイマ割り込みなんかが入って
いるよね、こういう「俺は知識があるんだぜ」みたいな勘違い発言を
堂々とする馬鹿w
intModeがvolatileなら別だけど、 まあ、VBだしなぁ、って話だよね?
何処が勘違いなのか知りたいのだが、 まあオレのプログラムじゃないしどうでもいい と思いつつレスしてしまうのもまだまだ甘いな
逆に「VBで」きっちり動く物を作れるVBグラマって凄いと思うぜ。 漏れはあんなんでバグを残さない自信はない。 その点C/C++は、巧く書けばコンパイラがある程度はバグを潰してくれるし、 テスト用ツールが揃っているわで楽だ。
>>163 ってか、リファクタリングって仕様や動作を変えたらいけないじゃないんだっけ?
ちょっと変えただけでもそれが致命的なバグになることなんてしょっちゅうで
自分自身いつもそれで墓穴掘ってる
そもそも、タイマ割り込みが発生しておかしくなるような状況を考慮するなら カーネルが用意する排他制御APIを呼ばないとまずいだろ、あふぉか
VBのタイマーってうろ覚えなんだが、たとえばOnTimerでグローバル変数を書き換えられたら、ってこと?
結論としては、JAVA最高ってことだな。
>>168 OnTimerってイベントだっけ?
ある意味それができる方がすごいプログラマだ。
161は厨房という事で宜しいですね? はい > いいえ 161は厨房という事で宜しいですね? はい > いいえ 161は厨房という事で宜しいですね? はい > いいえ 161は厨房という事で宜しいですね? > はい いいえ そうですよね、当然ですよね。 なに?タイマー割り込みで処理が変化したらまずいから、判定を毎回行えって? 割り込みが入ることがわかっているなら、それに対応したプログラムを組むよな。フツーはww
大昔に、判定を毎回行うことが良いとする馬鹿がいた それがどんどん広まってしまった 結果、とりかえしのつかないことになった という黒歴史もあるので、 C言語で、gotoは使ってはいけないっていう妄言に通じるのかもな
>>165 >コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
>コンパイラがある程度はバグを潰してくれるし
きがつかなかったが、 165のつくったコンパイラは神!、皆に配布汁
先輩!このプログラム、タイマー割り込みの発生タイミングによって 動きが変化するんですよ!画期的でしょう!? 負荷が高くなっていると処理Bにいかないこともあるんですよ! すごいでしょう?
うーんここまでたたかれるとは
タイマは物のたとえで使ってみただけなんだが
所詮16mhzクロックの組み込みとwinアプリのプルグラムの差なのか
>>167 >カーネルが用意する排他制御APIを呼ばないとまずいだろ、あふぉか
APIとかプログラムで利用したことないし
>>171 >割り込みが入ることがわかっているなら、それに対応したプログラムを組むよな。フツーはww
だから
>>150 はそういうことを無視しているのではないかと
>>175 >先輩!このプログラム、タイマー割り込みの発生タイミングによって
>動きが変化するんですよ!画期的でしょう!?
>負荷が高くなっていると処理Bにいかないこともあるんですよ!
>すごいでしょう?
そうなんだよ
モータの位置検出割り込みとSIO通信割り込みを多重割り込み許可で動かしたとたんどちらも動かなくなるとか
3つのモータをある一定以上の高回転で回転させるとモータが回らなくなるとか
msecオーダーのタイミング差で確率的に予定外の動作するとか
たとえ同一関数内であっても上から順番に排他的に間違いなく動くなんて考えたたら
起こってしまったバグでも見つけることはできない状況なもんで
とはいっても、どれも自分のミス以外の何者でもないんだが
>161氏 > モータの位置検出割り込みとSIO通信割り込みを多重割り込み許可で動かしたとたんどちらも動かなくなるとか 大丈夫、そんなんはVBで組んだりしないから安心しる。
>>176 >モータの位置検出割り込みとSIO通信割り込みを多重割り込み許可で動かしたとたんどちらも動かなくなるとか
>3つのモータをある一定以上の高回転で回転させるとモータが回らなくなるとか
モータの種類は何つかってるの?
>177 ……工場のシーケンサ制御あたりならVBで組むぞ……
>>178 前者はSIO通信を作って、別の人が作ったモータ制御を含む本体に組み込んでもらったので詳しくは知りません
先方から送付されたプログラムを組み込むとモータが回転しなくなるし、通信もできないと調査依頼が来ました
ちなみに280V駆動の民生品としては大電流(1.5Aとか)のモータでインバータ制御らしい
後者は自分がメインで組んでるんだけど、使ってるのは14V駆動のブラシレスモータをPWM制御でまわしてます
3つのモータの回転数の合計が5000rpm以上になるあたりから、位置検出の割り込み処理が追いつかなくなり停止してしまいます
組み込み計だとしても、スーパーバイザーモードなりクリティカルセクションなりディスエイブルインタラプトなりにして、排他処理するだろ 用は、きちんとした排他処理をしないのがあふぉすぎ 90年代初頭には、多重チェックでのりきるってのが正しいと信じられていたが、それが間違っていたのはとっくに証明されたし いまそんなプログラム作っているのをみたら、まさにこのスレタイ
>>181 >まさにこのスレタイ
本日上司に退職願を申し出たところです
もともとソフトウェアはおまけの会社なのですが、
コストがかからず短納期でできると信じて止まない偉いお方が多いのです
その中でヘボでも貴重なPGなのでちょっと待ってくれといわれました
>>182 CPU?
そんな高級なものは使っておりません
数百円のCISCマイコンです
ここまでくるとあらしだなとおもいつつ
誤解を招かないうちに
>>183 >その中でヘボでも貴重なPGなのでちょっと待ってくれといわれました
自分個人が貴重といってるつもりはないので
引き継いでからこっち
4年ぐらいひとりでやってきた
つまりPGは自分1人なわけで
会社が放出したくないのは
俺の頭の中にあるデータとノウハウ
それさえ他の誰かにコピーすれば
オレなんて個人は好きにしてくれというだろう
もうどつぼか
ソフトウェアはお菓子についてくるおまけだべ。
マジレスすると最近はお菓子の方がおまけだったりする。 王立博物館とか。
なんか・・すごいのが沸いたねぇ。
まじレスすると、ノウハウの移行は 少なくとも半年以上の実務での伝授がいる
>ボトルネック処理の高速化か? >(ループ数が莫大ならちょっとは影響があるかもしれんが) だよ。 >だって頭でIf intMode = 3 Thenとか書いておきながら >Forループの中でIf intMode <> 3 Thenなんて条件追加したら >えぇーーーって感じだよ。 逆だし。 intMode = 3 の頻度が高いからだよ。
うわぁぁぁぁ。 バカがでた。 >逆だし。 >intMode = 3 の頻度が高いからだよ。 言わせて頂きます。 「えぇーーーーーーーーっ」 もう意味わかんね。 いたるところに馬鹿の一つ覚えみたいに同じ条件判定 入れてるコーディングのやり口が阿呆だって言ってるのに。
莫迦
>191 >いたるところに馬鹿の一つ覚えみたいに同じ条件判定 >入れてるコーディングのやり口が阿呆だって言ってるのに。 だから逆だって。 外に1つだけにしてんだろが。 莫迦。
先輩!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
Javaはスゴいな。 VBだとこうはいかない。 Javaマンセー。
>150のリファは、この後処理A、Bとループを関数に切り出すために行ったんだよね? 高速化なんてジョークだよね?
>>176 >
>>171 >>割り込みが入ることがわかっているなら、それに対応したプログラムを組むよな。フツーはww
>だから
>>150 はそういうことを無視しているのではないかと
>>150 のプログラムが、タイマ割り込みの入るプログラムだという話は
一体どこから?
おまえが勝手に「タイマ割り込みによって変化するかもしれない」と定義しただけだろ。
そんな仕様のないプログラムで、なんでそれを考慮した設計にする必要があるんだ?
161は知識馬鹿って感じだな。
職場でも変人として目立ってそう。
まあたしかに、H8とかで外部のデバイスとやり取りする時に、
どこぞのレジスタに値を書き込んで、
その直後にステータスレジスタとかポートをforループで何度も読んで
その値が変化した時に処理Aを行い、値が変わらなければエラー処理っていうのはあるが・・・。
VBだしねぇ・・・。
>>150 のソースがその類だとはとても思えん。
VBというか、Windowsな時点でビジーループは厳禁でそ?
200 :
仕様書無しさん :04/09/10 09:36
割り込み使えよ
DoEvents入れまくりなのでビジーループはありえません。
202 :
仕様書無しさん :04/09/10 10:44
再入しまくりで死にそうな予感・・・
public int i;
>>203 俺も実際にそれを目撃した事がある。Cだったが。
問題にしているのは、どこ? iってところ?
>>205 多分そうでしょ?
ぱっと見で意味がわからんものを公開するなといいたいのかな?
言語的に、JAVAかC++っぽい記述だから、それ以前にPublicにするなと言いたいけど。
ループカウンタ如きをパブリックに宣言するなってトコだろ
208 :
仕様書無しさん :04/09/10 11:43
あの断片だけじゃ、ループカウンターとは限らないじゃん。
>public int i; ならJavaかC#だろ? 明らかにC/C++の文法じゃない と細かいことを言ってみる
切り取った「胃」の数だったとか
>176 > 所詮16mhzクロックの組み込みとwinアプリのプルグラムの差なのか 16ミリヘルツって、1クロック=1分くらい?
>>211 よく見ろ。それは周波数の単位ではない。
>209 いや、C++なら書けるでしょ?、かけないっけ? で、なんで確認したかというと、iにしたのは例としてなのかとおもったのだよ 本当にメソッドのメンバにiって名前を使っていることについて言及したいのね 関係ないが、iってなまえだからってループカウンタとは限らない
214 :
仕様書無しさん :04/09/10 14:13
メソッドのメンバじゃなくて、クラスのメンバだろ。 それにそんなメンバ変数がいたら、ループカウンタにiという変数が使えないだろうが。
>>214 同じ名前の変数が被った場合って、スコープの狭いほうが勝つんじゃなかったっけ?
まあ、普通の人はそんな知識が必要なプログラムは書かないだろうけど。w
216 :
仕様書無しさん :04/09/10 14:34:26
語尾にwつけてる奴が一番必死に見える。
218 :
仕様書無しさん :04/09/10 14:51:30
スコープを知らない子供達か
まあ知ってても、危険な書き方はしないのが普通だけどね。
>>213 C++のpublicは修飾子としてではなくラベル:のように書く。
>>214 ==218
保守性悪そうだな。
藻前の吐くクソースコードは。
なんか変
>>新人クソグラマ よくないプログラムの定義って知っているか? モジュールや関数の独立性って知っているか? コーディング規約を抜きにしても、そんなローカル変数、ブロック変数で使うようなのを使うな。 パブリックなメンバ変数(さらにやばいグローバル変数)を何の気になしに書くな。 何に使われてるかわからんだろうが。たーけかね。
>>213 「C++」って書く香具師は例外なく無能ですね。:-)
# 文字化けしてますね :)
226 :
仕様書無しさん :04/09/10 16:48:49
>>224 誰に対してのレスで、何をそんなに威張ってるんだ?
なんでこんなに必死になってるんだ? 漏れは、リファクタリングすれば直るレベルのものは妥協している 変数名がおかしい程度で辞めようと思ったら、なんか転職しているか だっておまえ、int hensuu;とかつかってるんだぞ、わけわかんない奴は
ペットの犬に「犬」って名付けるようなもんだな
ウホッ、いい変数
ちなみに、なんでhensuuなんて名前付けるんだって言ったら 先輩だってtempって一時変数つかってるじゃないですか、って言われた
>>229 ガッツ石松が飼っていた猫の名前は「ネコ」だった
Dim Mai As Integer Maiってなんじゃい。と命名者に聞いてみたら。 「今つきあっている彼女の名前です」 頃していいですか?('A`)
>234 ayuayuとかyukiとかnemuとか付けだしたら撲殺許可。
>>234 別れた頃に、喪前が使ってやるのだ。
「××が付き合ってた彼女の名前」ってコメント付きで。
某社にいたときに関連会社に出されて、やっと納入されたAccessを使った受注入力プログラム。 遅すぎる、って事で試験してみると、たかが合計5万件のデータ検索するのに2時間・・・。 幾らなんでもこんなに遅い訳無い!といくら問いただしても「改良したんですがこれが限界です!」と 言うばかり。 ソース読んでみると・・・・ 該当テーブル1件分読んで、条件に合わなかったら次へ、また条件合わなかったら(以下略) 他のみんなとクエリー使うように作り直したら検索時間10秒くらいになったorz
100件ほどのレコードを読む必要のあったプログラムが、 機能追加で3000件ほどのレコードを読む必要があるようになった。 ※別の集計の仕方が追加になったため。 何とかかんとか読込時間が20%増程度ですむようにした。 なんで遅なってんねん!!て文句いわれた。 同じレコード数読む、同じような集計が必要になる そいつが作った別のプログラムは、30分以上かかるのにだよ… 10秒なら十分速いじゃないか… 糞プログラム書くやつは内容も考えずに文句言いやがる… てめえのプログラムそのままのつくりで機能追加してたら どんだけ遅くなってたと思ってんだよ…
' 商品種別コードの検索 Private Function int_SyohinShubetuKodo() As String Dim strLong As Integer strLong = Text1.Text int_SyohinShubetuKodo = CLng(strLong) End Function 本当にこんなのがあったんだけど、目が回りそうだった。
で、 「何でローマ字がガチャガチャなんですか?」 「何で Integer型の変数にstrってプリフィックス付けるんですか?」 「何で最後にゃわざわざ Long型にキャストするんですか?」 って聞いたら、 「・・・あ、コピペしたからよくわかんないです。」 「プリフィックスとかキャストとかって何ですか?」 「まだインストロールの途中なんで、失礼します。」 だって。 ネタぢゃないよ。
「インストロールって何?」と思って、ググってビックリ
なんかVBやACCESSネタばっかりになってきたな VBやACCESSは馬鹿のためのツールだって気づいてないのか?
>>242 >VBやACCESSは馬鹿のためのツールだって気づいてないのか?
そっとしといてやれ。
いづれはJavaもVBやACCESSの仲間入り〜
>>242 優秀な技術者を育てる時間と金を考えると、
馬鹿な技術者にも使える優れたツールを開発するのは別に変じゃないと思うよ。
ただ、VBやACCESSが優れたツールかと言われると・・・。
246 :
仕様書無しさん :04/09/11 12:50:38
VBやACCESS自体は大変優れたツールであるが、馬鹿な技術者でも使える。 しかしながら、このツールが優れたものであるということをスキルが低すぎる ために理解できない人がいるのも事実。 馬鹿でも使えるために、とんでもソフトウェアが大量生産されているのも事実。 結局、馬鹿が使えば使えないものが出来上がり、優秀な奴が使えば良いもの が出来上がると言うこと。 おまえらはVBやACCESSで充分だw
会社がVBやACCESSの仕事に手を出し始めたら辞め時だろ?
>>247 そんなことはない。
両者の特徴をちゃんと把握した上で
使いどころを間違えなければそれらは良いツールだと思うよ。
お客さんが使いどころを間違えてることはあるかも?
VBやACCESS向きの仕事を請けるようになったらDQN会社への入り口だってことだろ
VBの仕事を請ける ↓ 優秀な人間がやる気をなくして去っていく ↓ 馬鹿でも出来るから、採用しやすい馬鹿が補充される ↓ VBしかできない会社になる
VBを使ってる会社は偽装派遣の可能性が非常に高い。 他から仕事を貰ってその場凌ぎしてるだけ。下請よりも酷いのが実情。
>>251 うちの会社のPJ、いまだにVB5・・・。
新しい人間は誰もやりたがらない。
(今更VB5の技術なんて習得したくないから)
画面処理のための独特の制御方式を分厚いドキュメントにまとめてあるけど、
はっきり言ってそのPJ以外では使いようがないノウハウだ。
.netに切り替えるとか切り替えないとかいう話もあったけど、
発注先の「金がない」の一言で却下。
本式に切り替えるならWeb系画面でJAVAに切り替えるんだろうけど。
254 :
仕様書無しさん :04/09/11 13:58:50
仕事では、C(組み込み系)/VBA(Excelマクロ)使ってて 趣味では、VB使ってる 変か?
>>253 「後悔先に立たず」
1年後に死ぬほど後悔したくないなら、今すぐ辞表を書いて月曜朝一で提出。
>>254 VBは組んでですぐに結果が目に見えるから、
趣味として楽しいことは楽しい。
>>254 趣味でVBは良いとして
仕事でVBAは間違ってると思う。
>>255 俺のいるPJははなっからVBは使ってないから、
何かの間違いでそのPJに移らされることがない限りは無問題。
昔そこのリーダーとケンカしたことがあるから、
よほどのことがない限り呼ばれることはないと思うが。
やっぱVBよりPGだな Dim strLong As Integer の関数を使えば一発で、その言語が出てくるはず
何言ってんだ、PGよりSEだろ
261 :
仕様書無しさん :04/09/11 17:08:13
まあ、言語を卑下したりしてるうちは、どっちもどっちだと思うけどね。 弘法筆を選ばず、適材適所。 それを理解できない奴に限って・・・。
264 :
仕様書無しさん :04/09/11 19:32:05
いい加減、C#に移行してほしい。 Basicは読みにくくてたまらんが、VBしかできない 香具師がいるせいでそれもままならず。
変な会社
つうか、.netでやるなら、VBといっても6と別物だから、C#でも何でも大差ないと思うんだが。 (言ってしまえば、VB.netはVBのよさをなくしてしまってると。)
VBが馬鹿にされてんじゃなくて、VBでできるような仕事をしていることが馬鹿にされてんだけどなぁ。 ずっと気づかないんだろうなw
>>267 何が言いたいんだ?
VBが適した仕事があって、それをやるのが何が悪いの?
言語厨って、なんか人を見下して悦に入ることでしか、自分を確認できないのかな?
>>268 確認というか、見下すことでえらくなったつもりになるらしい
自分の位置は変わらない&人からの評価は下がるのに気づかないのが笑える
C,JAVA,VBなど、業務系で使われる言語は大体やったけど、 言語で云々てことはないよな、出来ない奴はどの言語でもいるし。 マジカルなコードを書く奴には言語の壁なんて通じないw
弘法言語を選ばず。
できる奴は言語を選ばないのだったらば言語を作る奴は相当な阿呆だということだねw 某宝石の言語とかw
>>272 まあ阿呆じゃないと言語なんて作ろうと思わないよ。
妄想とか顕示欲とか欲求がが頂点に逝った状態でないとできないよな。
>>272 その人がどう有れ、人を貶めるような発言をする暇があるんだったら
もうちょっと他のことやった方が良いんじゃないか?
VB.NETの問題は… VB6以前のつもりでプログラム書くやつが多すぎる事だ…orz
MFCのつもりでC++.NETいじるやつもいるからお互い様だよ。 ごめんなさい。もうしません。 「DLLにするんですか?」なんて質問 二度としませんから、そんな目で見ないで・・・。
>>277 徹夜・休出で会社に引き篭もり状態で、2chで他の言語使用者を攻撃して、
疲れたからオナニーですか・・・・。
VBよりC系の方が個人的にソース読みやすくて好きだな 好みの問題だろうけどif then end if とかだと英単語が並んでるだけに見えて どれがどれかぱっと見分からない(まぁ読めばすぐ分かるけど) C系は()やら{}でぱっと見で構造が分かりやすい気がする。
ほとんど慣れだろな。 俺はVB.NETのコード最初に見たとき一瞬読みにくって思ったけど 慣れてみればこれはこれで悪くない>VB.NET
適切な変数名とインデントがあればあとは慣れ。 英単語じゃなく記号の方が見やすいかと言われたら perl、そのほかlispなんかは慣れていない人には見にくいことこの上ない。
>>253 ・・・あの
発注先ではなく発注元ではないの?
>>282 半日遅れで突っ込んでいる、そんなあなたが好き。
俺も最初、VBでの開発なんてプライドが許さなかったけど(w まあ、今は「飯が食えるなら何でもいいや」って感じ。 ただ、VBで作ったものって、どんなにコードで工夫しても、動きの(見た目の) 華麗さがないよね。なんていうか、グニャグニャネチョネチョしてんの。 ・・・って、だんだんスレの趣向からズレてきたのでsage.スマソ
285 :
仕様書無しさん :04/09/12 10:59:31
もっさりしてる
飯が食えるならいいのは確かだけど、食える飯の質と食える期間 および食えなくなった後のことも考えたほうが・・
ま、JAVAやってた俺が勝ち組ってことで。
>>286 正直、こんなヤ●ザな商売なのに、将来のこと見据えて動いたって覆されると
思うんだよね。別にVBだからとかJAVAだから、っていう次元じゃなくて。
極論言えば、PGやSEで食えるの?みたいな。
北斗の拳みたいな世界になっても、何とかして飯の種を見つけて食えるタフさが
あればいいと思う。アタタタタタタタタ
毎日必死こいて金貰って開発してる守銭奴たちは 研究の合間に暇潰しにハックする院生に勝てないという現実。
> 極論言えば、PGやSEで食えるの?みたいな。 無理。JAVAだろうがVBだろうかPGは一生PG。
>>288 プログラマとかSEとかを区分けして考えてるんじゃ、喰っていけないよ。
それこそ1人で多くの工程をカバーできる人になるか、どっかの工程のスペシャリストになるかをしないと。
>>289 それぞれの分野の使いまわしの効かない特徴を引いちまえば
全て論理問題になるからな
時間的な拘束を排除しても
高学歴の御方には勝てんだろうよ
だからなに?
研究してる院生には、一切の生産能力はないけどね。 大学では通じるからね、それでも。 実際、大学でしか生存できなそうな人は多いよな、能力はあるけど温室内限定。
>>268 旧VBかC#(VB.NET)の選択肢があって、旧VBを選択するのって、
旧VBしか使えないからでしょ。
世間のVBの仕事のほとんどは、C#でやっても生産性落ちるって
ことはないだろうし。
(むしろ、楽になるんじゃないか)
生産能力のある奴はコピペで済むことでも「生産」と呼ぶようだけれどねw
_| ̄|○
// ↓もうだめぽ↓
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧∧ | でも競争相手いないから (,,゚Д゚) ;< 見積もり素通りでウハウハさ! / | | .....,,....〜(,_,,ノ.....,,,,....\__________ il||li / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧∧ | /⌒ヽ) < 半年後のことは分からんがな・・・ .....,,....〜(,_,,,).....,,,,....\_____________________.
perl2vb コンバータで VB 使いは絶滅するのかな? いまどき言語依存の案件など存在しないだろう?
_| ̄|○ 既に保守案件のみdeathよ
選択肢が決まってる仕事なんて幾らでもまだあるだろ?
本当に仕事やったことあるのか?
前バージョンの存在による都合、パッケージのカスタマイズなどの場合の元パッケージの都合。
そういうのを含めて、何でもござれだったらいいんだよ。
>>300 それは絶対ありえない。
Java最高。JETとか使ったりしたらもっと最高
_| ̄|○ il||li 既に死語になりつつあるのは承知の上さね。 今は保守案件があるからいいように使われているが。 俺らはもう絶滅危惧種なのさ…。
ちゅうかさ、最近内容が逸れてるね。 早く脳髄がぐらぐらするようなソースくれよ。
なんで他の言語を学ばないんですか?
>>306 学ばない奴は、どの言語でもいるし、それは本人の問題。
言語なんぞ、基本が出来てれば、数週あればどうにかなるもの。
開発方針の情報源がにちゃんねるだけという会社です('A`)辞めたい…
>>308 それは貴方を含めてじゃないの?
不平・不満を言うよりも、進んで明かりをつけましょう。
>>309 いや、漏れはいろんなことろから探しているんですが
上の連中はにちゃんねるのレスで判断するんですよ('A`)終わってる
もちろん下っぱの漏れには裁量権がないんですよ
>>310 他人は他人、自分は自分。
そういう下にいる程度という現状は、現時点でのあなたの実力です。
単純に場を変えるのではなく、実力を磨いてぬけましょう。
やっぱり場を変えます。腐ってしまう。下らない連中とは一生縁を切らないと
まあ、冷静にね。 100不満あったとしても、100を場のせいにしちゃだめだよ。 気付かないうちに、根無し草・不平屋にならないようにね。
>>290-291 コンパイラみたいな融通の利かないレスするなあ、まったく。
今のまま行って、将来出世なり職が微妙に変わるなりしても、
結論として食えるの?って意味でレスしなくちゃ。
>>314 じゃあ、そんなこと他人に聞かなきゃ判断できない奴は、今後食えないと思う。
去年の話だけど、先輩とVB+Accessでシステムを組んだ。 テーブル設計は先輩がやってるのだけど、最初からぜんぜん 正規化されてないし、システムを組んでる途中でも、テーブルに 列を追加していって、どんどん非正規化していく。 これってまずいんじゃないですか?と話をしてみると、 「教科書的な組み方をしてもパフォーマンスは出ない、俺は実践で ノウハウを身に着けた」みたいな、みえみえの嘘をカッコつけて言う。 自分ではSQLを書けなくて、正規化されたテーブルだと、データを 引っ張ってこれないから、あんなテーブルを作ってるのはバレバレ なのに。 (SQLが必要なときはAccessに生成させて、それをコピペ) まあ、正規化という言葉を知らなかったくらいだから、自分のヘボさ を隠すためではなくて、本気でそう言ってたのかもしれないけど。
>>316 君にアドバイスだけど、実務で正規化なんてあまり意識しないよ。
よっぽどパフォーマンスを良くしたい場合には、入念に検討するが、
それ以外は、わかりやすさが一番重要。
・SQLが必要なときはAccessに生成させて、それをコピペ
とても実践的なやり方だと思うよ。
それをカスタマイズしてきちんとしたSQLにするのが一番わかりやすいと思う。
知らんけど、AccessのSQL生成ってそんな高度なの?
>317 >わかりやすさが一番重要 わかりやすさとパフォーマンスのバランスを取った上で、 おおむね第三正規化形がいいってんでなかったか?
>319 そう馬鹿にしたもんでもない。 ……言い換えれば、よほど変な処理をしたいんでない限り SQL文はかなり機械的に生成できると言うことでもある。 実際EJBってDBと直接やりとりする層がそれ相当のことしてるんじゃなかったっけ?
正規化をしたうえでパフォーマンスが出ない部分でのみ非正規化を行うべきだという、当たり前の事もできない>317 Accessに生成させたSQLはすっげ読み難いから、人間の手で書いた方が早いという言もある。
>>319 分からない。
もしかすると、高度に使いこなせば、自由自在にSQLを作れるしろもの
なのかもしれないけど、そこまでするなら、SQL覚えたほうがいいと思う。
SQLは習得すれば、他のシステムでも使えるけど、Accessのクエリビルダ(だっけ?)は、 Accessだけでしか使えないし、時間を割いて勉強する気になれなかった。 (勉強してないから違うかもしれないけど、表現力もSQLより劣ると思う) それに数行のSQLを書くのにいちいちAccess立ち上げるのって、効率わるいと思うし。
ふとサブクエリなんかはAccessのGUIでどう表現されるのかと 思い、やてみた。 条件式の中にそのままサブクエリが入っていました。 ……やっぱ自分で書こう
>>320 へたに正規化しすぎるのもわかりずらくなり、パフォーマンスも落ちることもある。
分かりやすさを追求すると結局、第2か第3正規形に必ずなると思う。
だから、あまり意識したことはない。
SQL実行が遅い原因は、テーブル構造では無く、
結局SQL文自体に原因があることが多いと思うが・・・。
正規化なんて言葉は、情報処理試験には大事だけどそれ以外で大事だと
感じたことはない。
ゲームプログラマの漏れは、正規化正規化いわれて なんでSQLにベクトルの正規化がでてくるんだとか、まじめに考えてしまったよ、、、
スタンドアロンのシステムで、データ量もたいしたことないし、 パフォーマンスのためにあえて非正規化するような状況ではなかったです。 同じ情報があちこちのテーブルにあって、状況によってはそれらが食い違ってる みたいなことになっていて、保守にはかかわりたくない状況にすでになってたし。
>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ディスプレイ、防災無線の販売のみにしたような会社もある。 数ケ月でやめて、何年もたって求人みたから詳しくはわからんが。
>>330 激しく同意。
横に冗長なクソDB設計をする香具師は例外なく無能。
>330 同意。 アクロバットなSQLが凄いのはわかるがそれより先にする事がある。
Servletにて。 try { String hoge = request.getParameter("hoge"); if ( hoge.equals("") ) { // hogeの入力が空の場合の処理 } else { // hogeに入力があった場合の処理 } } catch ( NullPointerExceptionn e ) { // hogeがセットされていない場合の処理 } いや、そこは try して例外をハンドリングする場所じゃないだろう。 hogeがnullかどうかで見なさいよ。
>334 じつは何らかのよんどころない事情でrequestオブジェクトがnullになる。。。わけないな。
>>336 ServletのdoPost()等でそれが起こったら驚天動地の大騒ぎになるな。
>>336 「〜の処理」の部分でぬるぽが投げられるに一票
おお、そーいや request != null とか書いたことないな。サーブレット優秀だ。
>>339 そんなことで優秀といっているちみはどんなコードを書いているんだ?
ソース晒せや
ポインタ引数にnull渡さない ポインタ戻り値にnull返さない をお約束にしておくと、ぬるぽ被害を抑えることができますよ・・・ あれ、javaにassertってありましたっけ
>>341 しかし、某オープンソースライブラリの前に脆くも敗れ去るのであった…
頼むからNull返さないでException吐いてくれっ
昔派遣で逝った某社のコーディングルールは戻り値はbool型のみってのがあったな。 値が必要な場合は第一引数に渡すってルールだった。 恐らくぬるぽ防ぐためのルールだったんだろうけど、あんまり効果はなかったような・・・
それは、そういうルールにしないと エラーチェックしない香具師がいたんじゃないか? C++だとしたら、例外にしろよという意見もあるかもしれないが いまだ例外はまともに動かない環境は多い 特に例外があるとデバッガがうごかないというのは、あたりまえのようにある
>>344 戻り値がbool形だとエラーチェックは強制されるのか?
あーすまんこ メソッド作る側が、エラーを教えるのを強制できる まあ、エラーになってもtrue返す香具師がいたらどうしようもないが
for i = 0 to n if flg = true then goto NextProc end if ... NextProc: next i ('A`)
コメントがひとつもないよ! 仕様は某阿呆の頭の中 ('A`)ヤメヨウ
>>348 つうか、呼び出し側で戻り値チェックしなかったら何もならん。
例外を投げるのが一番。
>>351 >C++だとしたら、例外にしろよという意見もあるかもしれないが
>いまだ例外はまともに動かない環境は多い
>特に例外があるとデバッガがうごかないというのは、あたりまえのようにある
>>349 別チームのソース
/* バグ対応:問題があった */
hoge
hogehoge
hoge
/* バグ対応:問題を解決 */
こんなんばっかし。何の問題があってどう解決したのかを一切書かない。
コメント無いほうがマシだよったく。
>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
だろ
>>357 そこが問題なのではなく、コンティニュー代わりのGotoが問題だろ?
あなたのそれにしても、間の処理がずらずらあって、それらの途中で次ループにしたい場合はどうするの?
359 :
仕様書無しさん :04/09/15 10:29:07
>>342 場合によるだろ。
例外処理がコストの高い処理であることをお忘れなく。
360 :
仕様書無しさん :04/09/15 11:08:06
>>343 WRITEING SOLID CODE という本がそういうスタイルを奨励してる。
そういう流儀もあるってことで。
>>361 余分な言い訳などいらん!結果だけ報告しろ!
って上司のような考えかたでしょうか?
まあ、下がそれぞれにトラブルを処理できる組織ならOKですね。
そういう構造をプログラムに持ち込めれば確かに成立するけれど、
個々のトラブル対応が的確であることが前提だよね。
あれ? Continue 無くても Exit For とかで代用効かないっけ? まあ、処理上問題無いなら、俺もGoToでも良いと思うよ。 その方が人間には見やすい場合もあるしね。 昔、FortranのソースをCに移行って経験したは、ふざけんなGotoって 思ったけど、僕はいろいろ経験していく上で丸くなりました。
hlt nop nop nop ; このnop取るべからず。 これで元気になりました。
>365 >Continue 無くても >Exit For >とかで代用効かないっけ? ( ゚д゚)ポカーン
エラー処理や多重ループから抜けるときなど gotoを使った方がよく、わかってて使う場合はいいと思う まあ、機械語レベルでは条件にせよ、繰り返しにせよJMPの嵐なんだがw
>>366 どこがつっこむ所なのかわからないので教えてくれませんか?
パイプラインのあるCPUならそう書かないとだめでは
>>369 いや、割り込みのタイミング取り用。
最近のCPUなんかだと別途便利なものが用意されているので使われない方法だけど。
>>370 懐かしいな。
初期のDOSマシンで、次機種が出る度ヒーヒー逝って
nop数調整と再テストするプログラム多かったっけ。
MsgBox "このメッセージが出たら、内線XXXXの○○まで電話してください!!" 問題点 ・メッセージがハードコーディング ・別の場所へ移植したからその内線通じないんですが。 どこからも呼ばれない関数だったからいいけどさぁ。
>>357 どこがおきまりなのか教えていただきたい。
//腹イテ
>>372 まあ、その心構えは認めてやれば?w
連絡先晒す前にやることあると思うけどね。
377 :
仕様書無しさん :04/09/16 10:03:42
>>366 パイプラインの問題回避の為じゃないかな?
普通のソースだとおもうが。
379 :
仕様書無しさん :04/09/16 13:33:16
>>378 この会社にも普通のことができる人がいたんだー
と安心して嬉しくなって元気になったんじゃないかと思われ
向かいの席の人が書いたバッチ処理用のスクリプト。 eval { $conn = DBI->connect("dbi:Pg:dbname=****;host=****",$user,$pass); }; if (! $conn ) { exit; } 頼む。エラーである事を教えてくれ。何なら、die() だけでもいい。 このままだと正常終了と区別つかん。
普通&Error('Cannot connetct to DB');とかだよna
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; } とかやるよね、ふつう
>print "Content-Type: text/html;\n\n<html><body>" . $@->{msg} . "</body></html>"; ....('A`)...
>>383 これは例だって
いつもこんなんやらないよ
select ... from (((tbl1 left join tbl2 on ...) left join tbl3 on ...) left join tbl4 on ...) ... ('A`)
>>385 テーブル設計した奴に文句いってやれよ。まあ多分同一人物だと思うが。
>>385 right joinが混じっていないだけまだマシかもしれぬ。漏れの所よりは。
>>385 状況がよく理解できんが、普通じゃないのか?
問題は、テーブル設計とかじゃなくて、仕様自体がかなりカオスってるんだろ。
名前ミスった。
それが普通に内部結合できたりするわけで・・・。 やっぱり書き換えたほうがいいのかな・・・。
煽りじゃなくて本当に分からないのだけど、
>>385 はINNER JOINですむのに、LEFT JOINしてるのが
いけないってこと?
具体的なコードは覚えてないけど、ZopeのLocalfs上の オブジェクト(ファイル)の存在チェックで、対象オブジェクトが 存在するかどうかにかかわらずアクセスかけて、それを try と catch で捕まえて、オブジェクトが存在するかを確認してるヤツがいた。 無駄にコスト高いチェック方法だなオイ。
393 :
仕様書無しさん :04/09/17 19:56:52
でも確実だ
>>391 >>385 は、tbl4の後にも
更に大量にJOINが続くのだと言いたいのではないだろうか。
多分。
if ( hoge1 ) foo1(); else if ( hoge2 ) foo2(); if ( hoge3 ) foo4(); else if ( hoge4 ) foo4(); 本人は満足かもしれんがロジック以外で頭使わせられるのはちょっと困る 頭使わないためのインデントだと思うし
>>395 あ。言われてみると、それ漏れもうまく書けそうにない。。。
if (hoge1)
foo1();
else if (hoge2)
foo2();
if (hoge3)
foo3(); // foo3 だよな?
else if (hoge4)
foo4();
オーソドックスにはこうだな。これでええの?
インデントは、あると無いでは大違いだが 仮にあったとしても、どのようにつけるかで大きく違う ルールを決めていないのであれば、自動化ツールでインデントすることをお勧めする ルール化したいのであれば、既存のルールをもってくるのが揉めないですむ たとえばGNUのコード規約に則ってみるとか
あえてGNUのコード規約かよ!
>395 多少コード量が増えてもこう書けと? if ( hoge1) { foo1(); } else { if ( hoge2 ) { foo2(); } } #3,4も同様
>>399 分岐の中に関数が追加されたときとかを考えるとその方がいいと思う。
俺自身の慣れもあるかもしれない。
>>399 もとのコードじゃ、else とその中の if でブロックを分けるべきか、
else if で1ブロックにしてしまうべきか判断はつかないな…
# でも何となく else if で1ブロックの方が元の意図に合ってる気もする
404 :
仕様書無しさん :04/09/18 21:28:28
if ( hoge1) { foo1(); } else { if ( hoge2 ) { foo2(); } } のほうがいい
おまいらはこんなのに遭遇したらどうしますか? 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(); }
>>405 その程度は普通じゃないの?
それで会社辞めてたら、履歴書に職暦書ききれなくなるよ。
408 :
仕様書無しさん :04/09/18 21:58:38
そのまま
だよな、IF文を日本語にしたらまだ普通に読めそうだし。
綺麗だし。
>>405 がANDとORを使わずにIF文ネストしていたら辞めるかもしれないけど。
>>405 はどういうレスを期待してたのか知りたいw
411 :
仕様書無しさん :04/09/18 22:04:57
>>405 少し考えた後、やっぱりそのままにしておく。
フラグがほんとにhoge10とかだったら嫌だがな。 普通の変数名にしてくれ。
>410 教条主義者がトンデモなソースにするのを期待していたのかも。
>>405 そのhoge10とかが、lngXxx=2みたいな感じでコメントレスに
マジック変数が使われてるのなら見たことあるよ。
まぁ、修正が入ったときは、マゾヒスティックな快感が得られたね。
そうやって俺をイラつかせて、何をしたいんだ。 俺に恨みでもあるのか。それとも人をからかうのが好きなのか。 どちらにしても、お前は悪意をもって人を傷つけようとした。 こういう事はこれで最後にしろ。
そのコピペ便利だね。
>415 それいただきました。
まとめるとこんな感じか? hoge10 hoge11 hoge20 hoge21 hoge30 hoge31 | hoge10 △ ○ ○ ○ ○ ○ | hoge11 × △ ○ ○ ○ ○ | hoge20 × × △ ○ ○ ○ | hoge21 × × × △ ○ ○ | hoge30 × × × × △ ○ | hoge31 × × × × × △ | ---------------------------------------------------- △=○× 全ての条件の組み合わせは何通りだろ?
中華、405が何を嫌ったのか、早く出てこいよ。
>>418 何をどうまとめたのかよくわからんよ。
それぞれ毎に別処理呼んでるんだから、○×じゃ的魔羅んだろ?
つまりだなぁ、所詮この程度の条件分岐でしかないんだよ?って言いたいんだろ。 いや、喪前の言う通りだ。 そうやって俺をイ(ryo
この程度じゃないぞ。 hoge10だけの条件が成立する場合とか hoge10とhoge20だけでいい場合もあるし 全部の条件が成立する場合もあるし
ビットマップ演算を使いたくなった俺はオヤジですか?
決定表
>>422 まぁ、モチツケ。
そうやって、汚いソースに敏感になることはいいことだ。ワカイッテイイナ。
405は1年目かな?
428 :
仕様書無しさん :04/09/19 01:19:59
だから余計なことするな そのままにしとけて言っただろ
405程度ならほっとく。 おれは入社直後、case文とif文のお化けみたいな合計3000行の「関数」を見たことがある。 caseの中にifが3階層ぐらいネストしててその中にまたcase文があったり、、、 間違って{を消してコンパイルエラーが出たらそれはもう恐ろしいことに。
一部抜粋すると概ね、 } } } } } } } } なコードを見たことがある。 って、今のプロジェクトだ_| ̄|○
OOPがやりたかったのに出来なかったコードも辛い。 そのコード渡されて、extendsして作ってって言われても・・禿鬱
>>430 あるよね。それ、あるよね。
こうでもなく、あーでもなく、でもこのときに、こうで、ああで、みたいなIF文の嵐。
それがコメントレスなもんだから、どういった条件か予測つかないの。変数名も投げやりだし。。。
俺の脳には論理演算最適化オプションが付いてるからどんな条件でも2行で表現できる
434 :
仕様書無しさん :04/09/19 09:13:56
桁数制限無いもんな。
反対に短すぎて(,, ゚д゚)ハァ?ってのもあったぞ。 if((rd<nx) ^ (nx<cu) ^ (cu<rd)) hoge();
>>430 俺は、ある奴がそういうコードを「糞だから書き換える」といい、
if( ** ) hoge();
else if (** ) hoge2();
else if ( ** ) { hoge3() hoge(); };
else if ( ** ) {hoge4(); hoge5(); }
のようにやってしまい、見事死ぬほどのデグレを出してたのを見たことがある。
上司 「おまえ、なんでこんなことやったんだ!!」
そいつ 「だって、前のコードが死ぬほど糞だったんで・・・」
上司 「前動いていたものを勝手に書き換えるなんて、普通はやらないぞ!」
そいつ 「ええ、でも部長だってこんなコード書く奴、糞なやつだと思うでしょ!!」
上司 「お前よりマシだ!!!」
そいつ 「・・・・・・・・・・・・」(その後、男なのに泣き出した)
今は、もう、いない。
>>436 それは上司のほうが正しいと思うが。
内部的に糞でも動いてるソースを動かなくしちゃダメだ。
>>436 その行為自体で言えば、そいつが無対策に「修正」やったのが悪い。
だけど、そういう行動起こせるやつの方が、将来的には伸びるんだよなー
どうかな。 現在も将来もその箇所の保守・改造が不要なのであれば、修正は 愚かだけど、ありうるのなら正解と思う。
まあ、なにかの改造のついでの話だよね。 関係ないときにやって止めたとしたら、阿呆だ。仕事ってモノをしらなすぎ。 で、改造のついでだとしても、テストしたのかと・・・。 意気込みはまあいいけど、仕事なんだから仕上げろよって。
441 :
仕様書無しさん :04/09/19 13:13:37
最初に糞コードを書いた奴が一番悪いに決まってんじゃン。 その時にレビューしなかったのかと。
動いてる糞コードと、動かない改善コード。 どっちが悪いっていったら動かないコードだろ?
テストしないの?
やりたきゃやっても良いけど「勝手に」がだめなんだろう? 将来的にも機能追加&改変をし続けるようなベースアプリとかだったら 上司にソース見せて「ここすごい腐ってるんですけど作り直して良いですか?」 ぐらいはいっとかないと。 たいていの上司は動いてるソースに手を加えるのを嫌がるけど、 糞コードもしくは糞仕様が将来の機能拡張にどれだけ悪影響を及ぼすか 説明して説得する。 それを怠って勝手にやって、しかもちゃんと動かなくするなんてただのバカ そういう意味ではバグだらけの糞コードを 「引き継いで機能追加して」(←バグだらけなのは言わない) とかで引き継がされたときの方が幸せだよな。 心おきなくファイルごと消せる。
その糞コードを書いたのが実はその上司という落ち
ありそうだな。 ありそうだがそうでなくてもまあ、流れ上怒るのは仕方ないだろう。 でもそうだったらその上司の心理を想像して笑える。 笑えるがその上司はきっとそのコードを糞とは思っていないだろう。
…修正じゃなくて、バグ埋め込んだんだから怒るのは当然という単純な話じゃないの?
単体テストも書かないで、リファクタリングする奴は糞
書かないよ。 そんな暇ないし・・・どうせテストするの漏れだし・・・ そうだよ、典型的な○○だよ・・・_| ̄|○
>>449 書かないでテストをするから、悪循環してんじゃないの?
今流行のXXUnitでもいいし、箇条書きでもいいから書かないと。
>>437 当たり前だろ。話の流れからして、「そいつ」を擁護しているように見えるのか???
>448 出力(ふるまい)を変えてしまうならリファクタリングではないぞ(w
怒らんでもえぇ(^_^) みんなわかってる。
つーか、そんなバカに苦労させられてる奴だっているはず、、、きっといるはず。 俺も若い頃はやった。先輩のソース堂々とコメントアウトした さすがに、、、つーか、幸いバグは組み込まなかったけど 今思うと危ない橋渡ったなぁ、、、とか思う
漏れはバージョンアップ時を見計らってコソーリ糞コードを直してます。 どうせ開発中にテストするから(修正が)多い日も安心。 ついでにxUnitの単体テストケースも書いてみたり。 正直手間がかかってしょうがないが、きっと将来役に立つと信じつつ・・・
まあ、それが仕事ってもんだよね。 地味だけどじわじわきいてくる。 土台ないところに母屋は立たぬだけど、たってしまったものはしょうがない。 どうにか土台の補強工事を。 ああ、でも立て替えてーって仕事は一杯あるね。
Ruby!!!!!!!!
ちょっとしたロジックならこっそり修正はするけど、 大規模なのは我慢するな。 それが元でバグが1つでも出たら言い訳できないから・・・ 30代後半とか、40代の人は ・よくわかっている ・何度言っても理解できない の2種類しかいないよね。後者はとくに厄介。 早期発見、早期首(契約切)。これに尽きる。
>>458 流動できる人材の条件がそうだから。
きちんと仕事ができて、仕事をずるずるせずに完結できる人。
or
どこも御免ってひと。
思うんだけど、早く終わらせたらボーナス、遅延したらペナルティってやっとる所あるん? これ最強。
プロジェクトが独立採算制で終了が明確なら出来るんじゃないの? まあ、早ければいいってわけじゃないし。
できる人はどんどん別のプロジェクトを渡り歩いて儲かるよ(w >早ければいいってわけじゃない
とある処理(char *p){ /* pは呼び元で領域確保してある事が前提 */ pをつかう : } ↓ [漏れ]コメント書くくらいなら確保されているかどうかチェック汁! ↓ とある処理(char *p){ /* flagには呼び元で領域確保してある証拠として1をセット */ if(flag==1){ pをつかう : } } orz ...フラグ(しかもグローバルかよage)
グローバルカコイイ!!!RUBY!!!
>>463 ポインタ渡されてきた関数内で確保されているかどうかチェックって、どうやんの?
>>463 確保されてるかのチェックってどうやるの?
NULL じゃなくても確保されてない場合は有り得るぞい。
変な指摘に苦しんだ結果のグローバルとみた。
pになんか書いてみてうまくいけば確保されてる
>>467 とってもリスキーなチェック方法でつね。
俺的には50%の確率で動けば「確保」と定義されてる。
Cの欠点であり利点が理解できていない
>>463 さんでした。
多分、彼の知識はどっかで間違ったことを覚えてしまっていたと。
>>463 >とある処理(char *p){
> /* flagには呼び元で領域確保してある証拠として1をセット */
>if(flag==1){
> pをつかう
> :
> }
>}
これ書いた奴って、結構頭良いと思う。
駄目な先輩から無理難題を押し付けられても、
しっかりウイットに富んだ回答を出してくる。
でも、それだけの能力があれば、
もっと幸せな職場にいけると思うんだけどな・・・
>>472 グローバル変数にするのが頭がいいことか?
誰がいつ書き換えるかわかんな・・・
あ、
>>463 の自己擁護だったかw
>463 「そこにそんなコメント書くな、いらね消しとけ」 に一票
>>463 つまり、Stringクラス相当のものでラッピングして、
領域確保、開放、確保チェックはメソッドでやってくれと。
つーか、普通初期値ってあるだろ *pがNullなら 設定なし 処理しないエラー(−2)(通常エラー:−1) 戻り値は(正常:0) この場合、処理格納先は*pか格納先も引き渡されるようになっていると思うけど
天才的なCのPGさん、
>>477 を解説して下さい
Cは少ししかかじったことないんで理解できません
いいか、念のため逝っておくぞ。 >477 は漏れぢゃないからな。勘違いするなよ。
1行ずつ解読してこう。 >つーか、普通初期値ってあるだろ これは多分、引数の初期値のことをいってるんだろうな。 >*pがNullなら えーと…… ↓次の奴頼む
>*pがNullなら 漏れたちはやはり思い違いをしていたようだ。 char *として渡されたp、しかしそれは本来char **なものだったのではないか? そしてnullでもNULLでもついでにnilでもないNull…… そう、これは(ry ΩΩ Ω<な、なん(ry
せめて、pがNULLならだよな。 *pがNullじゃなくて。 で、そもそもその前提を守ることを前提にコードを組むか、 呼び出された側がそれを考慮して組むかの議論じゃなかったの? でもって、Cの場合、呼び出された側が幾ら努力しても、必ずしもチェックは仕切れる門じゃないと。
>*pがNullなら これ、実はCの話じゃないでしょ? みんな、思い込みは良くない
じゃあなんだろう? *pなんて変数名を許してる言語って少ないと思うよ。 *が乗算演算子だったりするから。
#define Null 0 /** 注意! 引数は必ず0以外の初期値を与えた変数のアドレス。 mallocのアドレスを与える場合には呼出前に先頭を0以外に初期化すること */
>*pがNullなら
>設定なし
>処理しないエラー(−2)(通常エラー:−1)
>戻り値は(正常:0)
「*pがNullなら」「設定無し」として「処理しない」
このとき「エラー(-2)」を返す。
*pがNullでないなら処理を実行する。
このときエラーが発生すれば「通常エラー:-1」を返す。
正常終了したときの「戻り値は(正常:0)」とする
みたいな感じか?
よくわかんねーけど
で答えは何なの?
>>477
未初期化のアドレスが0以外の値が格納されているアドレスを指している場合は?
489 :
仕様書無しさん :04/09/20 20:06:32
また頭悪そうなのが現れたなw
491 :
仕様書無しさん :04/09/20 20:16:30
まぁ、char*返す関数とかnewとかは失敗するとNULL返してくれそうだし、
NULLチェックぐらいしてやっても損はない。
しかし、
>>477 、、、
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
>492 VC++はデバッグビルドだと未初期化領域は 0xCCで埋めるんじゃなかったかな……
494 :
仕様書無しさん :04/09/20 20:43:54
何を検証したつもりなんだろう?w
if(*p == 0xcc){ return -2; }
>493 ご名答! リリースビルドの出力 004070B8
アドレスが初期値から変わっていたら って事だけ言いたかっただけなんだがね。 >483でいいのでは ちなみにNULLは適当ですよ。私が見たことあるのは初期設定用汎用アドレスっていうのかな それじゃなかったら?って判断しているのは見たこと有ります。
そんなもんあてにしたコードを書かれると、周りの人間が激しく迷惑なので やめてほしい・・・。 おとなしくC#ぐらいから入ってほしい。
いや、引数がauto変数の場合だと、初期値がNULL (0)とは限らないよ。。。 引数はstaticに限るとか前提を設ける?
くだらん方向に話を持っていくなよ
Rubyは最強ですな。背それ大賀大和kらうぇなないのですか? 安ァ多々値には知歯が欠けています。 Ruby破砕偉業dうぇす。 Rubyにあsうぃわいあrて! Ri8bvuuygggggggggg
だーかーらー処理系にベタ依存なコードを書くなと ちなみに>492をbcc32使ってオプション無しでコンパイルしたら 出力は00000001ダターヨ
*pがNULLなら、それはぬるp
504 :
仕様書無しさん :04/09/20 22:47:55
>>503 ガッ
じゃぁ、Cのヌルポは、それってことで。
477=497? 日本語おかしいですね。
506 :
仕様書無しさん :04/09/20 23:29:36
つーか空っぽのpが0じゃないことってあるの? ポインタ変数には最初に必ず0を入れるし、 deleteした後にも必ず0を入れるじゃん。 char * p = 0; ... delete p; p = 0; ってさ。 教えてちょ。
>>506 だから、貴方は勉強してから出直してきなさい。
0入れるって段階で・・・。
御主釣師か
>506 そういうお行儀のいい人ばかりじゃないんだよ。
>>507 なんで?
環境依存じゃない0を使うものでしょ?
C++だけど。
大体こういうのでミスするやつはポインタ変数を初期化せずに渡すから、 環境に依存しない安全なチェックなんてできねーよ。 ってことすらわかっとらんやつがちらほらと…
ここで 「ポインタの初期化はNULLを使うものだ」 ってレスしたら釣られた事になるのかのう
>>512 「いつの時代の話ですかw」
って返ってくるでしょうね。
数値0とNULL値の違いについて、誰か彼に講義してあげて下さい。
515 :
仕様書無しさん :04/09/21 00:00:45
cstddefをちゃんとインクルードするのなら別にNULLでも0でも同じだと思う。
リンク先が読めないんだが、2って何が書いてあるの? 値として実行時におけるヌルポインタが0じゃないかもしれないって話?
>>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 と等しく
*ありません* 。
>*ありません* それ嘘じゃない? C のソース上の文脈で、ポインタが位置すべきところに 0 が出てきたら それは NULL ポインタ(と、コンパイラがみなす)。つまり、C のソース上は NULL ポインタは常に 0。 実際にコンパイラが NULL ポインタに対応する値として 0 以外のものを 吐くことはありえるけど処理系依存ってことでしょ。
>519 「そのようなポインタ」が0x0000000のポインタなのかNULLポインタなのか判断に苦しむ。 言いたい事は分かるけどね。
とりあえず Win32API には IsBadReadPtr() とか IsBadWritePtr() とかあるだろ? こいつを使って、なんか面白い事を企みたいわけよウヘヘ おいおい、血走った目でこっちを見ないでくれよ まて、なんだよそのバールのようなm
Rubyが全て解けrつるbっっっっっっっっっっっっっっっっy!!!!!!!!! Riubuudasikoyuuuuuuuuuuuuuuuuさいよう宇!!!!!!!!! Rubyyyyyyyyyyyyyyyyyy Rubuuuuuuuuuuuuuuuuuu .?????????????<<<<<<<<<??????????>>>>>>>>C++
>>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 とみなす)と等しくない。
要するに、pointer 変数の「値が 0x00000000」であることと「NULL pointer」であることは別。 0 を pointer として扱う場合、それは常に NULL pointer として扱われる。 変数の pointer の場合、NULL pointer であるかどうかは実際の値とは無関係。
どうだっていいよ
どうでもいいって事は無いと思うが
ポインタ自体が未初期化なのと、そのポインタが指すアドレスが未初期化なのは 意味が違うし、どちらもNULL(0)である補償はないよ。 基本的なことなんだが。
しょきか?
×補償 ○保証
「要はNULL数字じゃない、Cでは便宜上0を代入すればNULLとする」
つーことでしょ。
>>528 は話題がずれてる
>>528 は中国か韓国の方でしょ?すぐに補償とかいっちゃうし。
謝罪と補償を・・・。
>>531 もともと、ポインタが有効かどうかをどうチェックするかって話題でしょ?
>>533 「もともと」?何処が話の始まりなの?
起点を示してくれ
463あたりから。 昨日のことなんだが。。。
途中からC/C++のポインタにおけるポインタ変数とNULLと0の話になってしまってるな。
>>506 からかな?
厳密な
>>463 の辺りの話はゴタゴタの間に逸れてどっかいってしまった。
今とある会社でCOBOLプログラムを改修してるんですがね、 unicode対応とか言って一斉に改修をするよう指示があったんです。 どうするかって言うとですね、プログラム中の日本語固定値を すべてunicodeのhex値表記に変えるんです。 例えば、"*"という日本語文字列があった場合、X"FF0A"とか。 if文も if 漢字氏名 = space とかだったのが if 漢字氏名-r = all X'3000' とかいう標記に変更。 どういう訳か、Unicode化されるのは漢字項目のみで、英数項目は 元のsjisのまま。 何をしたいのかわかりません(⊃д`)
ソースはSJISのままで、コンパイル直前に固定値をその16進表記に 変えてくれるサポートツールのようなものを使ったほうがラクなのでは。 というか、UNICODE対応のCOBOLコンパイラは無かとですか。
COBOLは定数値ハードコーディングが多いからね。つらいね
コ・ヴォール。
古慕流
>>539 COBOLは使った事ないからよう知らんけど、m4とか使えないのか?
544 :
仕様書無しさん :04/09/24 20:01:03
if (memcpy(pA, pB, iLen)) { }, 全部直しておきましたよ 林さん
>>544 else 以下にエラー処理があるんだよ。
hoge1 += hoge2 << hoge3; 確かこんな感じだったと思うけど 一目見て、どういう順番で計算しているのか分からなかった。 書いた本人も自信がなくて(ここがポイント)確認したらしい。 ちなみにコイツ一目見て何やってるか分からないような コーディングをポロポロやる。 あと見るのも嫌になるほど、意味なく縦に長い関数もよく作る。
>>546 代入演算子とシフト演算子だったら、優先順位すごい分かりやすいと思うが。
>>546 ようは + と << の優先順位の差だけなんだけどね。
Javaみたいに言語使用でカッチリ決まってるならいいけど、Cだとコワヒ
>>550 Cでは言語仕様で決まっていないとでも?
// ↓2003.08.22. 削除(なんとなく) // hoge(); これでデグレードが20件ぐらい出た時、辞めるというか そいつの首を絞めて殺してやろうと思ったさ
演算子の順位が決まって無い言語なんてあるのか?
優先順位が無い言語ならあるけどね
保守性を考えたら括弧つけるべきだけどね。 書いたときにはなんか憑いてるか降りてるからさらっとかくけどさ。
hoge1 += (hoge2 << hoge3); カッコつけるって、↑さすがにこれは冗長だと思うが。
分かりやすいと思うけど
さすがにってほど冗長には見えない
558とは仕事したくないな
561とは友達になりたくないな
代入演算子の右をカッコで括ったコードなんて見たことない。
565 :
仕様書無しさん :04/09/25 12:32:08
/∧ /∧ / / λ / / λ / / λ / / λ / / /λ / / /λ / / / //λ / / //λ /  ̄ ̄ ̄ \ / / ̄ ) ( ̄ヽ λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / /●/ \● /λ < バカバッカー / // ∧ ∧ \ /λ \________ | λ ` ー― ´/ / /| * * | λV V V V/ / //| + |\ |\ |\ + | λ| |/ / / //| |_λ|__λ|__λ|\ | λAA/ / ///// + | /λ /λ /λ-λ | λ/ / / ////| ノ| | /λ /λ /λ /λ \ / / ///// /\| ノ /λ /λ /λ / | \ / / //////// | /| ////////////| ―/ / / / / / // // ////////////― | /| ////////////|
>>564 代入演算子の右を括って見やすいという感性が一般的でないということ。
「一般的でない」
飛躍が趣味なのかな、この人
というか、お前らが演算子の優先順位を理解ししてるかどうかじゃなくて >書いた本人も自信がなくて(ここがポイント)確認したらしい。 ここがポイントだと思うのだが、 優先順位に自身が無いのであれば、括弧をつけるのは当たり前だろう?
>>571 それ以上に、
「a += b << c; は優先順位が分かりにくい、カッコを付けろ」
のほうが、ツッコミ入れたくなるよな。
naranai
ド忘れによるミスを防ぐためには効果的じゃね?
括弧をつけてもつけなくても変わらないのなら、つけるほうが親切だろ それともおまいらは、つけずに初心者の前で「俺は括弧なくてもわかるぞ、かっこいいだろ」とか 思っているんじゃねーよなー
>>575 に対して、極端に括弧つけまくった例を出して
なんか反撃したつもりの奴が登場する予感。
まあ、まともなコードを書いてる人で、代入演算子の右をカッコで括るという スタイルの人は皆無だけどな。
もういいって
579 :
仕様書無しさん :04/09/25 15:29:04
うちの会社のコーディング規約では、1行1機能にする事となってる。 a += b << c; は b << c; a += b; としなきゃなんねーってこった。
>>579 いくらなんでも、それじゃダメだろ・・・
d = b << c;
a = a + d;
とか突っ込んでみるテスト
そもそもシフト演算子を使うことが日常的な職場なら、 優先順位がどうこういわんと思う。 オレが前出向したところでは、シフト演算子自体を 使ったことのある人間が少なかった・・・。 掛け算したさ。
なあ優先順位の自信が無いって << に対して自信が無いから、いつも括弧をつけるようにしただけじゃん? で、たの演算子がちかくになくても毎回つけてる、と
四則演算の括弧については、理系出身者から「かえって見づらい」と言われたことがあります。 文系の私としては、あった方が一目で把握できるので楽ですが。
>>579 その規約だと、
area = (h * w) / 2;
↑こういう処理は、
area = h * w;
area /= 2;
↑こうなるの?
いやな規約だね。
>>577 >まあ、まともなコードを書いてる人で、代入演算子の右をカッコで括るという
>スタイルの人は皆無だけどな。
よく見かけるけど、何か?
d = (a ? b : c);
>>579 C言語を知らない学生さんは消えてくれ。頼むから、今すぐ死ね。
単体の = 以外の代入演算子って、右辺は普通は数字1個とか関数1個とかにするけど。 どうしても右辺側で計算するなら括弧をつけるよ。 同じように、1つの式で = を2つ使ったり、++i とかを式の途中に混ぜたりも普通はしないよ。 絶対しないわけじゃないけど、gotoと同じくらいに例外的。
括弧をつける意味って、日本語の説明とあわせることだと思うけど。
>>588 >どうしても右辺側で計算するなら括弧をつけるよ。
これは、君はそうするって話でしょ。
>>588 そういうスタイルの人がいても悪くはないけど、
それが一般的とか優れてるかとかって話ではないわな。
かといって、そういうスタイルじゃない方が一般的だとか優れているという話でもない。
>d = (a ? b : c); こんなんするか? d = (a < b) ? b : c; とかなら見たことはある。
どこがあほなのかを教えてくれ、わからねーんだ…
>d = (a ? b : c); そもそもこんなのに括弧つけるヤツがアホやなぁ、と言いたいんだと思われ
.......
>>592 優れているかどうか置いといて、一般的ではある。
>>596 そういう括弧を付けるのが普通だと主張して譲らない人が約一名。
コーディングスタイルについて語るスレってなかったっけ?
602 :
仕様書無しさん :04/09/25 23:46:41
コードって極力見やすく&誤解されなく書くべきだと思うので ()をつけるのって悪くないんじゃない? みんな演算子の順序くらい知ってて敢えてやってると思うんだけど
d = (a < b) ? (b) : (c); とかならよく書く
別に括弧つけてもいいと思うよ。
だけど、こんなのに「どういう順番で計算してるか分からないから直せ」とかケチつけられてもねぇ。
>>546 も、書いたヤツがタマタマバカだったから、
バカにするネタが出来たぞと、わざわざ2chにカキコしたんだろーが
もし、「はぁ?こんなのもわからないんですか?」とか言われてたらどーしたんだろうね。
>>602 代入演算子の右側を括弧でくくるような人は
いないので、それが分かりやすさに結びつくと
思ってる人はいないんでしょうなぁ。
もしくはソイツは気を使ってくれたのかもしれない。
>>546 「おい、ここ一目見て、どういう順番で計算してるのか分かってるのか?」
ソイツ。oO(ハァ?ワカンネー訳ねーだろ。まぁこの人の自尊心を傷つけてもしゃーないな。
ソイツ「ちょっと分かりにくいかもしれませんね。私も自身が無くて確認しちゃいましたよアハハ」
607 :
仕様書無しさん :04/09/26 00:17:24
代入演算子を自慢したいおりこうさんばかりじゃないのよ IT土方はそれでいいかもしれないけど
>>463 結局、確保した領域のサイズも渡すことになったとさ
とある処理(char *p, int size){
if(p!=NULL && size>0){
pをつかう
:
}
}
めでたし、めでたし
>>607 代入演算子の話で、自慢されてるように感じるの?
代入演算子を自慢したい、ってすごい意味不明なバカが来た。IT浮浪者かな。
なんでそんなに括弧を付けるのを嫌うんだ? 括弧を付けることによって順位が明瞭になる結果、 バグの混入する確率が減るんだから、 何も悪いことなど無いと思うんだが。
かっこつけるんぢゃねー ...orz
なんで括弧をそんなに付けたがるのかわからん。 付けなくても順位は明瞭だし。 余計な括弧は冗長性が高く、見難く感じる。 よくreturnに括弧付けるヤツいるがあれもワカラン。 なんでムダに付けるんだろう?キータイプも余分にいるのに。と毎回疑問に思う。
つまり 自分の(従う)流儀以外の括弧の付け方はもにょる ってことでFAにしないか皆の衆。
>>613 明瞭だと思われるところにもバグの可能性は潜んでいるし、
そういうバグこそ潰すのが厄介なんだよ。
>>615 そんなバグ、見たことねぇなぁ。
つうか可能性の話するなら、逆に括弧を付けたからバグが出る可能性も潜んでるだろ。
括弧の整合が意図しないようになっちゃったり。そういうバグも潰すのが厄介だろ。
>>615 >括弧を付けることによって順位が明瞭になる結果、
>明瞭だと思われるところにもバグの可能性は潜んでいるし、
括弧付けて明瞭にしても、明瞭だと思われるところにもバグの可能性は潜んでいるならどうしようもねーじゃねーか?
もしかして、括弧を付けない派の人は開発を一人でやっていたりするわけ?
括弧付ける派の人は、付けてない人を見ると付けろ付けろと、こうるさくく言う訳? こんなんでガタガタ騒ぐなよ。もっと大切なことは沢山あるだろ。 これからはケチ付け回るの控えたほうがいいよ。 オレはバカだバカだと触れ回ってると思われてるかもよ。
612 :仕様書無しさん :04/09/26 00:37:51 かっこつけるんぢゃねー ...orz
正直、カッコのつけすぎはカッコよくない(照笑)。 カッコの閉じ忘れもバグの元だし、関数ポインタをよく使う人にはかえって紛らわしい。
括弧の内側にはspaceをひとつ入れて欲しいものだ
>space 俺はイラネ。勝手にやってろ。
俺もいらね 間延びして読みにくい
for ( ; ; );
> カッコの閉じ忘れもバグの元 どんな言語だ?
俺はひよっこだから、とりあえずカーニハンに従うよ
付けすぎちゃいけない。当たり前。 (a = (b * c) - (d / e) + (c / f)); 最低限しか付けないと、それも可読性が落ちる。当たり前。 a = b * c - d / e + c / f; 他人が書いたソースは、比較的読みにくい。当たり前。 そんなことで議論して、スレ違いだと思いませんか。
システム工学をかじってるなら 安全なほうをとれ
returnに括弧つけるのがうざいときお勧めなのが void retrun(void); って関数をつくること 返し値がないってエラーに悩んで、途方にくれてくれるぞ
632 :
仕様書無しさん :04/09/26 04:26:47
a = b * c - d / e + c / f; ↓ a = b * (c - d) / (e + c) / f; ...orz 意味を変えるなよ、意味を
>>632 正直うっかりやってしまうかも。
さらタチ悪く、バグを直してあげたつもりでやってしまうかもしれん。
いや、まじで。
現場では、時間を掛けない事が優先になるので 誰が見てもすぐ分かるよう括弧はつけられる。 と、漏れは思っているけど… 「あたりまえ」や「思う」で仕事するのは多古!
a = b*c - d/e + c/f; が好みなんだけど、漏れはバカVBプログラマだから括弧つけちゃう派。 それより、狭いスコープ内(サブルーチン)で変数に参照を代入して、 最後にNothingを代入するヒトが居たんだけど、意味があるのかなぁって思った。 すごく意味無さげなんだけど、気になるから辞めてホスイ。。。
636 :
仕様書無しさん :04/09/26 08:46:07
>>635 スコープの広さに関係なく、その人の中でのルールなんじゃない。
俺も結構明示的にNothing代入する派
漢文で充分意味が明瞭なのに、なんでわざわざ平仮名なんて使うんだ? 日本語は冗長すぎて、見づらく感じる。
歓迎中華人民共和国的算譜土方、顧客要求日本語文書、 平仮名必須、使漢文於本国、謝謝
>>639 日本語にはきちんとひらがな使えよ
漢字だけにすれば中国語っぽく見えるけど、どう見ても日本g
>>637 漢文充分意味明瞭、何故態々平仮名使?
日本語冗長過、見辛感。
>>640 にほんごにはきちんとひらがなつかえよ
かんじだけにすればちゅうごくごっぽくみえるけど、どうみてもにほんg
てゆーか大陸の人なのに何故に繁体字?
643 :
仕様書無しさん :04/09/26 11:26:24
それ、本当に中国語なの? 中国語なんて、使う機会0だしなぁ
ちゅーごくごも二種類あるだろう
漢文は日本で言うところの古文だもんな。
むずかしすぎてちんぷんかんぶんです
太難不明白
ちんぷん漢文(@゜▽゜@)ノ
649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11 ちんぷん漢文(@゜▽゜@)ノ
650 仕様書無しさん sage New! 04/09/26 23:09:29 649 名前:仕様書無しさん[sage] 投稿日:04/09/26(日) 21:44:11 ちんぷん漢文(@゜▽゜@)ノ
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 ちんぷん漢文(@゜▽゜@)ノ
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 ちんぷん漢文(@゜▽゜@)ノ
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 でも、でも。
レス番とかタイムスタンプとか微妙に違うんですよぉ。
>>656 レス晩とかタイムスタンプとかは引数で渡せ。
メモリもったいないから参照私で頼む。
>656 TemplateMethodパターン
ここはひとつDecoratorで何とか
>>615 retrun 0;
はコンパイル時点で怒られるが、
retrun(0);
はリンクするときまでtypoしてることが分からなさげ。
バグの可能性を潜ませてまで括弧を使う理由が見当たらず
>>660 括弧を付けるのはコードを書いた者の意図を明確に示して
他人が読んだ場合も一目瞭然とするためだが、
それは何を明確にしてるんだ?
ぬるぽ。
>>662 いや、
>>660 はスタイルの話ではないな。
単純に有用性の話だ。
>>615 がバグを潰す為に括弧を使うべきだと言ったのに対して、
ここで括弧をつけても何の予防効果もないよ、と答えたのだろう?
>>664 言いたいことはわかるけどさ、 今時 if (0 == NULL) とか書かないじゃん。それと同じだと思う。
ごめん。俺、何書いてるんだか。 if (NULL == p) とかだね。
>>665 >言いたいことはわかるけどさ、 今時 if (0 == NULL) とか書かないじゃん。それと同じだと思う。
全然分かって無いじゃん・・・
括弧あったほうが意図が明確に伝わるかもしれず。 a = (x + y) + b; とか書けば、読んだ人は(x + y)の一塊に意味があると 感じてくれるかもしれないじゃないか。
>>668 条件式で定数を左に書くと、間違えて==を=にしてしまったときに
直ちにコンパイルエラーになるから有用、って話だよね、たしか。
職場で使ってた人がいた。
オレはやらんけど。
火に油を注いでみる。 if(hoge = 1) というバグがあった。 普通なら取るに足らないバグなのだが、 問題なのは単体デバッグが終わった後の 結合検査で見つかったということ。 しかも結合検査表を見るとOKと書いてある。 一体どういうテストをしているんだ。 これを発見する少し前に 自分が単体OKにしたけど、バグが残っていて 上記のコーディング、単体、結合検査をした奴に 目茶苦茶どなりちらされたことがあった。 サツイガワイタヨ。
>>664 グダグダ言ってないでどれくらい有用なのか定量化して出せよ。
>>672 結合でOK出ても一概におかしいとは言えないでしょ?
結合は単体がOKなことを前提に行う試験だから、その部分がテスト対象じゃなかった可能性もあるし。
if(hoge = 1) は常にtrueになるんだっけ? シバラクヤツテイナカツタカラワスレタ...
>>675 代入が成功したらじゃなかったっけ?っとふぃっしんぐ。
でも、このスレは辞めようと思ったソースなんだから、もっと香ばしいソースが欲しいよ。
Dim str As String ・ ・ (千行ぐらい) ・ ・ switch(Mid(str,n,m)) case(hoge1) ・・・・ case(hoge2) ・・・・ たのむ、コメント入れてくれ・・・ 文字列strの何をどう取り出して分岐してるんだ・・・
if(aFlag = bFlag) って感じのソース最近見たな。 バグではないんだが少し悩んだ。
>>677 strって変数名で使ってるの?
それは嫌だな。予約語のような・・・。
>>679 あ、それは見なかったことにして。
実際はもっとふつーの変数名だったよ。
>>680 じゃあ、コメント云々以前に1000行の関数に突っ込めよ。
コメントあってもそんなの見たくない。
>>681 もちろんオレだって見たくないが、SQL文の動的生成やってるとこだから
ある程度は見逃してやらんと。
研修中の新人のソースでバグが出て詰まってるとの事なので見てやった。 for(int i = 0;i < 10;i++); { //必要な処理 } セミコロン探すのに30分以上かかっちまったよ。 鬱だ。
>>683 甘い、今見ている「ン年前」のクソコードはこうだ
for(i=0;i<10;i=i+1)
{
/*限りなく無意味な処理の羅列が1000行ほど*/
} /*<-括弧の対応付けがなってない*/
仕様だけどWEBでPOSTされたデータを毎回別ロジックで展開しデータを拾いだして処理してた しかも客ごとにカスタマイズされた枝製品がいっぱい ある意味パズルを解いてる気分だった
>>675-676 hogeに1を代入し、hogeが真だったら。
ちなみにこれ動作フラグで
ここを通るたびに1(動作状態)になってた。
>>684 for(int i = 0;1 < 10;i++)
{
//必要な処理
}
こんなのもあった
>>686 hogeに1の代入が成功したら。だろ。
VCのコンパイラだとワーニングがでたような・・・
>688 > hogeに1の代入が成功したら。だろ。 今すぐ本屋に言ってなんでもいいからC言語の入門の本買って来い。 いくらなんでも、こんなのを間違ってる本は無いよな。
>>688 VCの場合はなおかつhogeがfalseで無ければだな。
どちらにせよよほど古いコンパイラを使うか、わざとレベル下げてコンパイル
しない限り、ワーニングはでるよな。
hoge = 1
という式が返す値は hoge だ。
つか、「成功したら」って何じゃい??
// あ、失敗しても例外出ない環境?
>>689 今ドキの入門書のレベルの低さを知らないな?
>>690 デフォルトの警告レベルだと出ないな。
燃料どぞー #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
private static void main(String[] argv) { ...... } …mainがprivateかよ。
>>693 凄い引き篭もりが作ったメインですかね。w
もう誰も僕に構わないでくれ!一人にしてくれ!って。
引きこもりすぎだろ(;´д`)
きっとライブラリ関数を集めたstaticメソッドだけのクラスで、mainが呼ばれることは永遠にないんだよ...
>>696 あ、俺それやったことあるな
ライブラリということでmainは動作確認にしか使わなかったので
動作確認時に、もうアホとしか言いようが無いメッセージや動きを
させまくっていたら、、、、、
3機種後でコードレビューが行われたらしく、その時の担当者が
客からボロクソに言われたという話が・・・・・・・・・・・・・・・・・・
以前派遣で逝っていた某社の話。 PM「コメントは1バイトコードのみで」 漏「了解しました」 ・・・CVSからソースとってきて見ると確かに1バイトで書いてあった。 漏「え〜と、これ何語でしょう?英語じゃないみたいですけど?」 PM「ローマ字。英語は混ぜないでね。混乱するから。ローマ字なら ヘボン式でもなんでもいいから。」 漏「なんで素直に日本語で書かないんです?文字コード統一しておけば 無理して1バイト縛りにするよりいいんじゃないですか?」 PM「客が見た時に読む気が無くなるでしょ。まず見ないとは思うけど、 念のためね。」 ツールでコメント抜いたソース作って、そっちを納めたほうが 楽なんじゃないか?と思ったけど言えませんでした。 契約更新のお誘いがあったのですが、謹んでお断りしました・・・
なぜカナで書かないのか?
なぜベストをつくさないのか
public class A{ public void A() { // なぜかコンストラクタが実行されない。 } }
>>678 > if(aFlag = bFlag)
この if になんの意味が有るか教えて下さい。
aFlag って class なの?
自爆。漏れも勘違いしてた。 この if は bFlag を評価するのね。何年 C やってるんだろ...
コンパイラが許しても、漏れは許さない せめてこう書いてほすい aFlag = bFlag; if(aFlag)
if(aFlag=bFlag, aFlag) ではダメでしょうか?
>>703 別に落ち込むことない。普通そんな書き方はしないし、めったにお目にかからない。
その記述、バグならまだ許すけど、それを仕様だというならば、書いた奴は糞ナルシストだ。
いったいどんな場合にフラグ情報の代入操作が必要になるのか のほうが気になるがw
>>706 君の普通が業界でも普通だという根拠を示して呉れ給え。
クラスのメンバが全部publicなんだが、これ書いた奴簀巻きにして多摩川に投げ込んじまえ。
if(!p=malloc(s)){perror("p");exit(1);} とかは、だめか?
>>710 それじゃ駄目ですね。
演算子 (! と =) の優先順位からすると。
>>677 VBっぽいが、それならswitch caseじゃなくて
Select Caseじゃないかと
> クラスのメンバが全部publicなんだが、 オブジェクト指向の意味がねぇー。
そういや、最近になってC++とJavaとで protectedの意味が違うことを知った。 Java使わんからいいんだけどね、別に。
>>714 しかし、何故 Java は protected という単語に拘ったんだろ?
違う機能なんだから、単純に違う単語を使えばいいと
思うんだけどな。
え、C++ と Java は名前空間が違うから
同じ名前でも意味が違うのは当たり前だって?
これだから Java 厨は・・・
>>713 なんで? オレ、public static finalだったら、わざわざgetter
作らなくてもいーじゃんな主義なんだけど。methodがあれば、
オブジェクト指向の意味なくはないと思うなぁ。
オブジェクト指向の基本はカプセル化だぞ、不要な関数露出してたら意味ないだろ
カプセル化がなくてもオブジェクト指向は可能だから基本とは思わん。
オブジェクト指向の基本は別にカプセル化ではないとは思う。 そういう隠し事をするような子に育てた覚えはないし。 みんなオープンで逝けば良いと。 っていうのはまああれだけど。 Setterは判るけどGetterは納得いかないときは確かにあるね。 出力フォーマットとか出力データを差し替えとかわかるけど、そこまでけちにならんでも。
とはいえやっぱし突き詰めれば結合度と凝集度になるわけで。
MFCは全部public
Pythonも全部public
723 :
仕様書無しさん :04/09/30 10:31:45
>>719 > Setterは判るけどGetterは納得いかないときは確かにあるね。
アフォですか? つりですか?
>721 ?
perlも全部public。 privateにしたい時は、名前を _ ではじめて、「これはプライベートの つもりなので、触れるけど、触れないことにしてください」と意思表示する。 …んだったよな?最近あまり触ってないから記憶あいまい。
別に興味はなくても、そうやって触るなといわれると触りたくなるのが性ってもんだな。
>>726 こういう奴がいるから、便利なPerlが便利じゃなくなるんだよなぁ・・・
と言ってみるテスト。
まあPerlだと、直接触った瞬間に落ちるプログラムも書けるわけですが。
>>728 こないだ、俺のソース中の_で始まるメンバをしっかりと触ってくれたヴァカがいたよ・・・
ちゃんとアクセスメソッド用意してんのにさぁ・・・
普通におっぴろげとけば誰も触らないよ。 そうやって隠そうとするから・・・。
>>729 プロパティ変数そのものを触る香具師と同じか...
>>730 の言う通り、おっぴろげとくベキものを、
おっぴろげてないだけかも知れないが。。。
でも、そんな感じの会社ってイパーイだからねぇ。。。
いつぞや辺りから、書籍をほとんど買ってないとか。
ぷろぱでぃとかメソッドを隠くさず、恥ずかしいソースは隠す。
734 :
仕様書無しさん :04/09/30 22:12:03
正直に告白します 今日、ExcelのVBAマクロで Range("A1").Height = Range("A1").Height みたいなコードを書きました。 いや、だって、高さ一回でも設定すると、高さの自動調整が利かなくなるからさ 本当は、なんかプロパティで設定するんだろうけど、ちょっと適当な資料整理だったんで 2度と見る必要はないと思うんだけど、後からみたら、さっぱりわけ分からないんだろうなぁ・・・
>>734 コメント入れとかないと、そのうちこのスレに書かれると思う。。。
とりあえず短納期だったんでコメントなし、表記法適当で置いときました。
737 :
仕様書無しさん :04/10/01 14:57:17
GOTO あっち GOTO あそこ ラベル名が日本語ということより、「あっち」「こっち」 とかいうところに飛ぶらしい。 「さっちゃん」とか人名ぽいのもあった。
既出だったらゴメンな。VB.NET で。 If 何か処理() = 失敗 Then Throw 例外 Return False Exit Sub End If
>>738 すげーな
とりあえずJavaでは書けないコードだ
何もかも投げ出して帰るんだ、さあ飛び出そう! って感じか
>>738 Return と Exit のところに、
//念のため
とかコメントがあればよかったのに
俺、hogeが変数でもsizeof(hoge)って括弧付けるけど、 普通つけてる?
使われる場所による。 式の中なら見やすいように付けるかも。
744 :
仕様書無しさん :04/10/02 12:00:38
sizeofはカッコ付けるので統一してる。 ちゃんとルール持ってるのが重要かと。
>>742 付けなくても通るのか?
すまんが言語を明記してくれ。
少なくともCだと付けないと通らない。
Borland C++ 5.5.1だと通ったな
749 :
仕様書無しさん :04/10/02 18:46:51
> この会社辞めようと思ったソースコード。 //偽装派遣は法律違反だ //偽装派遣をやる会社は来年以降危ない
/* ちなみにSTL使えば以下の数行で終わるんです 文句は環境決めた人に言ってください (コード) */
>>751 カコイイ!!
てかSTLも使いこなせんでC++出来ますみたいなやつはウンコだよな
STLつかって、おれってかっこいいと思ってる香具師がうちの会社に居ます 特殊環境なので、そのままのアロケーターはメモリリークします また、コード肥大化で、メモリ不足になります 目先のコード短くするのだけは勘弁して欲しい そんなゲームプログラマな漏れ
>>753 そりゃゲームプログラミングでSTL使ってもしょうがないけどさ。
DB関係でProC使うなら、メンテナンス考えてもコンテナ使いたいのは
当たり前・・・。
C++自体禁止だったらしい。
>>749 作者乙
さらされてた二人よりもおまいさんのほうが一緒に仕事したくない。
プログラム技術以前に社会常識とか守秘義務とかから学びなおせ
つーか日本人じゃないのに日本語使ってる時点でサイト開設者より 上だな。
>>753 ゲームプログラマーに成り立てのうちはコンシューマーハード特有のことは
知らなくて当然だとは思うが、そうでないならちょっともにょるな・・・
>>753 アロケーターカスタマイズしたり、部分特殊化したりしてればいいの?
「ゲームプログラムだから」という理由でSTLを使用しない方がいいなんて思ってるんじゃないよな?
んなわけない チームで、軽量版STLつくってたのに、自分の好きな機能ないからって コンパイラ付属のSTLを勝手につかってた コンテナもオリジナルのをつかわれて、どれだけ苦労したか、、、 アロケーターは限定版をもちろん用意している てか、ライブラリのヒープ管理使わないと大変なことになるしな で、やつの言い分はこう (奴が)普段使ってる機能もはいってないのはSTLなんて呼ばせない C++なんだからSTLはつかっていいに決まっている、規格であるんだから 自分がSTL使いこなして無いからって、いちいち文句言わないでください(勝ち誇り) さっきの書き込みの後、奴のつくったモジュールをリファクタリング(作り直しの)して コードサイズが700KB減って、テストベンチも高速化して なにより、ヒープテストに合格するようにしてやったんだが あさってなにをいうか楽しみだw
>760 (´-`).。oO( 平和なチームだねぇ )
>>760 とりあえず、彼の言っているのは
まともな意見だな。
悲惨な会社に入ると、こうなってしまうという
よい見本だね。
良い例を出してくれてありがとう
>>760
両方とも正しい気がする、メンテのこと考えると速度の犠牲なんてどうでもよかったりして
問題はどういう仕様を要求されているのか、だな。 760の過剰反応かもしれんし 彼の単なる我侭かもしれんし そういう話し合いが足りてないんじゃないかなー
とりあえず、せっかく作ったライブラリをないがしろにされるのは悲しいので
>>760 の言い分は正しいと思う。
でも、そいつがデスマ中に召還された派遣で、ライブラリのありかも説明されないまま
「3日やるから適当に仕様書作って」とか言われてほったらかしにされていたとすれば
オレはそいつの味方をします。
たしかにこの業界経験者ならなんでもできるだろうって勘違いやろうが多いね 超能力者じゃないんだから仕様まではわかるわきゃないって
>>753 特殊環境なので、そもままのアロケータはリークするってのがよくわからん。
本当にリークしてるのか?プールしてるんじゃないのか?
カスタマイズした出来損ないのアロケータを std:: においてるだけだったりして
>>760 STLport + _STLP_NO_EXCEPTIONS + _STLP_USE_MALLOC マジお勧め。
>765
>とりあえず、せっかく作ったライブラリをないがしろにされるのは悲しいので
>
>>760 の言い分は正しいと思う。
もしお前がアマチュアならば、その発言を認めてやろう。
プロなら士ね!
ゲームプログラムは、君らのような世界で無い特殊なところでやってるとおもってくれ ウィンドウズゲームは別な、PS2とかGBAとかそういうやつな 例外はデバッガがおかしくなるので使えない ヒープは、ハードライブラリ独自のをつかわないといけない そういう世界なんだ、組み込み系とも違った特殊な世界 メモリ不足になったらスワップが発生するんじゃなくて、動かなくなる 速度が遅いとがびがびな画面になって使い物にならなくなる こんなシビアな世界経験したこと無いだろ?
組み込み……
>771 他のはともかく、 >例外はデバッガがおかしくなるので使えない は単にデバッガが糞なだけだろ。まずデバッガを直せ。
>773 そのデバッガからコンパイラから、ハードメーカー指定のもんだったりするから 手がだせんのよ。 (正確に言えば手は出せても、それでトラブったら最後メーカーから愛想尽かされる)
要するに 彼はそのゲーム機の仕様をよく知らなかったから、STLを使った 会社は、それを知ってか知らずか彼を雇い、教育すらやらずに現場に放り込んだ 現場の人間がそれでキレた でFA? ハードメーカーの仕様書渡して一週間様子見れば?
シビアっていうか不幸なだけじゃん。 不幸なんだからあきらめろと言い聞かせればよい。
十分に教えた結果 STL使えるのは当然! と抜かしやがったのよ 自作簡易STLがあったのは伝えてる、でも機能が少ない
そうだとしたら処置は簡単 切れ
>>771 ,774の言うことがホントなら、
「やってよいこと」を制限するのは正しいことだと思う。
例えばHWメーカ提供のライブラリがバグってて、
メーカは絶対それを認めなくて、
仕方なくそれを回避するようなギミック込みのライブラリを自分らで用意する、
なんてことはありえそうな話だ
そんな環境では
> (奴が)普段使ってる機能もはいってないのはSTLなんて呼ばせない
> C++なんだからSTLはつかっていいに決まっている、規格であるんだから
なんて主張は通らんだろうな。
世の中にはANSIとかISOという言葉が存在していない現場が いくつもありますでねぇ。 あ、ISOはISO9000とかに関してだけありえるか。
俺はtemplateも使えないC++コンパイラで仕事してますが、、、 STLがどうのこうのといえる時点でうらまやしぃ
782 :
仕様書無しさん :04/10/03 23:32:52
何年前のC++コンパイラ使ってるんだろ…
>782 Mozillaのコーディング標準をご覧あれ。 例外禁止、テンプレート禁止、その他etc.etc. まぁ、可能な限り現存する全ての開発環境でビルドを可能にしたいが故の やむを得ない措置ではあるわけだが。
コンパイラ (NEC製) は ANSI 対応を謳ってるのに 環境 (富士通製) はストリームI/O に一切対応してない、っつーのがあったな。 ファイルから行単位で読むのに、F製ライブラリで1文字ずつ読んでたら 50バイト程度の行読むのに200msecもかかってて 結局 fgets 相当の関数を自作したら読み込み速度が300倍になったよ。
とりあえず、研究室みたいなところの奴と ありえない現場環境の作業員のような関係だな このスレのすれ違いな部分は
Java厨VB厨Cobolerがついて来れなくなってるよ!
現場環境では、 使うツール、ツールの使い方を制限するのがアタリマエなんだと思う 研究室みたいな奴というのは、なぜ↑のようなことをするのか、 その意義を理解していないだけなんだと思う。 でもさ、現場に出てみなくても、想像はつくと思うんだがなあ・・・ そうでもない?
>>787 でも、制限を受けてこんなところでグチをこぼさなきゃならない
ひとってのが、どんな理不尽な仕打ちを受けているか、なんてのも
わりと想像がつくと思うよ。
まえにいたプロジェクトでは浮動小数点型が使用禁止だったけど、
小数点計算を行うことが前提になっている仕様なのでどうにも
納得がいかなかった。
確かに、繰上げ繰り下げを明確にするのは大切だけど、桁あふれ
させてちゃ意味ないじゃんよ・・・。
>>760 環境を無視して我を通す奴とは一緒に仕事したくないな。
C++の規格で通ってるから何?役に立たないもの作ったって金なんか払わない
とでも言っておけば?
環境に適応できないやつは本当になんとかしてほしい。
>>787 ,788
それが想像つかないからこういう板(スレ)ではすれ違いが無くならんのよね・・・。
漏れの会社のヤシのコード If (IsDate(strDay) = False) = True Then そいつのコード見るの鬱になってきた
>>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
こいつを遠慮なく使ってくれい
さあ
トゥルリラー トゥルリラー 風に吹かれて♪
書いたのオレ様の予感!
PS2のゲームプログラマだが、stlもboostも余裕でチームのプログラマ全員使ってるよ! 古い人に多いんだが、比較的新しいモノって、多くの場合知識不足ゆえの誤解をしてるんだよね。 食わず嫌いっつーか、試しもせず否定したり、昔の知識がそのまま通用すると思ってたり。
新しい人に多いんだが、今の知識がどんな環境でもそのまま通用すると思ってたり。 とか返されるぞ。開発環境は千差万別なんだってば。
A = A + 3 .NET環境でのお話
やっぱりコレだろ a = a + 3; // aに3を足す コメント意味ねぇ
>795 >試しもせず否定したり 「試したら大丈夫だった」と言うだけで信用するアフォはおらんと言って見るテスツ。 説得するには「信用できる」証拠が必要。 (「信用できる」ってのが一番のミソ。) >796 そーやって己が努力しなかった結果を、環境に転嫁するのですねと言ってみるテスツ。 素直に己の無力さを認めて、「決まりだから仕方が無いよ」と言った方がよっぽど納得して貰えるぞ。 それでも諦めないヤル気のある奴は、実力があるなら環境改善に利用し、 無いなら自爆するよう仕向けるべし。
例外処理はともかくとして、STL あたりは負の要因はあんまりない気がする。 フールプルーフ(←言い方悪いけど)として外してるのだろうか?
>799 795が言いたいこと796が言いたいこと どちらにもずれている気がする。
>800 テンプレートの実装がバグってるコンパイラもあるし、 STLはある程度汎用性を持たせた作りになってるから 特定ターゲット向けにガチに作り込んだ類似のライブラリの方が 良い場合もあるんだろう。 >760を読む限りでは改善してるらしいし。
STLを特定ターゲット向けにガチに作りこむ? 例えばSTLの何を特定用にガチに作りこめる? STLportの実装とか結構良く出来てるぞ。 独自似非STL用意しちゃうと、その分テスト、ドキュメント等の整備が結構大変なんだよね。 そのコストに見合った分、果たして本当に向上すんのかね?
んー、例えば整数しか入らないことが分かり切ってるvectorのミニマム版とか。 漏れは760の会社は知らんからてきとーにほざいてるだけだがw まぁ760の言い分がマジかネタかでしょ。 マジなら既にそのライブラリ使ってゲームを1本以上リリースしてるんだろうし だったら(今のところ不具合が出てないんだろうから)信頼できるんだろう、760の社内では。 ちなみに漏れとしてはSTLがふつーに使えるなら迷わずそっち使うっす。
>>795 おまえは、自分の作ってるゲームだけがPS2のプログラムとでもおもってるのか すくなくともアロケーターとコンテナ系STLは作り直さないと とてもじゃないが使い物にならん、うちのPS2プログラムでは メモリ確保開放をものすごい勢いで行うので(ランダムインスタンス系ゲームなので) あれをそのままつかってたら、すぐにでもフラグメントして駄目になる まああれだ、おまえの世界だけがすべてじゃないってこった 井の中の蛙になるなよ もちろん、漏れみたいな環境ばかりとも思わない ただ、うらやましいと思うだけだ
ココ見てたら俺のレベルでもPGのバイトできるような気がしてきた。
>>807 おまえは、自分の作ってるゲームだけがランダムインスタンス系ゲームとでもおもってるのか
>すくなくともアロケーターとコンテナ系STLは作り直さないと
>とてもじゃないが使い物にならん、うちのPS2プログラムでは
どんな面で使い物にならないと思ったんだ?
んで、どのコンテナを、どんな風に作り直したんだ?
標準のSTLと比べて、何がどれくらい向上したんだ?
ドキュメントはちゃんと作ったか?
つうか、フラグメンテーションをやたらめったら恐れすぎな人も多いねぇ。
大きいメモリ確保、小さいメモリ確保を別のプールに分ける等工夫すれば、
オレが試したトコろ、断片化のせいでメモリが足りなくなるなんて起きないんだけどねぇ。
そういうノウハウ込みで、「ツールの使い方」だと思うよ だから、 オレんとこでは使えてる なんて主張されても困る。
オレも、オレんとこでは使えてない なんて主張されても困る。
すくなくともオブジェクトプールくらい作れないPS2のソフト開発者が 一人いることはわかった。
最低限アロケーターは作らないとだめだよな、PS2 プール分けすらできんから vectorのコードみるとわかるが、バッファが拡張されることがしょっちゅうおこると 場合によってはフラグメントすると思うぞ
おまいら、Java厨がついていけないそうだ。
815 :
仕様書無しさん :04/10/05 05:49:41
>この会社辞めようと思ったソースコード。 >プログラマとして幻滅するソースコード。 /* 偽装派遣は、使い捨てにされます。 */
>>807 > おまえは、自分の作ってるゲームだけがPS2のプログラムとでもおもってるのか
どこをどう読んだらそういう発想が出てくるの?
頭の悪いいいがかりじゃないなら、筋道立てて説明してみて。
「そういう意味を含んでいるつもりは無かった。自分の書き方が悪かったかもしれない」 という考えは微塵も出てこないんだね。ゲームプログラマて、皆さん自信家ですか?
金も技術も無いのにプライドだけ高いからね。
>>817 いるよね、そういう「認識の相違」を考慮できない人。
たとえエンジニア同士であっても他人に過ぎないんだから
自分の言ったことが別の形で伝わってる可能性も充分に考えられると思うんだけど、
他人とのコミュニケーション経験が少ない場合は
他人がどう考えてるかを予測する能力が低いから理解できないんだよね。
そういう人間が多い業界なのはわかるんだけど、
「そういうもんだ」で済ませてる人が多すぎる。
「相手がどう思うか考えて行動しましょう」ってだけなんだけど、
常識過ぎて誰も見直そうとしないし、みんな自分はできてると思い込んでる。
/⌒\ ( 人 ) ミ _) | |ミ / | | / チンコ ( ・д・) )) ウンウン ( ) (_____) たしかにそういう奴いるな、、、、人のことを考えられないってことなのか、、
>>817 > という考えは微塵も出てこないんだね。
だって元の発言書いたの俺じゃないもん。
「別人が突っ込んだのかもしれない」という考えが微塵も出てこないのは
どうかと思うぞ。
おまえの発言を見れば(余裕で使ってるって表現がバイト臭漂うが) ・PS2でSTL boostを使っている ・古い考えの人間は新しいもの(ここではSTL)を使いこなせない ・ゆえにPS2だろうが、STLを使わないのは古い人間 というふうに読み取れるし、そういう意図で書いたと漏れは読んだ そういう意図じゃなかったの?
これは他人に誤解されないソース書きなさいという教訓ですか?
>>823 他人に誤解されないよう正確に情報を伝えられるコミュニケーション能力が重要だね、
ってことでないかいな。
> メモリ確保開放をものすごい勢いで行うので で、だれもこれには突っ込まないの? ネタはスルーってんならそれでいいけど。
826 :
ネトゲ@廃人 :04/10/05 11:02:01
コンプレラC:\メモリMaple.exe@nexonのバイナリF2コード逆探よろ
使い方によっては、物すごい勢いで行うこともあるんじゃないか? なんどもいわれているように、お前の環境がすべてと思わないように メモリ少ないんだから、初回から十分なバッファとって、倍々に増やすともかぎらないだろ STLの本質は内部実装でなくて、外部インターフェイスの統一なんだから どんな実装があってもおかしくはない PS2っていってもGCCじゃなくてコードウォーリアーなのかもしれないし
VB6のプログラムに… GoSub見つけちゃった… orz
それこそ本来のベーシックのあるべき姿じゃないか。w 88ベーシックとかからの移行組ですかね。
同じ作業を繰り返すのに、ループじゃなくてコピペが使われてた…●| ̄|_
リトライにGoTo……勘弁しちくり orz
int a; short b; (略) int ret = (int) b / a ; 「(除算は)doubleが返ってくるからキャストしなきゃいけない」んだとさ。
>832 そいつの横っ面をK&R第二版でひっぱたいてあげなさい。
久しぶりにほほえましいのが来たなぁ。でも double d = 1 / 2 * (hoge + hage)(以下略) なんてやらかして、dはいつだって0!!ってコードを 何年か前に見つけたときは、ホントにキーボードに 頭突っ込んで倒れたぞ・・
>>798 読みにくいので、バグ取り中に
A += 3
と書き直したら、コード書いた先輩に
A += 3 ' (今日の日付)(漏れの名前)(修正箇所(理由))
とコメントしておかないとダメじゃないかと怒られました。
|
|
|
(-_-) 漏れ、悪いことしたかなぁ…
(∩∩)────────────────
/
/
/
まぁ 「動いてるならいじるな」 は鉄則ではあるわけだが。 とはいえ、見なかったことにしてしまうのも嫌だというのは分かる。
正直、コードスタイルの問題なんだから チーム規約とかじゃなければ、どうでもいいとおもうが
>>827 ものすごい勢いで行うことがわかってるなら再アロケーションのコストや
断片化の起こりやすい実装にはしないはずなんだか。
ねえ、ほんとにネタじゃないの?
いまどきそんなのVectorにころがってる自己満足ゲーぐらいでしかやらないよ。
ゲー専の卒業課題じゃないんだからさ。
ゲーム業界みたいな閉鎖環境で、すべてしっている838は中学生ですか?
喪前ら、それ以上やるんならゲームPG専用スレでも立ててやってくれ。
既出過ぎかもしれませんが・・・ char buf[256]; memset(buf, NULL, 256); strcpy(buf, "AHO\n"); xyz_print(buf); みたいなコードを見て苗まくった 9 年前の新人時代。 「NULL」ですか。はぁ。 memset() は「一応、念のため」ですか。はぁ。 xyz_print("AHO\n"); は邪道ですか。はぁ。 ところで、「256」がソースのあちこちに出てくるようで・・・お好きな数字なんですね。
わしはプログラムに自分の名前を刻むんじゃ〜
>>842 そのまえにxyz_printって何?
Cではなさそうなんだが・・・
845 :
仕様書無しさん :04/10/06 09:48:56
xyz_printの仕様によっては、xyz_print("cons str\n")は邪道にならないか?
>>843 そのネタ、今の若い奴は知らないんじゃないぜ、父ちゃん。
xyz_print が引数の文字列を書き換える場合とかは、邪道かな? 他は確かに萎えるけどね
counter = 0 ; for ( int i = 0 ; i < data->cnt; i++ ) { //データの個数を数える counter++; } …小人さんが書いたのか?
すまん、そのままの名前を出すとまずいと思って、安易に xyz_print などとしてしまった。 プロジェクトのとある共通関数で引数の文字列は書き換えないっす。 fputs にでも置き換えて説明すりゃよかったな。 あと、思い出したのが memset(buf, NULL, 256); の部分が strncpy(buf, NULL, 256); のようになっているソースもあった。
strncpy(buf, NULL, 256); は悪しき書き方を逸脱して明らかなbugだなあ
char dummy[256]; ってのがグローバルにあって main処理の最初に memset(dummy, NULL, 256); ってあって あちこちに memcpy(初期化したい変数, dummy, sizeof(初期化したい変数)); 今保守させられてるソースの話さ(涙)
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で作ればいいじゃん。 もう何がしたいんだか全然解りません_| ̄|○
VarPtr()なんて初めてみた。こんなんあったんだな・・・・
つうか、そのソース非常に危険なような気が。
VBのStringってBSTRだっけ?
APIに渡すときはchar*とかにしてくれるけど、いまいちだったような気が。
>>853 VBもポインタを取る関数はいくつかあります。
関数ポインタも取れるし、やる気になれば結構できます。
ただ、そういうのはVBでやるもんじゃないっす。
>852 ガワをVBで作って肝はC/C++で作るって手はありでないの? M$がCOMを喧伝してたころはそういうのを推奨してなかったっけか。
>>855 そうだとしたら、文字列操作のためのI/Fなんて作るべきじゃないでしょ?
2階層とか3階層システムみたいにVBとCの役割分けないと。
ViewとコントロールをVB、ModelをCってのがMSの言いたいモデルじゃないの?
いや、素直に StrData1 = StrData2 で済む話だろ、と>852は言いたかったのでわ。
>856 そりゃそうだなorz 852が「最初から全部Cで〜」と書いてるので、 855みたいのもありでないの、というくらいのつもりだったんだわ。 少なくとも852の例に関しては分ける意味無し、に同意。
>855 うちもまだそういう手法にこだわってる人多いです。 確かに、ファイルI/OなんかはCのほうが遙かに優秀だしね。 >852みたいなソースも見たことありまつ_| ̄|○
C 言語で main() で return するコードを書いたら 「え〜っ、めいんからりたーんしたらどこいっちゃうのぉ〜?」 とキャリアウーマン風の先輩に鼻で笑われました。 とりあえず、 「え〜っ、めいんはどこからよばれるのぉ〜?」 と返しておきました。
char buf[256]; memset(buf, NULL, 256); みたいなコードを char buf[256] = {0}; と書き直したら怪訝な顔をされますた。
>>855 基本的にはありだけど文字列のコピーみたいな小さ単位で小出しにされるのはちょっと。
VBの関数なのかCの関数なのかわからんコードはメンテしずらくてかなわん。
もしかしたら、そいつが機能の切り分け下手なだけだったのかもしれんが。
>>842 うちの職場ではそのmemset()やらんかったらバグ票に初期化漏れって書かれる。
俺はしょうがないから'\0'で初期化してるけど俺以外のヤツはみんなNULLでやってるな。
>>860 理解できないシチュエーションだなあ。先輩の仕事はなんだ?
先輩はmain()からでるときはexit()使えっていいたかったのかなあ?
>865 なるほどー。うっかりしてますた。(w
>>865 char buf[256] ={'\0'};
が正解かと
>860 え〜と、それ聞かれると正確に答える自信ないけど argc, argv, envpを積んでくれるとこかな?
>>860 制御系ではmainからリターンしないことも
たまにある。
>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のコンパイラですだ
'A'と\0じゃ役割がちがうだろうが。 Cの文字列はNULL止めしてあればいいから、全てをNULL値で初期化する必要はない・・・。 但し、その前提はCHAR配列を文字列として使ってる場合だな。 文字列じゃなくて単に配列(変な表現だが)として使ってる場合、全部を\0で初期化する意味は出てくる。
>>873 この流れで「NULL止め」とか言える勇気は尋常ではないな。
漏れは、 char buff[256] = ""; 派だな。 邪道?
>876 悪くはないと思う。 ただ、どっかの馬鹿が何も考えずにbuff[100]辺りをいきなり読みに行ったら ……ここで晒してくれい。
ROMが減る
本気でいってるのかどうかわからんけど char buff[256] = { 0, }; で全部0になるよ
>875 自分の書き込み見直したら、貴方のおっしゃる通りでした_| ̄|○ 吊ってきますΛ||Λノシ
typedef double dobule; typedef double dable; typedef double dabule; typedef float froat; typedef float floot; typedef float froot;
>>882 これ便利でいいよね。打ち間違えしても安心。
グラディウス2をやってた人用 typedef double dabo-
typedef int integer とか
typedef int itn; typedef int tin; typedef int *tinpo;
>886 最後のはなんだ最後のはw
>>880 そんな素直に間違いを認めたら、
>>872 さんが赤っ恥かくじゃないか。
もう少し気を使えよ。
>>864 main() から return するとプログラムが暴走すると思っているようです。
ちなみに、UNIX 上の ANSI C なコンパイラでの話です。
>>870 それは無限ループさせているから main() から抜けることはない、ということですか。
それとも、制御系の開発で使う C コンパイラでそのような仕様になっているものがある、
ということですか。
制御系ではmain()無いとか普通にあるし。
だからなんだよ低能
何でも煽ればいいってもんじゃないだろ……
ヽ( ・∀・)ノ
だからなんだっていってんだろ
カルシウム摂れ
(@u@ .:;)ノシ
>896 なによs(ry
>896 なんd(ry
899 :
仕様書無しさん :04/10/08 21:35:41
TakahashiException 例外は開発者ごとに苗字を付ける決まりがある。
>899 同姓の香具師がいたらどーすんの?
>>899 一人一つしか例外を作れないってことか?
TarouYamadaNullPointerException
>例外は開発者ごとに苗字を付ける決まりがある。 エラーダイアログに、携帯電話の番号を入れるためでつか?
UNIXの画面のscreen shotデジカメで撮ってるのにはワロタ。ってか( ゚д゚)ポカーン (xvでgrabするだろ普通。)
>>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
散々ガイシュツのネタをわざわざ書き込むブァカも早く解雇したほうがいいな
>908 とりあえずコンパイル通るようにだけ直しとけ。 あとは触らない。これ鉄則。
>コンパイル通らない それぐらいすぐ直せ
リファクタリングしてみた void foo() { init(); ctrlmain(); fin(); ctrlmain(); fin(); }
コンパイル通るようにしようとやってみたんですが、私じゃムリです。 関数のプロトタイプと本体で食い違いがあったり、 タイプミス?と思われる未定義変数が多数。 疲れたので今日はもう帰ります。
>>912 あれ?設計書に書かれてる内容と随分違っているような。
initで初期化処理をして
ctrlmainがメインループ
finが終了処理って聞いてたんですが…。
やっぱり帰らせて頂きます
>>913 1から書き直そうと思っても仕様が不明だったりするしね。
if (endflag = 1) ワロタ
>リファクタリングしてみた void foo() { if(endflag!=1) init(); if(endflag!=1) ctrlmain(); if(endflag!=1) fin(); }
void foo() { init(); ctrlmain(); fin(); return 0; }
>918 ネタはよせ
899 :仕様書無しさん :04/10/07 15:20:38 'マスタから税率取得 Dim Zei As Double Set rs = db.OpenRecordset("税率マスタ") rs.MoveFirst Zei = 0.05 rs.Close ヽ(`Д´)ノ
>関数のプロトタイプと本体で食い違いがあったり、 本体を信じろ >タイプミス?と思われる未定義変数が多数。 定義しろ
finは通らないだろ リファクタリング void foo(){ if(endflag!=1){ init(); if(endflag!=1){ ctrlmain(); } } }
breakないからfinは毎回通るんだよ!
>>908 リファクタリングしてみたYO!
void foo(){
}
でもendflagはどんな型のグローバル変数かわからないんだよな。 enum endflag{一個しかない}; かもしれないし。
りふぁくたリング は振る舞いを変えてはいけない! リストラくちゃ なら作り替え
>927 じゃぁ、endflag が volatile な何かかもしれんから こうか? void foo(){ endflag = 1; }
>>928 ワラタ
でも、return 0; が実装されてないぞ
あれ?void?
>929 だからコンパイル通らないんだろ、きっと。
#define endflag カンマで区切られたなんか凄く長い文 だったらやだな
何人か気付いてないヤツがいるようだが、 if(endflag = 1) ですよ。
933 :
仕様書無しさん :04/10/09 22:14:20
ハァ?
>>933 932には
if(endflag == 1)
だろっ?ってことをいいたいのかと・・・
どんなふうに教わったらあんなソースを書くようになるのか が気になる
>>934 勝手に思い込みでプログラムを変えるな。
しかしそこを変えないとコンパイル通らない
// 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.
だから 928 が正解だろ?
941 :
仕様書無しさん :04/10/10 00:22:38
コンパイル通るよ
会社って大変だね・・・ 5人くらいが同じコードいじってるんでしょ?
>5人くらいが同じコードいじってる ...それはないな(w
>>943 そうなの?
モジュールで分けてるから同じコードいじることはないか・・・
でも同じチームにいたら見るくらいはするっしょ
複数人で同一コードさわるような開発ならCVSなりなんなり 使うのが当然だろ。
>940 endflag = 1 が偽になる可能性は考慮しなくて良いのですか? 演算子オーバーロードとか…
>>945 やっぱプロの人も使うんだー
SourceForgeの人たちは全員使ってるよね
どんな修正したあとも
今までのどの状態にでも戻せるってのは
一人でなんか作るときにも役立ちそうだ・・・
class EndFlag { operator = (int) { exit(0); } } endflag;
/* もとのコード */ よし、コンパイルは通t
>>949 そういうやりかたやっぱよくないかな
たまーーーにする
>>940 そんなこと言ったら識別子全部マクロってことだって
VC++とVSFlexGridにて。 クリックされたセルのカラムの確認。 if( col == 2 || col == 3 || col == 5 || col == 6 || col == 8 || col == 9 || col == 10 || col == 12 || col == 13 ) { /* 処理 */ } …ホントはもっと長かった…。 しかも3箇所同じのがあった…。 さすが共産主義の国。
>953 > さすが共産主義の国。 それって中国に発注したってこと? 日本でも思うことは 会社の外は資本主義、会社の中は共産主義。
switch(col){ case 2: case 3: case 5: case 6: ・・・
#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)) { /* 処理 */ }
if( col >= 2 && col <=13 ){ if( col !=4 && col != 7 && col != 11 ){ /* 処理 */ } } 程度で
↑全然改良になってないな。むしろ改悪だコレ
比類なき pascal では if col in [2..6, 8..10, 12..13] then begin end; で済むな。
>>961 じゃあ
if not col in [4,7,11] then begin
end;
というふうにも書ける?
比類なき pascal では if not (col in [4,7,11]) then begin end; ですね。これほどに比類なき pascal なのに なんで下火なんだろw
>963 そりゃ言語製作者本人が 「もうちょっとちゃんと作っとけばよかったorz」 なんて言い出すくらいだから。
あー、ちなみにコレは序の口だから。
300行に渡る同じ処理が8個コピペされてたり、
ほぼ同じ画面(違いはボタンのアクティブ/非アクティブぐらい)なのに
クラスもリソースも別だったりするから。
あとcsv吐き出し処理の中に見出し行がハードコーディングしてあったりな。
確実に使いまわしで変更かかるのに。
defineさえされてねぇよ…。
>>954 その通り、中国です。
あーみえて、中国は個人主義だからな 後のメンテナンスの事とか絶対にちーむでの効率とかは考えないぞ。 そもそも設計がなければ自分では作らない(言われた事はちゃんとやるが)。
ま、日本企業の相手なんかする奴はレベル低いのしかいないわな
>>966 >後のメンテナンスの事とか絶対にちーむでの効率とかは考えないぞ。
中国人に限ったことではない・・・。
中国とかの場合、警戒して準備するもんな。 日本語の通じない日本人よりマシかもね。
>>966 >設計がなければ自分では作らない
まるで、日本人は仕様書が無くても作れるみたいな言い草だな。
変更元ソースと口頭で変更点を伝えられて(文書は証拠が残るので出さない) あとはドカチン・ドカチンと
そうしてまた仕様不明のブラックボックスが完成と。
だから日本のソフト産業は競争力がなくなるんだな。
>>971 の場合でも、クローズな場面のみで通用する論理だし。
実は品質なんかどうでもいいんじゃないか。 存在している事に意義があるみたいな。
いやいやいや、それはさすがに。
規律・過程・美徳を重んじる日本人、臨機応変を好み結果重視の中国人。 麻婆豆腐文化の中国は、ずさんな品質管理を露呈する一方で、日本でも難しいロケット打ち上げに成功するほどの高度な技術力を持ちます。
結果重視っつーか収入重視。 金がもらえれば出来具合なんぞしったこっちゃありませんwwwww