カーボン抵抗が 2ゲット━━━━━( |:| |:| |:| |:|´Д`)━━━━━ ウモァー!!
>1 (゚-^*)σ 乙♪
今日のトリビア glibcのqsort()はマージソートを行う。
>>5 それってマジですか?
('A') ('A') (A'#) ('A')
ゝゝ ゝゝ ゝゝ ゝゝ
<< << << <<
クイックソートの使い道すらわからないような無能らしいスレだなw
過去8年分の修正がすべてコメントアウトで残ってる会社。 バグコードまでコメントで残す代わりに過去のドキュメント一切なし。 ソース::コメントアウトされたソース=3:7 エディタ開くだけでおみーよありえねーよ 可読性って言葉知ってますか?
バカはCVSを使っていても差分をコメントで残していたりするから手に負えない。
switch(mode){ case 1: break; case 2: break; case 3: break; // … case 18: Start(); break; default: break; }
言語:VB.NET 処理は多少ぼかさせてもらうが。 If Object1.Property <> "" Then tmpObj = New Class(Object1.Property) Array.AddRow(tmpObj) End If If Object2.Property <> "" Then tmpObj = New Class(Object2.Property) If Array.Count > 0 Then If Not Array.CheckRepeat(tmpObj) Then' 重複時エラー終了 Exit Sub End If Array.AddRow(tmpObj) Else Array.AddRow(tmpObj) End If End If If Object3.Property <> "" Then (以下略:同様の処理がObject7まで続く) (さらにその直後にも↑と同様の7連ロジックが続く)
16 :
15 :2006/02/16(木) 23:28:59
インデントがorz
class Cache { Object[] data_ = null; Map keyIndexMap_ = null; public Cache(Map map) { data_ = new Object[map.size()]; keyIndexMap_ = new HashMap(); int index = 0; foreach (Object key : map.keySet()) { keyIndexMap_.put(key, new Integer(index)); data_[index] = map.get(key); index++; } } public Object get(Object key) { Integer index = (Integer) keyIndexMap_.get(key); if (index == null) return null; return data_[index.intValue()]; } } 何やってるか分かるかなあ?(foreach は多分オレ言語風味だけどw) このCacheクラス、結局、ただのMapクラスと同等。 むしろ、わざわざkeyとインデックスを変換してる分、改悪になってる。 keyIndexMap_にインデックスを詰めるために、int型のまんまじゃ入らないから Integerクラス使わないといけないし。 変数名とかそのまんまだから、心あたりのある人はすぐに改良するようにw
>>17 多分、挿入順で保持したかったのかもな。
もしそうならば、LinkedHashMap を使えば実現できてしまうから無駄な努力だな。
ところで、
> (foreach は多分オレ言語風味だけどw)
この部分がよく分からんのだけれど・・・。
普通の foreach に見えるが?
まぁ、key と value の両方を使っているのだから、Map.entrySet() に対して、foreach を
使えとか思うけどな。
> 普通の foreach に見えるが? そう?よかった。 foreachは話に聞いてただけで、うろ覚えで書いたから。。。 (実際のコードは、あそこでiteratorとwhileループ使ってた。 java1.4だからね。。。)
「プログラムなんて要は動けばいいんだろ」的なコードしか書けない連中が そのままマネージャとかにのし上がったせいで プロジェクトが軒並みグダグダになるような事ってあるのかな。 素朴な疑問。
それすら書けない無能がPMやって破綻したプロジェクトなら幾つもでも知ってるが
b = false if (strA = null) { b = false; return b; } if (strB = null) { b = false; return b; } if (strC = null) { b = false; return b; } ・・・
二重三重にアレだな
絶対にエラーにならない堅牢なシステムじゃないかw
文末のセミコロンを見る限りVBではないわけで、 そうなると、if文の中が ==じゃないのは Warningは出るような希ガス。
>>25 Warningを気にかけるような人ならこんなコードを書かない
NULLじゃなくてnullってことはJavaっぽい
#define null NULL があっても不思議じゃない気が
if (var1 == var2) { if (var3.equals(var4)) { if (var5 == var6) { if (var7 == var8 || var9 < var10) { if (!func()) { if (var11 != var12) { foo(); } } } } } } 今日見たのはこんなの。 確か6段だったと思う。
少々多くても条件がはっきりしてて読みやすければ、さほど問題ではねーべ。 >29みたいのは流石に途中で解読する気が失せそう。
== と equalsがさりげなく混在してるな まあそれは別にいいけど、見る気が失せるコードだ
33 :
29 :2006/02/22(水) 00:05:02
ごめん。>29 確認したら 8 段あった。 あと、今日はこんなのを見た。 public void setFooBar() { getBazBoo(getRequest(), getResponse()); } 何が起こるんだ。
激しいなオイ
今日の目撃事例。 If Object.Check() <> "" Then Return Object.Check() End If 履歴確認したら3年前のコードだった。 10年前の俺だってこんなコードは書かんがな。
こんなの見た。↓ここらへんがが80桁ライン var = new Variant( String .valueOf( _getLong(obj, FOO) + _getLong(obj, BAR) - (_getLong(obj, BAZ) - ( _getLong(obj, BOO) +_getLong(obj, HOGE))) + _getLong(obj, HAGE) - _getLong(obj, PUNI))); こんな調子で15,000行。 掛け値なしに、ガチでマジでずっとこんな調子。 天才だと思ったorz
数行だけ違う100行くらいの関数が8個並んでるんだが、 可読性とか保守性って何?
全部 "_asm _emit 0xXX"だけのソースというのを見た。 ……前任者が何かに怒って、既存のソース資料すべて捨てて作ったらしい。 1行目に一言「どこかにバグがある。探せ。」とあったが、誰も捜索していないらしい。 #24h×365dなシステムなんだが……
嫌がらせだな
とっとと作り直すべきじゃなかろうか。
作り直して不具合が出た時の責任とりたくないし が本音
マジックナンバー禁止と言ったら char aaa[BUF_SIZE+INT_1]; その後…ソースをみてたら… char aaa[INT_128];
わりとデカいプロジェクトでは ソースコード探検のしがいがある。 eclipse のプラグイン "checkStyle" をいじり、 変数名や関数名を (いわゆる) 全角で書いていると エラーとなるように設定してみた。 いや、でもみんなそれなりにプロだし まさかこんなのでエラーが出るはずg 大量に出た orz プロポーショナルフォントで開発してるんかい……
>43 ありえねえw プロポーショナルで開発する利点がさっぱりわからん('A`;)
全角とプロポーショナルフォントの関連性が分からん。 プロポーショナルフォントだと全角英字でも横幅小さくなって半角と見分けにくいって話?
コメントにAA埋め込む為に決まっとろーがw
テストケースの名称を日本語にしてみたら割と良い感じだった。 TestRunnerに日本語で成功失敗がリストアップされるのは分かりやすくていい。 英語圏の人間が言う「コードはドキュメントだ」ってのは、 日本人の意識とは開きがあるんだろーなー。 ソースコードが母国語で書かれてるなんて羨ましい。 きっとすらすら読めるんだろうな。いいコードなら特に。
VBで関数や変数に漢字を使われてるとムカつかないか。。。。。。。。。。。。。
クイックソートの使い道すらわからないような無能が粘着してるとムカつかないか。。。。。。。。。。。。。
句読点の使用方法が間違っている文を読むとムカつきます。
文の終わりは\;だよな;
>>47 COBOLって謎の短縮IDみたいなのが並んでるイメージしかない……。
というかすいません。COBOLだけはダメなんだ。COBOLだけはダメなんだ。
テストメソッドとかは、xUnitフレームワークが勝手に探し出して呼んでくれるから問題ないけど、
自分で日本語なメソッドとかを呼び出さなきゃいけないのはヤだよな。
いちおー日本語でプログラミングすることの利点も、
いくつか指摘されてはいるらしいけどねぇ。やっぱ抵抗あるわ。
そいや、たまにこんなコメントを見かけると激しく力が抜ける。
// セールスアマウントをコンピュートする
BigDecimal val = csa.computeSalesAmount();
お前は長嶋茂雄か(;´Д`)
フィールド名に漢字使ってるテーブルを見るとムカつきます。
日本語は日本語入力モードに切り替えて正しい漢字に変換するのが面倒だよな
うむ
なぜか変換できない が多発しそうだw
'Dim b既出 as boolean Dim bがいしゅつ as boolean 'なぜか変換できない
>55 プログラマーは漢直使えばいいのさ!
設定変えてスペースキー隣の変換キーにIMEのON/OFFを割り当ててみた。 IMEのONも変換候補送りも同じ右手親指。便利だ。 操作が簡単になればコードにコメント入れる頻度も上がるってもんよ。 それでも変数名に日本語は嫌だけど。 つーか、Windowsのデフォルトのキー割り当てがAlt+半角/全角ってのが嫌がらせにしか思えん。
……Alt押さなくても半角/全角だけで切り替わるようになったのってそんな最近だっけか?
かなり昔だと思う。
いつからだろうね。 NTはAlt要ったような気もするが、MeはAlt無しでいけたな。 >60 無変換をIME切、変換をIME入にするといいよ。 トグルと違って現在の状態を気にせずに、 日本語入力する前に一回準備運動みたいに押すだけで済む。
2K/ME世代からだったと思われ 98SEとNT4.0ではどっちもALT+半/全角だった気がする うちの会社、現コーディング規約は俺と同僚3人で無理やりまともにさせたけど、昔はひどかった A00001とかそんな類のクラス名やらローカル/グローバル変数やらが当たり前のように出てきて、 ついでに分厚い「なんちゃら定義書」の山。 どうやって保守すればいいのか本気で頭を抱えたよ(っつーか来期からまた頭を抱えるわけだが・・・) COBOLerはCOBOL以外の開発現場から去るべし
そうか、Alt要らなくなってたのか。知らなかった。
>>63 > 無変換をIME切、変換をIME入にするといいよ。
そっちも試した見たけど
>>60 のほうが性に合ってたーヨ。
明日会社に行ったら98個のメソッド持ちの8000行クラスとお見合いか……ハァ。
>>63 Macと同じにできるのか。それいいな。
明日やってみよ。
67 :
仕様書無しさん :2006/03/10(金) 16:07:22
>If Object.Check() <> "" Then > Return Object.Check() >End If うわー。オレが去年頭かかえたソースにまさにそっくりのがあったよなー。 同一人物かな?
>>67 2回呼び出す事に意味があるんだよ、多分。きっと。知らんけど。どうかな?
69 :
仕様書無しさん :2006/03/10(金) 16:38:57
#define eval enum 意味がわからねえ
70 :
仕様書無しさん :2006/03/10(金) 21:37:02 BE:89861292-
部署で使ってるライブラリのhoge_substr()は文字の先頭が0じゃなくて1から始まる。 他の言語、出身者が作ったのだろうか。。。
きっとコボラー作ですな。
Global CheckFlag; Check() { if CheckFlag = 1 then CheckFlag = 0 return CheckFlag }
どこから突っ込んでいいのかわからんねw
>>63 ちとごめん、スレ違いだけどやり方教えてくれないかな。めちゃ便利そうだ。
キーマップ変更だけじゃ無理だろうし、IME側で設定出来るのかな?
最悪、グローバルフックしつつIMEの状態を判定するような常駐アプリ作ってみる勢いだけど。
なぜか MS IME のバージョンによって毎回場所が変わるんだけど、 IME のプロパティーパネルのどこかに必ず 「設定(S)...」っていう大きめのアイコンつきボタンがある。 それをクリックして、なんとなくそれらしく弄くればよろしい。
76 :
74 :2006/03/13(月) 11:38:00
>>75 自分の愚かさに爆笑してしまった。このアイコン、脳が背景と認識しちまっていたようで。
最初の項目意外無効にする感じですかね。上手く行きました、こりゃ便利そう。
ありがとうございました。
「引数を渡して結果をreturnする」っていう関数の基本的な前提すら、 滅多に期待できないのはなんでだろうな。 問1) データベースをユーザIDで検索し、ユーザ情報を表すUserオブジェクトを取得したい。 クラスDBAccessorにメソッドfindUserを定義し、それを使用せよ。(Java、5点) 答1) DBAccessor dbaccessor = new DBAccessor(); dbaccessor.setUserId(userId); dbaccessor.findUser(); User userInfo = dbaccessor.getUserInfo(); 答2) DBAccessor dbaccessor = new DBAccessor(); ArrayList list = new ArrayList(); String retVal = null; try{ retVal = dbaccessor.findUser(userId, list, 1); // 1:単一取得モード 2:複数取得モード } catch(SQLException e){ e.printStackTrace(); return; } if(retVal == null || !retVal.equals(Constants.SUCCESS_FLG)){ return; } User userInfo = (User)list.get(0); 問2) なぜUser user = dbaccessor.findUser(userId);と書く人間が一人もいないのか、 その理由を誰か教えてください。もう嫌だ。
「ユーザーが見つからなかった場合」を、exceptionで処理したくないからでは。 異常系でもないのにexception使いたくないでしょ。 ※仕様上異常としたいなら君がthrowすべき。
Exception 処理したくないのは分かるが、もっと簡単なやり方があると思う。 例えば、答 2 ならば、返り値として、List か、User[] で返せばよいだけじゃないか? 見つからないときは、null を返すか、null チェックしたくなければ、サイズ 0 で返せばよい。 わざわざ呼び出し側が、List を与える必要性はない。 答 1 はそんな話とは関係なくアレだけれど・・・。
個人的にはList<User> userList = dbaccessor.findUser(userInfo);とか書いてしまいそうだ 単一取得と複数取得を分ける理由はよく分からんな まあ、書いた奴に理由を聞いてみるのが早いな
if(!x)とかif(x)とか省略使ってる奴のソースは読みにくすぎて話にならない もっと読む奴の事考えてコーディングしろよ
だよなあ。
if(IsActive)
if(!IsActive)
読みにくいか?
>>81
if (x != 0) if (x == 0) こういうことじゃないの オレもどちらかと言えばこっち派
boolean b; if (b != false) 俺はこっちの方が読みにくい。
>85 そんなの書かれたら腹立つなw
87 :
77 :2006/03/15(水) 00:08:20
俺だっていきなりexception投げはせんよ。見つからない場合を異常扱いするかは、もっと上の層で決めることだし。 俺なら見つからない場合はnull返すぜ、って言ったことにしといてオクレ。 要するに、たかがメソッド一つ呼び出すだけ、1行で書けるはずのモノが なんでこんな大ごとになっちまうんだって言いたかった。 呼び出し準備に、返された結果コードのチェックに、結果を取り出すためのgetter呼び出し。 雑事に埋もれて、本当にやりたかったことが全然見えやしねぇ。 ちなみに、答2のfindUser()の中身はだいたいこんな感じ。 ・第3引数に1を渡されたらuserIdからUserを1つ取得してlistにadd。 2を渡されたらuserIdを無視、Userのリストを取得して全部listにadd。 ・1件も見つからない、もしくは中でSQLExceptionが発生したらConstants.ERROR_FLGを返す。 それ以外はConstants.SUCCESS_FLGを返す。 (呼び出し側のtry-catchは無かった。その分少しすっきりするわ。スマソ) リストを取得したかったら別途getUsers()とか定義すればよかろうに、 メソッドを複数の目的で使い回さないでお願い(;´Д`) 使い回すならinterfaceではなくimplementを。よい子の約束だ。
0が偽扱いされるC系言語でのことなのか、それによって話が違うな。 あと、xがポインタなのかもしれん。その場合は if(x == NULL) { でいいのかな。
bool値とポインタのNULL判定は if( hoge )でやっちまうなぁ 数値なんかは if( hoge == 0 ) とかでやるけど
>>87 答2は、Constants.ERROR_FLGか、Constants.SUCCESS_FLGしか返さないのかよw
「おまえ、規約でソースの修正をしたら、 修正前の状態をコメントで残すって規約で決まってるだろ」 「CVSで管理しているんで、今からそうしましょうか?」 「出来るんだったらそうしてくれ」 で、1日かけて最初とのDIFFとりつつ仕込み仕込み… 3/4がコメントと言うすさまじいソース完成 そりゃ、設計書も固まってない頃からソース作ってるんだからこうなる罠
>>81 > if(!x)とかif(x)とか省略使ってる奴のソースは読みにくすぎて話にならない
むしろ、どこが省略なのか?と小一時間(ry
/* 1.123版 不適切なコメントを削除 /* やってられねー */ */
>>93 コメントのネストに対応していないコンパイラもあるでよ。
if (x == 0) { function1(); } 何この気持ち悪いインデント
勘弁してほしいな
イヤミがシェーしてるみたいなインデントだな
インデントに空白とか、タブ4、タブ8を使う香具師が混在つると凄いことになるよ。。。。。。。。。。。
文末に句点を並べるアホがいると凄いことになるよ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
if(aaa) { if(bbb) { //////////////// // Company:hoge // Name:fuga // 〜〜により削除 // if(ccc) { //////////////// if(ddd){ fadfa; fafda; } ///////////////// // Company:hoge // Name:fuga // 〜〜により削除 // } //////////////// } }
>100 複数行コメントのない言語での経験が長いひとなのかねぇ。
そういう仕様になってる企業もあるから。
>>100 俺、たまにそういうコードを書き換えてはぼーっと眺めてるよ……
if(is_aaa && has_bbb && is_ddd){
fadfa;
fadfa;
}
4行が20行に大増量か……ハァ(´Д`)
そして虚しい気分で「保存せずに閉じる」……。
その前に、昔のソースをコメントで残すこと自体があんまり良くないとオモ 二度と復活させる予定がない部分が残ってるってどーなんだ?
rcsのようなすばらしいソフトのない世界もあるんですよ。
コーディング規約になっちゃってるところ世界もあるんですよ。
XXCODEは6桁なのに、 #define LEN_XXCODE 10 char XXCode[LEN_XXCODE + 1]; のようなコードがあって、これ以降の処理は、マジックナンバーで6を使いまくり。
>>105 >>106 それにしても現場のマも全然嫌がらないっていうか、疑問に思わなさすぎっていうか……。
いや、俺の周りの話だけどさ。
なんか、どう書くべきかって試行錯誤を全然してないような気がする。
とりあえず動くように書いて、動いたらはい次、って感じ。
一度書いたコードが全く姿を変えない。新規に書き起こしてる真っ最中のコードでも。
どんな状況でも「書き換える」ことが滅多にない特殊なことと思ってるから、
コメントみたいなバッドプラクティスも自然に思えるんじゃなかろーか。
CVS使ってるのにな……。
ってか係長、「Javaではそーなんだよね」って、
いやバージョン管理にJavaもCも無いですから。
109 :
108 :2006/03/19(日) 15:37:46
って、コメントは別にバッドプラクティスじゃないわ。 なんて言やいいんだろ。「コメントアウトによるバージョン管理?」
>109 いっそのことコメントアウトによるバージョン管理ツールを作ったらどうか
バージョン管理も満足にできていない職場って結構あるの? 勘弁してもらいたいんだが。
バージョン管理どころか、サーバーの共有フォルダをみんなでアクセスして、 ファイルを直接いじって開発ってのもあるぞ
>>110 CVSのdiffをコメントアウト形式で表示するとか、
ほんのちょっとだけアリかもと思ってしまった。
>112 それはすげえなw コンフリクトは発生しないかもしれんが 気づいたら編集がなかったことになってたりするんだな
>112 なんだ、うちのことか。('A`)
>>115 お前の所もそうなのか・・・ウチもだよ('A`)
ってか俺以外だれもCVSの事を知っている人が
社内にいない気がするんだが俺の思い過ごしだろうか・・・
VSSを導入して使えるようにみたが、 結局ロクに使われなかった会社を俺は知っている。 どうやら、バージョン管理ツールを使った事がないやつらは、 チェックイン、チェックアウト、の作業を面倒だと感じるらしぃ。 まぁ、それなりにバックアップはとってたようだけど。
VSSならチェックインだけで使えるのになあ。
>>119 チェックインと同時にチェックアウトってのがある。
一人で使うにはこれが最強w
121 :
115 :2006/03/20(月) 02:27:01
>>117 >チェックイン、チェックアウト、の作業を面倒だと感じるらしぃ。
おいらがCVSの有用性を説いたあとにそう言われて一蹴された。
そのあといろいろあって>112な状況になってたことを知る。
関係ないけど更にどうも話がかみ合わないと思ったら共有ディ
スクのことを奴らはローカル言うてました。ボスケテ。
VSSはローカルでファイルが削除された場合の挙動がおかしいから微妙だな
CVSって常時チェックアウト状態になるのがデフォじゃね?
>122 おかしくなるか? 具体的に教えてくれ
ローカル側で削除 ↓ でも鯖には残る ↓ 最新Ver取得で消したはずのファイルがまた落ちてくる という流れかと。
鯖から消せばええがな。
個人的にVSSはしっかり使うように指示してるな。 最初使ったとき確かに面倒だなぁとは思ってたけど バージョン管理するのは楽だわ。 しかし最新のやつって使いづれぇ。 6だと随時下に何やってるか書いてくれるのに 7は一気にはき出すからなんとなく嫌い。 設定次第なんかな。
>125 うーむ むしろその方がありがたい
String s = new String(); s = "aho";
ガーベジコレクタはメモリ資源を回収してくれるが 人間ゴミはむしろ増やす恐れがある、と…… # ってもシステムからいただいた後のメモリ管理は全部自前、てのは流石に最近辛くなってきた
>>129 そのコード、暗黙の new String("aho"); やってるけど、
これってコンパイル時に最適化してくれるんかな。
コードとして別物だからしてくれないんじゃ?
>>129 はコンストラクタ → =の演算子オーバーロードだけど
>>131 はコピーコンストラクタ だけのはず
あ…コピーコンストラクタじゃなくて、引数 char *型のコンストラクタか orz...
>>132 C++じゃなくてJavaじゃね?
最適化されるようなされないような……。
逆コンパイラ使って見てみれば分かりそうだけど、めどいからまぁいいや。
135 :
131 :2006/03/24(金) 13:27:30
ちっと暇が出来たんで軽くチェックしてみた。 WinXP + j2sdk1.4.2_04 source: public class Test25 { public static void main( String[] args ) { String s = new String(); s = "aho"; System.out.println(s); } } デコンパイル後: import java.io.PrintStream; public class Test25 { public Test25() {} public static void main(String args[]) { String s = new String(); s = "aho"; System.out.println(s); } }
>>135 うわ、最適化してくれないのね。
私も Jad v1.5.8f で試してみたけど、同様の結果になりました。
コンストラクタ( public String() )でどんな処理がなされるのか、
というところまで踏み込んだ最適化をしていないからなのか、
問答無用で実行しちゃうんだね。
ソースの修正は関数単位で行う…のはまだいいとして、 修正前の関数をコピーして別の名前で残すという規約は参る funcA() { //30行くらいの処理 } funcA_20060328() { //30行くらいの処理 } funcA_20060327() { //30行くらいの処理 } : : 以下続く
>137 それオブジェクトファイルが無駄に肥大していくんじゃ…… 無駄関数が最適化で抹殺されるならそうはならんだろうけど
そんなんでよく会社が成り立つもんだね
>>137 修正前の関数はコメントアウトしないの?
そういう規約を喜ぶ連中は2007年問題で激減するはずだから もうちょっと我慢して改正しようぜ。
>>137 こっそり#if 0〜#endifを書き込んどいたほうがいいんじゃまいか?
CVS(とかVSSとか)使えってことだよな
>>143 開発者側としては当然CVSやVSS使いたいと思ってるやつが大半。
しかし、会社の規則で「GPLのものは使用禁止」とか、VSSの予算申請してもらえないとか、
硬直化したコーディング基準があるとか、様々な理由で使わせてもらえない現場が
よくあるんだよね。
Pen OshiriPenPen = new Pen(Color.Black)
>>145 PGの尻を黒いアザができるまで叩く上司がいるのか。
SM鞭でペンペンなんじゃないのか
ちょっと擬音として不正確じゃないかそれ
Petipeti
pengpeng
31個の引数が並んでたときとかか。
1関数で4000行ってのを見て、めまいがした。
○○○View.cpp 1,489,427 バイト 前任者失踪。。。orz
ウホッ
どの程度なら許せる? いや容量じゃはかれないのは承知の上で
うむ。 容量がいくら多くても読みやすいのもあるからな。
漏れも前に4000行の関数使ってるようなソースのバージョンUPやりまちたがあれは大変でちた。 しかも規約でコメントが英語。。。。 コメントもほとんど無かったYO ヽ(`Д´)ノ ウワワーン
流石qsortの使い道すらわからん香具師は英語も読めんか
Javaなんだが メソッド名は全部大文字のプリフィックス+連番 引数なし 戻り値なし っつー規約はやめてくれ いったいどこのこぼらーがこんな規約作りましたか
>>159 うわ……邪魔規約の極みだな。心底同情するわ……。
俺ならストレスで潰れる前に何とかして逃げる。
糞コードに健康奪われないよう気をつけてくれ。
>>159 そこの連中脳は大丈夫なのか?
本気で心配だ。
うむ
>引数なし >戻り値なし 名前はともかくこんな規約でまともなプログラムが組めるんだろうか。
COBOLは大雑把に言って全ての変数がグローバルだからなぁ。 それに慣れてしまうとローカル変数(関数の引数だって関数内ローカルだわな)を追えなくなってしまうんだろう。
ある場所で参照できる変数が、 他のところに行くと参照できないってのが理解できんのかな……。 やっぱりCOBOLは邪悪な暗黒の言語だ。 誰か魔界に永久封印してくれる勇者はおらんのか。
参照すべき変数が多くなってくるとめんどくさいんだよ。 めんどくさいから全部一個の構造体に突っ込んでそれを引き回すとか そういうことをやり始める。だったらはじめからグローバル変数で 行ったほうが、まだましな気がする。
>159には書き忘れてたんだが メソッドは必ずpublic 追加したらexcelのメソッド台帳にメソッド名と作成日と作成者を記入 >163 メソッド全部publicだからいちおう動くっちゃー動くんだが、 FUNC03_01() // 画面のデータを取得 FUNC03_02() // データベースに登録 みたいなことするんだわ('A`)
メソッドが全部staticじゃないだけ救われ・・・ないな('A`)
>>167 なんかもー信じられんわ。吐き気がする。
でもpublicフィールドは禁止されてないのかな。
なら「構造体」レベルの使い方ならぎりぎり利用できる?
つか、10年前に「はるみのゲームプログラミング」片手に
PC-8001でN-BASICしてた頃を思い出した。
あのころの俺の頭では「関数」が分からず「サブルーチン」しか理解できなかったが、
あのころ中学生だった俺が規約作ったらそーいう代物が出来たのかもしれん……。
167の会社はマシン語信者がトップにいそうだな BASIC話でちと思った
>169 publicフィールドないとだめだよ あるオブジェクトから別のオブジェクトにデータを渡す際、 メソッドの引数は禁止だからフィールドに直接突っ込むんだ('A`) WORKING-STORAGE SECTIONだなまさしく なんかもう俺も涙がでそうなくらいしょぼい工夫しちゃってんのさ public String func03_01_in_userId; // FUNC03_01の引数(IN)でユーザーIDの意 public String func03_01_out_userName; // FUNC03_01の戻り値(OUT)でユーザー名の意 みたいなのwww
>>171 そんなときは泣けばいいと思うよ。
まともな規約なら
public String getUserName(String userId);
って感じか。コレより
>>167 >>171 の方が分かりやすいって感じる人間がいるんだなぁ……。
あとWORKING-STORAGE SECTIONて何だろうと思ったら、何だ、COBOLか('A`)。調べなくてもいいや。
コボル云々というより、品質管理の観点から 「昔からのやり方」を変えるわけにはいかないのだと、 昔上司から教わった。 要するに作り方が変われば品質にも当然影響が出るよね、と。 …それを聞いて、良い方に変わるならむしろ歓迎すべきだし、 結局何もしないのはSE/PGの怠慢じゃネーノ?と思いますた。 以上チラシ裏の感想文でした。
品質管理のためにやり方を変えられないのに言語を変えられるのか?
ステップ数とか人月による管理のことだろ>やり方
……そんなに「やり方」を変えるのが良くないならシステム化なんてしなきゃ良いじゃない。 と自らの(そもそもないに等しい)存在意義を抹消してみるテスト。
「良いほうに変わる」のが分からないこともある。 プログラムはやっぱ若い人の仕事なのかもしらん。
言語を変えて管理方法を変えなかったら悪いほうに変わってしまいそうだが。 COBOLは全部グローバル変数だからアベンド時のアドレスと変数のマップと ダンプリストを付き合わせればだいたいの原因をつかめる=デバッガが使え ない技術者でも対応可能という利点があるが、Javaだとデバッガ使えないと 難しい=未熟な技術者では対応困難という面がある。こういう欠点を取り上 げていけば、結局管理方法を変えないとダメになると思う。
ICEもなく、メモリダンプのみで組み込みソフトの開発をちていた時は大変だったな。。。。。。。。。 デバッカがあればアホでも開発できるような気がつるけど。。。。。。
お前まだ居たのか よく恥ずかしげもなく顔出せるね
「会社のクソなコーディング規約のせいで」 「プログラミングのプの字も解らぬ顧客/設計者による度重なる無茶な仕様変更のせいで」 「『動きゃあ何でもいいんだよ動きゃあ!』という会社のガテン系な雰囲気と納期のせいで」 コードが汚い言い訳がスラスラ出てくるようになれば サラリーマンプログラマとして新人卒業だ。
>174 案件が変われば言語が変わることもある。 だが管理方法は上司や会社が変わらなければ変わらない。
vector<boo> aa; ... sort(aa.begin(), aa.end(), aacomp()); こんなソース見つけた これ書いた奴は才能あると思った…これで動いているんだもんな…orz...
どこが悪いんだろうと思ったら、aacomp()を呼び出してるのか。 でもsortに渡すアルゴリズムならboo&が二つ引数に必要なはずだが……。 aacomp()が関数オブジェクトでも返してるのか?
aacompって名前だとstrcmpとかと同じ3値を返す関数オブジェクトな気がする。 でsortの関数オブジェクトはstd::less<T>みたいに2値の関数だから結果が変になったとか。
183 が C++ 読めてないだけなんじゃね?
187 :
仕様書無しさん :2006/04/19(水) 19:07:14
関数の引数int i
>>186 C++は深いぞ!
答え
bool aacomp::operator()(const boo & right, const boo & left);
アリエネー
だから関数オブジェクトじゃないか。基本。
......関数オブジェクトなんぞ一般的なC++のコードじゃねーか。 なにがアリエネーなのかワカラネー
191 :
190 :2006/04/19(水) 22:31:03
しまった。左右が逆ネタかよ。orz
ウンコソース書く香具師ばっかりだな。。。。。。。。。。。。。
やぁその代表である無能コテくん 今日はどんな糞ソースを書いてきたのかな?
結局 183 には何も問題なくて、 188 だったってことか。
195 :
仕様書無しさん :2006/04/20(木) 00:24:42
俺が今いるプロジェクトのソースは、 メンバーの問題人物が担当した部分は、機能追加や仕様変更があるたびに #if defined(○○) : (追加したコード) #else : (従来のコード) #endif ってなって、コード行数が増え続けてる。 #ifが何段にもネストされてる。 しかも、自分でやっといてよくわからなくなるらしくって、 自分で書いたメソッドなのに『どういう風に動いてるの?』とか聞いてくる始末。 勘弁してくれよ。。。 最近、時間があるときにステップ実行していって必要ないところをひたすら消してる。 もう、コード見て必要ないところを解析するのは面倒。。。
戦後に興った産業だから、他の産業の開発手法を模倣する事 から始まって、だんだん現状に合う様に代わって行った筈なの に、ジジィどもにはそれが分からんのです。
ヲレ達にとっては「2007年問題」は、 問題どころか、COBOLerを排除する天啓?
>>197 生産業ならわかるけれど、ソフトウェアの世界で本当に2007年問題って起こるんだろうか?
>>197 あー、気持ちはわかるけどコボラーが作った
スパゲティーを賞味することになるだけだと思われ。
>>198 確実に起こる。
コボラーの書いた本人以外理解不能な
巨大システムのメンテ要員がいなくなる。
このスレの愚痴のサンプルコードが、
ヲレ達には理解不能な言語で埋め尽くされることになる。
んで、COBOLからJavaへの自動変換ツールとかどっかにないのか? と煽ってみる。
>>200 確かにあるが、それで翻訳されたJavaコードのメンテやりたいか?
COBOLが嫌われるのはビジネス臭どうこうじゃなくて、
言語仕様からくる設計の悪さだということを忘れてはいけない。
確かに言語はJavaかもしれないが、巨大なmain文、全部グローバル変数、
そして関数名は英文字+数字のマジックナンバーだということを忘れてはいけない。
202 :
仕様書無しさん :2006/04/20(木) 21:27:00
COBOLでベテランプログラマが重宝されるって話があるけど、ほんとかいな。 そこいらのJavaやVBプログラマをつっこめば、平気そうなきがする。
>202 いやJavaプログラマをCOBOLなプロジェクトなんぞに放り込んだら腐るだろ… VBプログラマはまだ耐性あるかもしれんけど。 しかしベテランCOBOLerの耐COBOL性能に比べたら…
当時C/C++メインなのにちこっとだけCOBOLやらされたことがあったが 正直1ヶ月(しかもC++の本業の傍ら程度)でもうお腹いっぱいですた…… ちうか、AIX上でコンパイルせにゃならんかったのだが、現場コボラにUnices使える椰子なんてほとんどおらず ソースは常に手元のWindows機で編集してFTPで上げて、あとは馬○の一つ覚えのシェルスクリプトを叩けば いいようにしつらえてあって、 その辺の自動化が中途半端だったせいかとは思うが、Makefileが実行の度*.oを全部消すようになっていて…… 漏れは手持ちの分のMakefileコソーリ書き換えてた
>>201 関数名連番はEclipseでリファクタリングかければどうにでもなるが…
論理構造に手を入れるのは大変かもなぁ。
>>205 もうひとつ君は忘れていることがある。
COBOLを自動変換でJavaにしようというプロマネが仕切るような
プロジェクトはリファクタリンクの工数を認めてくれるはずがない。
そもそも、その世代は「動いているものは触るな」という洗脳を
受けているので「リファクタリング」という概念自体理解できていない。
207 :
206 :2006/04/21(金) 10:02:27
個人的な実話で恐縮だが、 VBでスパゲティーボールになっているコードの リファクタリングを提案したら、 「マニアの趣味じゃないんだよ。仕事なんだ」と 趣旨を全く理解されなかったことがある。
>>207 VBスパじゃテストスイートなんて書かれてるとは思えんし、
新しく書くにしても大変そうだなぁ……。
リファクタリングの必要性を納得させるのはマジ大仕事だと思う。
保守作業で書き換えが必要になった時に、
関連のある範囲だけテスト書いてリファクタリングして……
ってのが一番マシな戦略じゃないかね。
俺らデスマやらスパゲッティの経験ばっか語りがちだが、
ふとスレと逆のことを思いついてみる。
みんな逆に「読みやすいコード」を保守した経験ってあるか?
>208 > みんな逆に「読みやすいコード」を保守した経験ってあるか? ないな(断言)。 俺なんか、リファクタリングするしないで社長と喧嘩して会社辞めたぞ。 #俺が「しないと絶対にマズイです、そもそも仕様書と書いてること違うじゃん!」 #と懇切丁寧に説明したのに、聞く耳持たなかった。社内開発のERPソフト。 ##残った奴に聞いたら、先頃結局全破棄→作り直しが決定したそうな。
210 :
仕様書無しさん :2006/04/21(金) 20:46:05
>>208 ある。極楽。
ぜんぜん別会社の人と四人チームで開発していたのだが、通信関係の
仕事だったので、二十四時間体制で、看護婦さんみたいに引き継ぎ
引継ぎで開発してた。
コメントで爆笑し、「あのヒトたち大丈夫?」とか言われてたりしたが、
マジ楽しかった。
漏れはデグレを恐れることなく気ままにソースを綺麗に修正ちてまつYO
たまに怒られまつが。。。。。。。。
>>208 組み込みの仕事をちていたときのソースは割と綺麗でちた。
UNIXの時はアホのコボラーが書いたとちか思えんかったけど。。。。
>>208 希ではあるが、ある。
やっぱ基本思想がはっきりしていて、
その思想に納得できる代物なら、
読んでもメンテしても楽しいよ。
// SELECT SQL .= "SELECT "; // HOGE SQL .="HOGE "; // TABLE SQL .="FROM TABLE"; たまにはソースレビューしたほうがいいんジャマイカ。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
学生時代、まったくソフトをやってなくて就職してからソフト(VC++)をやり始めた俺の意見だと、 ソースコードレビューをもっと積極的にやって欲しい。 ホントありえない日程組まれてるんだけど、 自分の書いたソースにマジで自信が持てないんです。。。
年寄りのプログラマや、少し特殊な領域(組込みとかゲームとか)のプログラマは 「おりゃーそこら辺のプログラマとは全然違う仕事をやってるんだ!」という歪んだ プライドを根拠に、ソフトウェア工学は勿論のこと、現場から生まれた方法論も ツールもすべて一蹴する。 「コードレビューもリファクタリングもテスト駆動も自動化もバージョン管理システムも バグトラッキングシステムもXPもアジャイルも軟弱者が使う下らん道具だ」と 言わんばかり。「本物のプログラマは××」を地で行くような奴らだ。
218 :
仕様書無しさん :2006/04/22(土) 12:42:27
リファクタリングしてぇ糞きたねーコード見てるとうずうずもじもじする
>>217 アメリカ産というだけで毛嫌いする奴もいるし、マネージャーがソフト屋じゃなかったりするんだぞ?
隣の芝生が毒草ばかりだからといって叩くな厨房。
本物のプログラマをなめんな! 当時はSEなんて呼称無くてSEもデザイナーもアーキテクトも 全てひっくるめてプログラマって言われてたんだよ! 当時のプログラマは、上級PGでもあるし、超級SEでもあるし、 デザイナーでもあるし、アーキテクトでもあり、もしかしたらそれ以上の存在だ。
当時ってのはいつだろう。 少なくとも25年前の某メーカー (の金融SBU) には居たが。
ばか文系のせいでPGから分離したできたSE
225 :
207 :2006/04/22(土) 17:07:53
>>209 ヲレも結局辞めた。
今でも正解だったと思っている。
>>224 結果って何だい? プログラムの行数? 納期を守ること?
はたまた、作ったものが会社にもたらす利益?
まあ、それがわかるくらいなら、リファクタリングするべきか否か、
何が正しいのか等について悩んだり議論することもないのだが。
>作ったものが会社にもたらす利益 これ以外になんの価値が?
>>226 >まあ、それがわかるくらいなら
おまえは、何が「結果」かも分からずに
仕事をしているのか?
はいはい。 コボラーヲヤジ乙 次のエンジニアの方どうぞ
メソッドに渡す引数が、日付も数値も文字列とかマジでやめれ
それなんてバリアント?
232 :
仕様書無しさん :2006/04/23(日) 07:34:43
仕様変更に柔軟に対応するには文字列の方が良かったり・・・ いままで数字だった課番号に突然「東日本課」なんかが追加されたりして・・・
>>232 >いままで数字だった課番号に突然「東日本課」なんかが追加されたりして・・・
それを数値だと考えること自体間違ってると思うが。
今まで部署名が数字だけでだったほうも驚き
課番号,呼称 01,北日本課 02,西日本課 03,南日本課 04,東日本課 単に04が追加されただけとちゃうん?
天邪鬼だらけのインターネット
237 :
仕様書無しさん :2006/04/23(日) 10:19:01
>>209 念のため突っ込んでおくと、
リファクタリングは仕様書と実動作(コード)との違いを修正する手段
ではありませんよ。
あなたは的外れな議論を社長として、仕事をやめたおばかさんってことですね。
バグを退治するために、プログラムを理解しやすい&修正しやすいように直す けど?
確かに、バグを修正するためにリファクタリングせざるを得ないときもあるな。 既存のモノを弄るなと言われて、アドホックな方法で解決の無限地獄に陥ったあげくに、 読めないコードになったのを見た事ある。
240 :
仕様書無しさん :2006/04/23(日) 16:05:26
コボラーは女の子多いから優しくしてやってくれ。 昨日コボラーで、巨乳の可愛い子と仲良くなたよ♪
241 :
仕様書無しさん :2006/04/23(日) 16:14:26
>>238 リファクタリングはソースを見やすく、改造しやすくしやすいようにするための手段。
バグ修正がやりやすくなるのは結果に過ぎない。
>241 だから?何が言いたいんですか? リファクタリングの結果、バグ修正しやすくなるのに何か不満でも? ...元々のコーダーがあなただから、人格が否定されたような気がしたのでつか? そんな事はないでつよw
243 :
仕様書無しさん :2006/04/23(日) 17:10:37
>>242 何を言っているのですか?
209からの流れをよく読み返してくださいよ。
209はバグの修正にリファクタリングが必要だと社長と議論して仕事をやめた、
といっていますが、仕様書との不一致を直すのにリファクタリングは必要条件ではないのですよ。
209はリファクタリングを別の意味に捉えているのを指摘しているだけですよ。
おばかさんにはわかりませんか?
309見たけど >仕様書との不一致を直すのにリファクタリング とは書いてないなw 243の思い込みじゃね? >しないと絶対にマズイです、そもそも仕様書と書いてること違うじゃん!
>309
246 :
仕様書無しさん :2006/04/23(日) 17:43:34
>>233-235 第1営業課
第2営業課
・・・
東日本営業課
工エエェェ(´゚д゚`)ェェエエ工
>246 もまえの方が工エエェェ(´゚д゚`)ェェエエ工
248 :
仕様書無しさん :2006/04/23(日) 17:46:00
ドメインが営業だから数字だけで扱えると思ったら 東日本営業課、西日本営業課とか追加しなくちゃならなくなった場合って意味
>>237 説得の結果「仕様違いの修正はするけどリファクタリングは認めん!」を恐れて
リファクタリングとセットで主張したのかもな。
ダメコードのおかげで仕様を満たす修正に大量の無駄コードが要る、とかは
自分も覚えがある気がする。
まぁ、破棄して作り直しは決してリファクタリングじゃないから、
>>209 の会社は結局「リファクタリング」は受け入れなかったんだな……。
丸ごと作り直しは全然駄目な戦略だとJoelは言っていたが。
>>241 バグ修正は改造の一種だと思うが……。
「修正しようにもこれじゃ怖くて触れねーよ」に対処するのに
リファクタリングは有効じゃないか?
コードの質に自己満足以上の価値を認めない職場は俺も御免だけど、
その質の生産性を証明しろと言われると実際どーしたもんだか……。
個人的には「このコードは正しく動いている」っていう自信が得られるのが嬉しいんだけどね。
233 :仕様書無しさん :2006/04/23(日) 08:37:28
>>232 >いままで数字だった課番号に突然「東日本課」なんかが追加されたりして・・・
それを数値だと考えること自体間違ってると思うが。
234 :仕様書無しさん :2006/04/23(日) 08:44:42
今まで部署名が数字だけでだったほうも驚き
>>248 printf("第%d営業課", sectionNo);
か……。
結果論だが、抽象化しすぎてたって感じかのぉ。
課名とかを個々で持っておいたほうがシンプルだったな。
252 :
仕様書無しさん :2006/04/23(日) 18:00:02
>>244 読解力が無いうえに誤記までするとは・・・
本当に馬鹿丸出しですね。
253 :
仕様書無しさん :2006/04/23(日) 18:00:56
営業課は数字以外も使って表すというビジネスルールがなかったから数字を使ったんだけど そんな場合にも部署名、課名は全部マスタテーブルに入れて マスタテーブルのPKを使ってやるの? 営業課を表す場合に数字以外は使わないのにこういう 課番号,呼称 1,第1営業課 2,第2営業課 3,第3営業課 4,第4営業課 マスタテーブルを作るの無駄じゃね? それに データベースサーバが落ちたらプログラム動かないじゃん
>データベースサーバが落ちたらプログラム動かない ...データベースなしでも動け、と?
「そもそも〜」は論点が定まらなくなるから止めた方がいいって事だな。
>>254 当たり前だろ?
データベースサーバーが落ちたくらいで業務が止まったらすごい損失が出るし。
マスタの話に便乗してちょっと質問させてくれ。 ASP.NETの画面にマスタから項目を拾うリストボックスがあったので DBアクセスを伴う箇所を分離するためにユーザコントロール化したら 「再利用もしないのになんでそんなことするの?」とか 「そんな余計な事をするからいらんバグが出るんだ」とか散々に言われた。 これはつまり、MVCを知ったかぶった俺が 先走りしたということになるんだろうか。
>>254 ……んな無茶な。
>>253 すまん、微妙に文章が読み取れない……。
営業課テーブルを作らないと拡張性が損なわれたり(今回のように)、課名の組み立てが複雑になるが、
まぁ設計した当初は「要らない」ほうに賭けたって事だよな。
その賭けに負けたんだから、頑張って掛け金を払うしかないわな。
俺なら拡張性とシンプルさを考慮して「要る」に賭けるが……。
>>257 「ユーザコントロール化」がその場で最適な解だったかどうかは俺らには分からんからなぁ……。
分離は再利用だけでなく、重複の排除、可読性の向上、自動テストが容易になる、等の効果もあるってくらいか。
ただ、単にクラスを分離するだけで十分だった、って可能性も……。
ん? さんざん言われたのはどっちに対してなんだ?
「ユーザコントロール化」か? それとも「分離」?
>>259 ユーザコントロール化そのもの。
確かに、リストの選択変更に伴うイベント処理とかも追加実装せにゃならんし
(「親リストを変更→子リストの項目が変化」みたいな処理)
DBアクセスを分離するだけならそこだけクラス作るべきだったかと
今になってはいろいろ反省することはあるんだ。
で、その時に「UC化の目的はDBアクセス周りを分離するため」と
説明したんだが、説明するたびに「?」な顔をされたんで
「そもそもUC化しても分離効果はない」という意味なのか
「分離すること自体が考えにない」という意味なのかを計りかねたんだ。
>>260 >「そもそもUC化しても分離効果はない」という意味なのか
>「分離すること自体が考えにない」という意味なのかを計りかねたんだ。
VB厨な職場なんでしょ?
たぶんユーザーコントロールの使い方(というかそもそも存在)を知らないから
「ヲタクが自己満足してる」って理解しかできずに叩いただけだよ。きっと。
ただ、話を聞く限りではクラス化だけでよかったかもね。
>>260 > 「UC化の目的はDBアクセス周りを分離するため」
この一文はかなり奇妙な気が……。いや、APS.NETあんまり知らないんだけど。
ユーザコントロールを作っても、ユーザインターフェースを分離する事にしかならないんじゃ?
ユーザコントロールの中にDBアクセス処理も入れて、
ページに貼り付けるだけで親選択->子DB検索->再表示まで全部やってくれる、みたいな?
それはロジックからPageクラスを分離してるんであって、
DBアクセスの分離とは別だし、MVCのMとVが混ざってることになるし……。
263 :
仕様書無しさん :2006/04/23(日) 22:18:26
>>253 って終わってるよ・・・
>>251 はアフォ?そんなコーディグする発想は業務系にはあり得ない。
数字だけでできてたとしても文字列として扱うべき。
別に課番号使って計算するわけじゃあるまいし。
>>250 まともなレスを晒すなよ。おまえの低脳の方がよほど恥ずかしい。
264 :
仕様書無しさん :2006/04/23(日) 22:27:48
>>263 まともなレスを晒すのは確かに問題がありますけど、
「馬鹿なあなたはまともだと思っているけれど、実際は全然そうではないレス」
を晒しても特に問題は無いと思われます :-)
265 :
仕様書無しさん :2006/04/23(日) 22:42:58
バリアントだろ
267 :
仕様書無しさん :2006/04/23(日) 23:12:23
>>264 そこまで言うならどこがダメか言え。
まさか課番号をint型にしても問題ないと思ってるバカか?
あくまで課の名称でしかないんだから 俺ならフルで「第1営業課」と文字列にするな コードが必要ならコードふるし。 もし数値として扱いたいなら課の属性として持たせるくらいかな?
なるほど 268はモテルタイプだと思う
>>267 264ではないが……
251に向けた台詞がおかしすぎ。
課名は文字列で持つべきという認識は251も含めた共通の認識だろ。
数値で持っていいという意見は253以外にはない。
253にしても、試みに聞いてみてるだけだろう。
主キーを文字列でもつって話か? ここは素人の集団か。
ほんとに主キーとして使うだけなら、無駄に文字列にするのは好かんな……。 シーケンスで作った値をいちいち型変換したくないし。 ほかのシステムとか事務処理とかでも識別子として使われるなら、 もう文字列にするしか無いかなぁ。 いやでも、その場合でも主キーは主キーだけで一つのフィールドにしたい経験も……。
スレの名前が変更になりましたw 【ソフトハウス】この社員辞めさせようと思ったソースコード#1【経営者】
ORACLEで主キーがCHAR(10)とかなってるのっていくらでもあるぞ。
課の名称なんか、キーにすんなよ。 変更とかあったらどうすんだ。
前の方でリファクタリングの話が出てたけど、変数名があまりにも馬鹿or 一文字変数なのを直すのはリファクタリングに含まれないのかなあ?
1文字変数を馬鹿にするな! いや、それがpublicとかなら別だけどね…
>>276 リファクタリング本見返してみたけど、一時変数名の変更は項目として挙がってないのな。
間違いなくリファクタリングの一種ではあるんだろうけど。
279 :
仕様書無しさん :2006/04/24(月) 22:46:25
変数名は三文字以上の意味のある文字列
String abc = "あべし";
いきなりかよwwwwwwwww
>278 あの界隈の方々は一時変数自体滅多なことで使うモンじゃないって意見じゃなかったっけ。
一文字変数の話しなのか一時変数の話しなのか・・・
>>283 (;´Д`)ゴメン、さらに見返したら名称変更はメソッド名しか挙げられてなかった。
一時変数どころか引数もフィールドもクラスも。
本文であんまり当たり前のように修正してるからあるものと……。
285 :
仕様書無しさん :2006/05/03(水) 15:51:36
if ( !!notSuccessful ) { : } もう恋なんてしないなんて言わないよ絶対〜♪
not成功のNOTのNOT・・・ヽ(`Д´)ノ
>>256 DBの故障をプログラム側でどうカバーしろと?
>>データベースサーバーが落ちたくらいで業務が止まったらすごい損失が出るし。
それはそうだけど
DBが落ちないようにRAID構成やバックアップ、ログファイルを使用するわけで
あくまでDBが正常に動いていることが前提でシステムを組んでいるわけで・・・
なんか、どっかのスレの営業SEに○○とかにありそうなねただな。
>>274 主キーがchar型なんて「ねた」だろ。設計の段階でOKが出るはずがない。
仮に主キーが文字型でも '1101' '1102' '1103' とか入れて暗黙変換とかばりばりかかってるのか?
表結合はどうするよ。参照先もchar型で統一か?
そんな「まぬけ」なものあるわけがない。
printf("第%d営業課", sectionNo);
とかもありえない。
第1営業課、第2営業課、第3営業課・・・
もDBで処理するべき。
でないとプログラムを変更した場合などのバグの発生原因になる。
288 :
仕様書無しさん :2006/05/03(水) 22:03:31
だから、壮大なつりだったんだよな。 それとも、それこそスレタイどおりのコードの書き方教室か?
>>287 >主キーがchar型なんて「ねた」だろ。
…阿呆?
DBからの自動割当数字以外のなんちゃらコードは文字列。これ常識。 そのコードの桁に意味がある。 例えば4418。最初の4は地方コード、次の4は部署コード、最後の2桁で課コード って感じでそもそも仕様固めの段階で既に決められている。 これを数値にしたら0018なんてのは18に勝手に丸められるし不便極まりない。 たとえば最初の地方コードだけでSELECTするのに、元がintとかなら わざわざプログラムの方で文字列に変換しなければならない(数値のままで やろうとすればさらに無駄に複雑)。 てか上の桁が0のものはどうやって保存するつもりなんだ? そもそも数値として扱う必要は絶対ないんだから(4418+2とかやらんだろ?)、 文字列に変換する手間をかける必要性はどこにある? 数値に見えるだろうがなんちゃらコードは数値ではないんだよ。 あれは文字列。 小規模開発しかやったことないのか?
>表結合はどうするよ。参照先もchar型で統一か? 当たり前だろ。
うちの会社のDBは主キーが文字列で、しかも処理の高速化という名目でtableの 項目が重複ちていまつが何か?
何も。 氏ね。
うちも日付はばあきゃらつー型ですよ
296 :
仕様書無しさん :2006/05/04(木) 13:16:14
>>295 さすがにそれはありえないw
と思ったが、固定長の電文を扱うゲートウエイなんかだと
電文を切り取ってDBにつっこむだけで済ませたい
という理由から日付っていうか全ての項目をCHARにして
あとは取り出す側の業務アプリでよろしく
みたいな設計になってることが多い。
主キーがCHAR(10)なんてアホだなと俺も思うけど、現実にそういうのはいくらでも存在する。 入ってるのは数値なんだけどね。コボラ上がりが設計したのかな。
前も書いたけど、主キーとchar(1)の列だけの性別テーブルがほんとに必要なのかと。 男、女しか入らないじゃないか。♂だの♀だの業務システムで使うのか? 0/1 もしくは true/false にして、プログラム内で固定値で扱えばいいだろ? どうせプログラム内でもchar配列使って組んでるんだから、文字長変われば配列周りの調整も必要になるし。
文字列の主キーは駄目って主張する人が多いのはなぜ?
300 :
仕様書無しさん :2006/05/04(木) 14:06:04
1バイトあれば 男、女、オカマ、オナベ、男→女性転換済み、女→男性転換済み・・・・・・ などなど表現できるぞ!
301 :
仕様書無しさん :2006/05/04(木) 14:32:32
>>299 インクリメントの数値じゃなきゃだめなキチガイの住む村だから
「第一営業課」とかが主キーなってるのか? 死んだほうがいいよ。
バイナリから文字列へのマッピング処理が必要だし、レコードサイズが大きくなって 1ページ辺りのレコード数が減るから。
そうなのか… うちのDBはCHAR以外の項目がほとんどないんで DBだとintとか使わないんだと思ってたよ… 金額とかレートとかお金関連だけ数値型だったな
>>302 その例は確かに間抜けだ。
だが、例えば製品コード "TJM-630010F/J" を primary key に設定するとき
お前はそれをいちいち数値にマッピングするのか?
文字列だと比較するのもその桁数分必要でしょ。数値ならそこも軽い。
業務系コボラは2進数を知らないから。2^32までの数値なら4バイトの比較ですむことすら知らないんだよ。
308 :
仕様書無しさん :2006/05/04(木) 15:21:56
ProductID NUMBER(4, 0), ProductName VARCHAR(16)
文字列で主キーをインデックスにした場合、大分類ー中分類ー小分類分けられるのか?
こんなんばっかだからいつまでもDBがボトルネックなんだよな。
但し、入れるのは数値でも、フィールドの属性は計算しないなら文字の方がいいと思うけどな、特に日時の場合。 そのほうがDBMSのいろんな編集機能が使える場合が多い。
312 :
仕様書無しさん :2006/05/04(木) 17:14:57
>>309 大分類ー中分類ー小分類が主キーに埋め込まなければならない情報なのか?
>>298 そんな単純なものはマスターテーブルにも作らない。
プログラムで処理するかDBのデザインのメモ欄にでも書いておく。
数値でやるってヤシはこれにも対策を答えてね。 >これを数値にしたら0018なんてのは18に勝手に丸められるし
そのシステムでは 18 018 0018 00018 が混合し、全て違う値として処理されるって事? 4桁固定ならプログラム側でゼロ足せばいいんじゃね?
317 :
仕様書無しさん :2006/05/04(木) 17:56:42
テーブルのカラムにはなるべく○○idというのを格納するようにすればいいんじゃね?
今やってる案件もchar型8文字だなあ。 ずっと前にやってたのは、普通にDateTime型とかだったけど。
319 :
318 :2006/05/04(木) 18:33:57
日付をCHAR(8)で持つことについては 「どうせ表示するときには文字列にするんだから」 と言われたことがある。……まぁ西暦10000年なんて来るかどうかも分からんし気にしたら負けなのかも? # それならCHAR(10)にして区切りの"/"も入れとけばいいと思うんだがなぁ…… # どうせ国際化なんて英語くらいしか考えてないんだろうし、1レコード頭2バイトの冗長性なんてなんぼのもんかと
あのー日付を文字列で持ったら、今日から過去一か月分ってWhere句にどうかくんすか?
322 :
仕様書無しさん :2006/05/04(木) 18:56:17
315みたいな奴がいるから意味わかんねプログラムが氾濫してるんだろうね。
323 :
仕様書無しさん :2006/05/04(木) 18:58:48
4桁にしないと、ソートする時に18が159より後ろにいくだろうが!!!
DB関連はコボラが混じってるから寒い話が多いよな。 MS-SQLのTINYINTとかSAMLLINTとかINTってフィールドの型が存在する理由なんて100年経っても わからないんだろうな。
ソースコードじゃないけど、 今、古い汎用機のシステムをPCサーバでリプレースする案件をやってる。 ここ3ヶ月ぐらい、会社の貸し倉庫で古文書の発掘と解読を行い、 解読に行き詰まったら隠居した長老に古い言伝えを伺いに行き、 今にもデッキに絡まりそうな遺品から貴重なデータを復元し、 徐々に明らかになる政治と欲望と苦悩が複雑に絡み合う壮大な歴史スペクタル。 何か間違った方向に進んでる気がしてならない。
映画化決定
>>321 数値も日付も計算する必要があるならそれぞれその型にしとくのが良いと思うよ。
そうでないなら、文字列型の方がDBMSが提供する関数群が充実している場合が多いというだけで。
つTO_CHAR
>>316 ほぅ、なんで?
数値にしてしまうと0018は18になってしまうだろが。
日付に関しては用途による。 関数あるからそれ使う。 なんちゃらコードと違って日付は結構いじる。
hhmiss って秒まで登録されてるって話だったのに、誰だよ hhmi で登録したやつは そんなことがあるから文字列で登録するのは・・・
けどまあ、中抜き検索だけはSQLでできないから注意しないとな 例えば20060503で各年の5月分だけSQLクエリーで抜き出そうたってそうはいかない 2006-05-03と大中小分類分けないと
インデックスが指すのはページまで。
>>333 20060503 の形式でも substr とか mid で月の部分を切り出せばよくね?
まあ、漏れは普通に日付型をつかってる。
もし日付型が使えなければ YYYYMMDDhhmmss を数値で入れて、
しかも入力の時に必ずフィルター関数を通してフォーマットチェックしてる。
336 :
仕様書無しさん :2006/05/04(木) 21:15:32
日付を格納するはずのフィールドに"9999/99/99 ab:cd:ef"みたいな文字列が入ってしまっても 平然と処理が進むようでは困るだろう…? "0018"とか"18"とかじゃなくて18で同一視されるからいいんじゃないか! DBの側で入力制限できるものはできる限り制限しといた方がいいの! 型とか単位とかの概念が理解できてない人達は本当に困るなあ。 データ自体と入出力の形式とは切り離せ、と言っても意味が通じないんだろうなあ。
>>329 数字しか入らないのに、0018、__18、18__を区別して運用しなければ
ならない状況になってるシステムの保守とかやりたくねーな。
この場合は018と0018と18の区別じゃね? どっちにしろ糞いけど
なにここDBスレですか?orz
342 :
仕様書無しさん :2006/05/04(木) 22:32:44
not null制約可能な限りつけておけば・・orz
343 :
仕様書無しさん :2006/05/04(木) 22:33:34
その後担当が替わって データ移行が失敗するからという理由で制約を解除
全角数字が混入して誤発注の巻き。 IDの桁あふれで受注システムが大混乱の巻き。 10進数18桁の数字で可変長文字列型。 下2桁が〜id、その次の2桁が〜id、その次がフラグで・・・・ だれだよこんな設計にしたやつはorz
ワロタ
06-12-01 06-12-01 06-12-01 06-12-01 06-12-02 06-12-02 06-12-03 06-12-04 06-12-04 18-12-5
DB内部では日付型で持ってるんだが、年の入力を下二桁だけにしてる古いシステムがあって…… データ見ると2003年とか2004年に混じって2015年とか2016年が……ユーザーが和暦とごっちゃにしてやがるorz そのデータを移行するのが仕事だったんだが多分2015年くらいまでは使うはずのシステムだったんで 期日より未来の日付は適当に古い日付に矯正してやった (お客さんもそれでいいよゆーてはったしw)
>>347 内部は4桁だろうけど入力は二桁のところは多いんじゃないの?
>>344 ファイル用のデータフォーマットをそのままDBに移したんだね・・・
>"0018"とか"18"とかじゃなくて18で同一視されるからいいんじゃないか!
>DBの側で入力制限できるものはできる限り制限しといた方がいいの!
おまえの言ってる意味わかんない。同一視なんかしちゃダメでしょ。
コードなんだからもし18ってしか書いてなかったら
地方コード(頭2桁とする)は00ってソース側で判断させるのを
書かなきゃならない。01や02・・・・って全部で4桁になるように調整しなきゃならない。
そんなめんどくさいこと数値で格納してまでする必要性は?
単にDB重くなるとかそういう理由なら仕方ないとしての最後の手段だよ。
前にも書いた人いるけど、コードなんか計算には使わないが
ソートには使うだろ。だったら固定の文字列でいた方がずっといい。
おまえらソートはしないのか?
なんでオイラこんな初歩的な事までこのスレで説明しなきゃならないんだ?
>>339 も
>>340 も。
>日付を格納するはずのフィールドに"9999/99/99 ab:cd:ef"みたいな文字列が入ってしまっても >平然と処理が進むようでは困るだろう…? なんでおまえの頭には入力チェックって概念がないんだ?
>350 お前が初歩的なDB特性を理解できてないようだが
>>344 の人なんだけど、うちも西暦2桁、24時で入力するところがあって、
±3年や営業時間の±3時間の値を入れると、
「ちょwwww12年後のAM3時にマジで受注はいるの?ちょっと未来すぎね?」
みたいな確認ダイアログ出して、さらに確認画面で、
2018年5月5日(土)3時23分 (平成30年5月5日(土) AM3時23分)
備考:こどもの日(祝日)
ここまで表示してるけどOK押しちゃう人いるからな・・・
入力ミスは必ず発生するってことを考えてインターフェイス作らないとダメぽ。
>>353 エラーメッセージが出すぎで、読まずにOK押すのが習慣になってるとかってことはない?
確認ダイアログ→確認画面ってとっても無駄っぽいな OKボタン隠れるくらいのラベルでもつけときゃいいんじゃね?
あるな、それ。 メッセージボックス出しすぎるとダメぽ。
357 :
仕様書無しさん :2006/05/05(金) 00:38:05
350が上級者なのかよ 泣けるぜ
>>350 そういうときは頭2桁の地方コードと下2桁のカラムを分けて、
数値以外が入力されないなら数値型にするべき。
ソートも SQL なら order by code_a, code_b で意図した順序で並ぶ。
しかも
>>344 みたいに地方コードが99を越えたときも対応できる。
>>359 くだらん自演する暇あったら
もう少しまともなDBの使い方覚えなよ
361 :
仕様書無しさん :2006/05/05(金) 01:21:23
そもそも正規化するのはページ辺りのレコード数を増やすため。 だから一レコードのサイズを押さえるためにバイナリの数値を識別子として連結させる。 当然、プライマリキーになる。 文字列で持つ必要があるなんとかコードがあるなら、別にユニークなIDを持たせてそれをプライマリキーにすべき。 なんとかコードはあくまでも人間用ということで、名称とみなすわけだ。
>>354-356 入力ミスは警告のダイアログが出て確認ページに進まない。
入力は本決定の前に入力内容の確認ページを挟むってのが基本仕様。
一部だけイレギュラー対応に値の閾値を越えてると確認ダイアログが出て、
OKを押すと入力内容の確認ページに進む。
やっぱりなれてくるとダイアログは読まずにOK押しちゃうから、
「閾値を超える値を許可する」みたいなチェックボックス作った方がよさそうだよね。
それよりも関連部署で1年近く仕様調整しまくったはずなのに、
システム稼動後に続々とイレギュラー対応が発覚するのって変だよねorz
363 :
359 :2006/05/05(金) 01:58:56
>>360 自演と判断するに至った相応の理由を聞かせて貰おうか。
>>361 >そもそも正規化するのはページ辺りのレコード数を増やすため。
何そのトンデモ理論。つか、そもそもページって、何のDBMSの話してるんだ?
>別にユニークなIDを持たせてそれをプライマリキーにすべき。
うわ…出たよおい。
そろそろこいつら隔離してくれん?
第二正規形って・・・伸びれば第百正規形とかにもなるのか? 1年で200レス未満の現状じゃ考えるだけ無駄か・・・
流れは変わるが、もう結構前に納品した書籍検索システムで 検索結果が変と報告が来て調べたらこんなの発見した。 static chare[] ISBN_10_to_13(static chare[] strISBN) { /* 2007/1/1までにXXXXX君が書くと思います */ return NULL; } XXXXXは漏れの名前。前任者は退社済み。 ちょwwwwwww何も聞いてないってwwwwwwww
ワロチ
まだ6ヶ月以上あるじゃないか それまでにお前も辞めるんだ もちろん、XXXXXのところを書き換えてね☆ミ
>>367 何の言語かわからないけど、C互換だったら
返却用のバッファを内部に持たないといけないのかな
うちだと、マルチスレッド非対応って言われて怒られそうだ
そもそも、下位ライブラリが非対応なのに・・・
っていうか、この話長すぎ。 「第一営業部」 「第二営業部」 これを、文字列でキーにするってのが、釣り。 これでFAでしょ?
あ、もしかして、もっと「高級言語」で「連想配列」? しらんしらん。
373 :
仕様書無しさん :2006/05/05(金) 09:55:19
>>356 なんでそんなに頭かたいの?
おまえの頭は入力チェック=ダイアログボックスなのか?はぁ?
チェックでひっかかったから必ずしもダイアログボックス出す必要ないだろ。
メッセージ出して次のページに飛ばないようにすればいいだけで。
それともおまえはメッセージ=ダイアログボックスしか考え付かないのか?
>>358 >ソートも SQL なら order by code_a, code_b で意図した順序で並ぶ。
INT型なら数値の小さい順で並ぶだろ。それは文字列主張派の意図した順番じゃないじゃないか。
何が意図した順序で並ぶだ。初心者が。
>>374 なんでそんなにガチ頭なんだ?
スレ違い。いい加減に汁。
>INT型なら数値の小さい順で並ぶだろ。それは文字列主張派の意図した順番じゃないじゃないか。 ハァ? どんな場合だ?例をあげてみ
マジレスすると こういう会話が社内で繰り広げられていたら やっぱり会社辞めようと思うわけだよな。
378 :
仕様書無しさん :2006/05/05(金) 12:44:44
>>371 釣りじゃないよ。
インクリメント数値信者のボケナスが本気でこの論争に勝てる超名案と思って書いたことだよ。
379 :
仕様書無しさん :2006/05/05(金) 13:01:09
日本語で書いてくれ
380 :
仕様書無しさん :2006/05/05(金) 13:12:01
381 :
仕様書無しさん :2006/05/05(金) 13:52:42
おまいら、dBXL以来、DB歴15年の俺がアドバイスしてやる。 結論からいえば、計算機が人間にあわせるべきだ。それが高級というものだ。 よって、全てのデータは文字列であるべき。 また、高速にランダムアクセスできるように固定長であること。 これは絶対条件だ。 結論は、全てのフィールドをCHARにして連結などという分かりにくいものを使うなということだ。
>>381 二行目だけ同意。
それ以下はどこが高級なんだ?
『計算機』っていう表現が >DB歴15年 ってのを裏付けてるよな でもコボラってのも露呈してるけど。
384 :
仕様書無しさん :2006/05/05(金) 15:11:59
まあ、企業システムの世界はPCヲタクには理解できないだろう。
いえいえ先輩!COBOLだってまだまだ現役ッスよ! 先輩のシステムはIBM?日立?ユニシス!?!?!?!?!?!?!?!?
386 :
仕様書無しさん :2006/05/05(金) 15:37:32
コロボックル 略して コボル
387 :
仕様書無しさん :2006/05/05(金) 15:48:07
キモヲタ氏ね
計算機かぁ・・・
>>381 3行目だけ同意。
したいと思ったが、数字に全角混ざる時代なんだよな。
「計算機プログラムの解釈と実行」を読んでから、 "計算機" という言葉にコンプレックスが無くなったな。 ってか、今まで "計算機" という言葉を嫌がる奴の中で、 出来る奴を1人も見かけたことが無いのだが。
>>391 >この手のハードウェアを連想してしまうよ
それはそれでいいんじゃねーの?
でもさ、プログラマが誇るべきは
自分の生み出した「コード」であって、
それが動作する実行環境が rich だろうが poor だろうが、
基本的にどうでも良くね?
俺はむしろ、「計算機」という言葉を嫌がる奴と、
「メインフレーム」に拘って、
パソコンをオモチャ扱いする COBOLer に
共通した心性を感じ取るね。
電子計算機なら全く問題ないんじゃね? 計算機といったら、俺はそろばん連想するよ
394 :
仕様書無しさん :2006/05/05(金) 17:58:32
キモヲタさん的には電脳でつか?
いや、やっぱり "サイバー" でしょ。
INT厨が何言おうがまともな企業のコードは固定長のCHAR。 特に組織が大きくなればなるほど。 銀行、信金、公共団体、いろいろやったがINTで定義してあるのなんて見たことない。
まともな企業だからと言ってシステムがまともであるとは限らない訳だが。
コードがcharでもいいけど、名称を主キーにしてるとか言ってたじゃん。
399 :
仕様書無しさん :2006/05/05(金) 19:43:30
そもそも主キーの意味がわかってないだろ。コボラは
400 :
仕様書無しさん :2006/05/05(金) 20:02:47
Oracleの初期データベースに入っているテーブルEMPの主キーEMPNOに付いていて、NUMBER(4)です。
401 :
仕様書無しさん :2006/05/05(金) 20:07:51
確か金融機関の振込先を一意に識別するためのキーに「支店名」が必要だったはず
んな訳ねーだろ('A`) 支店コードだって。
403 :
仕様書無しさん :2006/05/05(金) 20:45:36
支店コードは頭の0省略可能だよね。 っていうか0詰めで入力して進むと勝手にはぶかれる。 ボラクルならINT型で扱ってそう。
404 :
仕様書無しさん :2006/05/05(金) 21:47:59
んなわけねー
GWの愚痴が書いてあるのかと思いきや、何この流れ
>403 んな訳ねーだろ('A`)
>405 コードに限定されないぐち一般ならぐちスレだろ。 ……あれ、ぐちスレ5/2で止まってるな……ありえん
>>396 >固定長の
幾らなんでもそれは阿呆というもの。
>銀行、信金、公共団体、いろいろやったが
どこがまともだ。
409 :
338 :2006/05/05(金) 23:30:46
410 :
仕様書無しさん :2006/05/06(土) 00:42:05
DBがボトルネックになる案件がなぜ多いかよくわかるなー。 ISAMの概念をRDBMSに持ち込むコボラ氏ね。 ID列はNUMBERにしろ。
サロゲートキーの採用は賛成するが、 NUMBER型というのは異論ある。 GUIDとか、UUIDとか、とにかく完全ユニークな値を用いるべき。 NUMBER型では、いつか終わりが来る。 そして、その終わりは、たいてい最も着てほしくない時に訪れる。
ソースは読めてもスレタイは読めねーのかおめーらは。
>
>>413 ちっ、気づかれたか。。。
でも、google で検索かけるとヒットしてしまう不思議。
だってコードってのは結局支店名に隠しフラグを含ませてるようなものだもの。 支店名そのものはフラグないからコードを使う。 そのコードがNUMBER型である必要性は? DBが重くなるとかそういう理由は 「うちのシステムはそんなにやわじゃないから心配しなくてもいい」と一蹴される。
416 :
仕様書無しさん :2006/05/06(土) 11:37:08
システムのかなりコアな部分のCプログラムの話。 0か1しか値をとらないデータ列をint型配列で実装していやがった。
417 :
仕様書無しさん :2006/05/06(土) 11:49:36
それでいいじゃん
書き換えが頻繁だったりデータ量が多かったりしたら、それって嫌だな -> 416
>416 それぐらいいいんじゃね? その配列の要素数が 10000 を超えていたりするようならば、 さすがに考えるけどな。
420 :
416 :2006/05/06(土) 11:55:50
要素数は2000^2。
bool配列とかにすればいいの?
422 :
416 :2006/05/06(土) 12:13:43
ビット演算、もしくは、値が1の要素の添字の保持が定石だと思う。
423 :
仕様書無しさん :2006/05/06(土) 12:22:00
ビット演算ってint配列以外でできるの?
424 :
仕様書無しさん :2006/05/06(土) 12:43:21
>>422 値が1の要素の添字の保持って値1が多いと効率悪くない?
並べ替えもしないといかんだろうし。
std::vector<bool>
システムプログラミングとかだとそこまでのチューニングが必要になるのだなぁ……。 必要なフラグの数がXだとすると、メモリ確保はchar flags[(X - 1) / 8 + 1]でいい……のか? 直接bit flags[X];とか書きたいもんだ。
427 :
仕様書無しさん :2006/05/06(土) 13:03:41
>>416 やれやれとは思うが、辞めようとまでは思わんな。
オブ厨としては、データがビット配列でも直感的に操作できるようなメソッドが用意されてりゃいいや 何のフラグを操作してるのか一々仕様書とか見るのはめどいし
>>428 オブジェクト指向でなくても、マクロとか関数とかよういするだろ。ふつー。
普通なら
>>426 拡張STLにbitって型なかったっけ?
>>431 bitsetてテンプレートクラスがあるね。
vectorにもboolの特殊化版があるっぽいし。
ただ、どっちもC++の話だわな。
433 :
仕様書無しさん :2006/05/07(日) 05:51:55
boolって内部でビット演算してるの?
434 :
仕様書無しさん :2006/05/07(日) 09:21:28
CHARを主キーっておかしいよな。
>434 おかしいなら、なぜ制限されていないのか考えてみれ。
>>433 boolはintにダウンキャストされる。
って仕様で定められてた気がする。
NUNBERか何かで別途候補キー持って、支店コードやらなんやらがくっついたコードはそれぞれカラムを分割するのが筋なんじゃないの? 人間が分かりやすいよう設計したコードをDBの世界に持ち込む意味がわからないんだが。 なんて、DB設計などしたことないヘタレプログラマな俺がいってみた。
“DB設計などしたことないヘタレプログラマ”とやらが口を挿む意味がわからないんだが。
“DB設計などしたことないヘタレプログラマ”が推測で答えてみる。 「合わせることで一意になる」コードなら、分割すべきじゃないケースもあるのでは?
>>439 代替キーとか複合キーとかって知ってる?
地域(2桁)支店(3桁)部署(2桁)
固定長のコードがあって、それが上のような構造だとすると、
DBのテーブル上は意味ごとにカラムを分割すべき。
固定長レコードのファイルで送られてくるデータから一つずつ
切り出すのマンドクセとか言う理由で結合してるならその設計者の無能っぷりが伺える。
検索のSQL書くたびにsubstrとか使ってられねorz
>>440 持つべきときは持つし持たなくてもいいときは持たないよ。
主流の表なんかは両方持ってたりするし。
固有ID(地域コード+支店コード+部署コード)、地域コード、支店コード、部署コード
>boolはintにダウンキャスト ごく一般的な形のキャストはそう呼ばないんちゃう?
>>436 ダウンキャストじゃなくて integral promotion だな。
ちなみに日本語では「汎整数拡張」とかなるらしい。
しかも
>>433 とは関係ない。
>形 型ぢゃね?
>>444 「ごく一般的な型のキャスト」って、意味わかんねーよ。
まぁ元々キャストでもないから「ごく一般的なかたちのキャスト」でも的外れなわけだが。
ダウンキャスト、って基本クラスから派生クラスの型に変換する場合だろって話では? 心のかたち 人のかたち
うねうねうねうね
>441 整合性を保つ仕組みは必要だが、よくあることではある。 あとで固有コードと、ばらしたコードがずれたり、重複して泣くけどな。
449 :
仕様書無しさん :2006/05/09(火) 22:07:43
WHERE句で比較するフィールドがNUMBERの場合とCHARの場合で速度差ってあるの?
>>449 まともな DBMS と、その DBMS にとって常識範囲内のデータ量という条件で、
かつきちんとインデックスを作っていれば、そうそう差は出ないでしょうね。
>>449 可変長、サイズ指定の固定長、型によりサイズ固定なんかで変わるし、
さらにNUMBERとCHARの格納されている実際のバイト数とかも関わるし、
格納・比較方法はRDBMSに依存するので、とても一言では言えないかと。
452 :
Mb :2006/05/09(火) 22:42:36
>>410 > DBがボトルネックになる案件がなぜ多いかよくわかるなー。
> ISAMの概念をRDBMSに持ち込むコボラ氏ね。
Codd のRDB 理論にはDatabase Key という概念があったはずだが、
それを知らずに正規化を行なってめちゃくちゃな構成になってる
システムがやたら多い。
『楽々ERD』といういい本が出たので、それくらい読んでおいて
ほしい(なお、べつに宣伝でもなければ、著者から頼まれたわけでも
ない。つーか漏れが言っても褒め殺しにしかならん)。
言っとくけどISAM とRDBMS は別次元の話。ISAM はそれなりに重要。
RDBMS の実装には関係するが、RDBMS という概念とはまた別物。
MSSQLだとID列はINTが普通じゃね?
>>453 何かの練習問題ならINTにしてるけどたいてい練習問題って
列の種類がそれだけで済むからね。
456 :
仕様書無しさん :2006/05/13(土) 02:32:43
javaなんだけど無意味なsynchronized文がいっぱいある。 別のスレッドが他のスレッドで動作しているローカル変数にはアクセスできないことに気づいて・・・ static void method1 (){ Object obj1; synchronized (obj1){ 処理がいろいろ } ; }
5月から参加してるメンテナンスの仕事、 1つの関数内で同一のローカル変数が ・インデックスカウンタ ・人数 ・条件フラグ と使いまわしされてる。 プログラムの修正で変数を増やすのに一々書類を書いて モジュールの使用総メモリを申請しなければならないルールを かいくぐる為の「クールな」手法らしいんだけどorz
>>457 そんなルールがあるのならば、
確かに「クール」な方法かもしれんな。
でも、そもそも使いまわせる変数ならば
別の変数として確保しても、
使用総メモリ数は変わらないような・・・
ってか、そもそもレジスタに
マッピングされるんじゃね?
>>
>>457 漏れが3末から火消しで入れられたプロジェクトもヒドイ。
Java+Oracleの案件だが、テーブルからデータを取得する際、
マスタから名称も取ってきて表示するのだが、
リレーション使わず、テーブルのレコード数分ループ回して取ってきてたりする。
クラス設計もいい加減、共通処理もほとんどなく、同じ処理が何度も現れる。
Web案件なのにHTMLも分からないと言われ、
試験結果の資料もない。
疲れた…orz
>>449 主キーを数値型(4バイトを想定)ですむところをchar(8)にした場合、
インデックスのブロックに入るレコード数が半分になるので、
物理読み取りの回数が倍になる。
だから差は出るんじゃないの?
「使用総メモリを申請しなければならないルールをかいくぐる為」なら 実際にメモリ確保している変数は1つでも そこを参照する変数 >・インデックスカウンタ >・人数 >・条件フラグ を必要な数用意すれば?
>>462 そんなムズかしいことしたらこーどがよめないひとがいるだろ!
それぐらいくうきよめ!
Private Function Mona() As Boolean Dim bRet As Boolean = False If expr1 Then Return bRet Else ……… End If If expr2 Then Return bRet Else ……… End If If expr3 Then Return bRet Else ……… bRet = True End If Return bRet End Function 改善の際にexpr3の条件式が不要になったんだが、 直感的にIfブロックをまるごとコメントアウトしてひどい目に遭ったorz
>expr3の条件式が不要 ' If expr3 Then If False Then Return bRet Else ……… End If じゃねの、普通?
>>460 》リレーション使わず、テーブルのレコード数分ループ回して取ってきてたりする。
SELECT文を投げたりしちゃダメ?
467 :
仕様書無しさん :2006/05/15(月) 12:09:49
Javaなのに、DBからデータ引っ張ってくる際にまず、 select count(*) from hoge 投げて配列長を取得して、配列を確保して select fuga from hoge みたいにして、配列に入れていた。 ArrayList使おうよと思った。 そもそも、ロックもかけていないので一つめのSQLと二つめのSQLの間に ほかのユーザがInsertとかDeleteとか投げたらどうするの?と思った。 しかも、一つSQL投げるたびにコネクション接続&切断。
>>467 >select count(*)
これが既に嫌だ
>>467 ロックかけてないのは不味いだろ・・・・・・
>>468 主キーに索引張ってあったら問題ないと思うけどな。
>>469 分離レベルがSerializableかもしれんよ。
と思ってよく
>>467 をみたらひとつクエリ投げるたびに接続しなおしてるのか。
これじゃだめだね。
>>470 プライマリーキーはなかった。
代わりになぜかユニークキーが張ってあった。
NOT NULLであるのにプライマリーキーでなくユニークキーでなければならない理由が知りたい。
>>471 PRIMARYのつづりがわからなかった。そしてUNIQUEは覚えてた。
>472 ソ レ ダ !
>>472 いや。
Excelでカラム名などが入った設計書らしきものが送られてきた。
で、表の中にkeyという謎な項目があったのでこのkeyというのはプライマリーキーということでいいか?
と問い合わせたところなぜか、ユニークキーだという回答が。
NOT NULLだし一組しかないのだから、プライマリーキーが自然じゃないかと思った。
というのは、同一プロジェクトの新規テーブルを作ったときの話。
keyで検索したらユニークキーが最初に出てきたとか。 そしてそれを見ながらコピペ。
DB板の受け売りだが、オラクルでもPKが実装されたのは バージョン6くらいで、それまではNOT NULLかつ ユニークキーで実装していたらしい。 だから昔の名残じゃないの? 別に害はないしこれでも悪くない(良いわけでもないが)と思うよ。
not null かつ ユニーク (かつ インデックス) で、 プライマリキーと同じだな。 あとは意味的な役割か。
switch( id ){ int a; ← 注目 case 1: 処理 break; : : default: break; } こんな感じで変数を宣言つる香具師がいるのでつが、どう考えても変態でつよね。
はいはいqsortの使い道もわからんキチガイは失せろ
>>478 冒頭でしか変数を宣言できないC言語の仕様の回避と
変数領域を節約するテクニックとして聞いたことはある。
変態呼ばわりはちょっとかわいそうだが、今日的でない
のも確か。
その文の中でしか使わない一時変数が欲しくなったときには ついついやっちゃうかも。
どこが問題か全く解らん。 例えそれが使われないとしても。だ。
揃いも揃って気狂いコテに釣られんなって
484 :
仕様書無しさん :2006/05/19(金) 00:11:29
やめようと思ったわけではないけど, Cのソースコードのコメントに何の脈略もなく 好 き だ って書いてあった.
杉田のtypoだな
杉田でも意味わかんねーよ
過ぎた かも
>>490 例えば、switch 文抜けた時に関数を呼んだ場合とか。
>>478 マジレスすると…
普通のブロックでならむしろ推奨。
変数のスコープを制限して保守性を高める。
ただし switch の先頭というのは却ってスコープが分からなくなるのでよくない。
こんな感じに書くこともある。
switch (id) {
case 0:
{
int temp;
//処理
} //ここでtempの寿命終わり
break;
//...
}
switchでスコープ分からなくなるとかどこの素人ちゃんだよw
いまだにStringTokenizer 使ってる香具師がいる……
496 :
仕様書無しさん :2006/05/20(土) 14:40:51 BE:124808055-#
>>492 ブロックを抜けて、その中のauto変数の分だけスタックフレームを縮める処理系なんてほとんどないと思うけど。
>冒頭でしか変数を宣言できないC言語の仕様の回避 まぁこれに決まりだろうな なんで最初にすべての変数を宣言せにゃならんのよって ...長い関数にしなきゃ全然問題にならないんだけどね
498 :
仕様書無しさん :2006/05/20(土) 20:02:09
>>495 String#splitを使えってことか?
StringTokenizer自体deprecatedにはなってないんだが・・・
{ } でローカルブロック作ってたらよ、 よくわかって無いやつに消されたわけだよ。 でエラーになるわけだよ。 でエラーを回避するためにメソッド先頭に移動されたんだよ… なにしてくれてんだうらぁ。
>>498 少数の整数部と小数部を分けるのに、"." をデリミタに指定して
StringTokenizer を使っている(もちろん while ループを
hasNextToken() で回しているのだ)プログラムがあり、
作成日付を見ると、つい最近の日付だったりするのだ
(つーか indexOf で十分じゃねぇか?)。
J2SE のバージョンが 1.4 になり、正規表現がサポートされて
漏れがStringTokenizer を使うのを止めた後に生まれた娘が、
もう幼稚園に通っているのだがな。
>>499 漏れも同じような経験があるものだから、
for (Iterator <Hoge> itr = list.iterator(); iter.hasNext(); ) {
Hoge hoge = iter.next();
....
}
とかいった不本意なスタイルを使ってイテレータを閉じ込める
破目になっている……
これも慣れりゃあどうってことないんだが、お世辞にも判りやすい
コードとは謂えんな。
VB4で。 Global i 吐いた。
502 :
仕様書無しさん :2006/05/21(日) 00:18:29
>>501 あるあるwwww
ちょっと昔はそれが普通だったんだよな
>501 ガクガクブルブル
>>501 うむ、iは多用されるし型もほぼ同じだから共有するのは良い案だな。
そうなると、あとはjとkも欲し(r
反復構文の制御変数の共用ねぇ 自分にはそんな事してちゃんと動くプログラムを書けるとは思いませぇん
最近、無粋なボケ潰しが、どの板行っても多いな
厨度があがってるんだよ。ネタをネタと
そっとしておいてやれ
>>506 ボケがくだらな過ぎ&手垢がついてるんで
そうそうに潰して置くのは悪い手ではない。
というくだらな過ぎる&手垢がついてる言い訳ですか。
くだらないんならスルーしろよ。マジレスしといて何言ってるんだか。
そうそう、こんな感じ。 大概空気の読めないマジレスが投下されると、空気がおかしくなりはじめ、 そこでマジレスクンが必死で言い訳すると、スレの空気が一気に悪化する、と。 最近このパターンが多いんだよな。 これこそ見飽きるほど使い古された悪手のような気がするんだけどな。
あくしゅが好きな人もいるんだよ
汗ばんでると嫌な感じだけどな
>>512 >スレの空気が一気に悪化する、と。
それこそどうでもいいなあ。
馴れ合いたいなら別の場所へどうぞ。
もういいってお前。
517 :
仕様書無しさん :2006/05/22(月) 20:49:52
if (hoge.equals("")) { 処理A } if (!hoge.equlas("")) { 処理B } とか平気で書いてあるんだが、elseを使わない理由ってあるんか?
その情報だけで聞かれても、 処理Aの結果が二番目のif節に影響あるんじゃね、とか、なんとでも言えそうな
>>517 length() 使わない理由は?
null 判定までしたいときは "".equals(hoge) とかやるのがいいらしいけど
グローバル変数しか使えないクソ言語で、i と ii と iii 、j と jj と jjj 、 k と kk と kkk が使われていたのなら、見た事ある。
switch文が1K
'落ちたー iCount As Long 'Integer
同種で 'Overflowの可能性があるので修正 XXXX/YY/ZZ ○○ intCount As Long 'Integer とかなら見たことある
・string型は遅くなるので使用禁止 ・スマートポインタは遅くなるので使用禁止 ・vectorのpush_backはコピーが発生するので使用禁止 あのー、サーバプログラムと聞きましたが… もしかして、サーバってのはブレードじゃなくてただのタワーPCですか?
>524 それはつまりC++コンパイラは使うがCで書けということですか?
>あのー、サーバプログラムと聞きましたが… >もしかして、サーバってのはブレードじゃなくてただのタワーPCですか? お前の突っ込みも意味分からんよ。
527 :
仕様書無しさん :2006/05/23(火) 11:11:27
ささやかなネタだが、 受け持ったモジュール、Webやおまけディスクのサンプルを朴って つぎはぎした箇所がかなり多くて、当然コーディングスタイルも 変数なんかのネーミングルールも統一されてなくて、なんかいや。
ほとんど同じ処理のロジックが if分岐で記載されている 1パターン動いたからコピペしてそれをif分岐で処理させたのがバレバレで その各処理内容が3〜4Kステップある、、、。 コピペで作られてるならそれていいので 一応、例外が無いか全ステップ確認してくれと言われた。。 泣きたいんですけど、ないていいですか?
529 :
仕様書無しさん :2006/05/23(火) 22:53:25
>520 Cでグローバル変数使ってそれやってるの見たことがある
>528 泣きなさ〜い〜♪
531 :
528 :2006/05/24(水) 00:23:00
>>530 さらに似たような処理のcase文やif文がうじゃうじゃあり、
ソースコードの確認のみでもうすぐ3ヶ月経過。。。
鬱だ
早く契約切れろ!!!!!!って怒る気すら失せた
もう生き地獄だ。
新規製造で入ったはずなのに、、、、。
契約ってところで、一番泣いた
>>531 作り直したほうがよさげ・・・
って悪魔のささやき
>>528 それぞれの処理を別ファイルにして、diff取ればいいんジャマイカ?
535 :
528 :2006/05/24(水) 00:40:39
>>533 作り直す為の既存の確認でやってるんですが、、、。
予算確保に失敗し、新規製造(作り直し)の話は無くなり、そのまま保守業務へ、、、。
もう死にたい。。
537 :
仕様書無しさん :2006/05/24(水) 00:43:57
>>534 ロジックを理解し、さらにソース解析結果をレビューという形で
報告せねばなりません、、。
なので、ソースを理解しておく必要があり、diff結果のみとは逝きません。。。
>>537 誰もdiffの結果のみをそのまま提出しろ、とも言ったないだろ。
解析すべき箇所が少なくなるかもしれない、と言っているんだ。
>>537 diffとって比較済み?
それとも想像もできないような大量のソースコードなのだろうか・・・
>>538 実際にはそうしています。
diff結果のみの提出とは逝かない。という意味でした
すいません
diffを取ってからめぼしをつけて、差分のみソース解析に入ってますが、、、
それでも激しくウンザリです、、。
ハ_ハ ハ_ハ (^( ゚∀゚)^) ('(゚∀゚∩ ) / ヽ 〈 (_ノ_ノ ヽヽ_)
「飛び込めばなんとかなるよ!」「なるよ!」 かな?
/* 16進数を2進数の文字列に変換する */ char *cMakeBinStr( long lArgv ) { char *cAns; if( lArgv == 0x0001 ) strcpy( cAns, "0001" ); if( lArgv == 0x0002 ) strcpy( cAns, "0010" ); if( lArgv == 0x0003 ) strcpy( cAns, "0011" ); if( lArgv == 0x0004 ) strcpy( cAns, "0100" ); if( lArgv == 0x0005 ) strcpy( cAns, "0101" ); ・ ・ ・ if( lArgv == 0x000f ) strcpy( cAns, "1111" ); return cAns; } えーと、どうしてくれようかorz
毎朝 printf の書式を暗唱させる。
0xffffffffまでの全ての組み合わせを書かせる
せめて0xffまで対応しろよと(違
つうか、メモリ破壊ちてるでちょ。。。。。。。。。。。。。
0x0000には対応しなくていいんだろうか……
>547 つうか、さっさと死んでちょ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
>>543 ほどひどくはないが、Perl でわざわざ十進→十六進変換をがんばって実装してた 100 行はある先輩のプログラムを見てしまった。
らくだ本を読ませたかった。
>>550 あーなんかわかるなー。車輪の再発明すらせず力任せな解決法。
その昔、select()を知らずに複数のrecv()をタイムアウトでループさせてた奴がいたな。
しかし十進→十六進って、Perlの得意技じゃん。
552 :
仕様書無しさん :2006/05/30(火) 09:28:34
>>550-551 いくら力任せ/車輪の再発明とはいえ、
10進→16進変換ごときに100行は必要ないと思う。
きっと、突っ込み所満載なんだろうな…(w
554 :
仕様書無しさん :2006/05/30(火) 11:07:56
const char Renketu = '<'; const char SuperRenketu = '/'; public const char SpecialRenketu = '-'; bool renketued; ('A`)
Javaで、 ProcessA(); ProcessB(); ってメソッドにまとめた処理を2つ逐次に行っているのがあったのよ。 ProcessA()で処理したデータを一時ファイルに書き込んで、 ProcessB()でその一時ファイルを読んで次の処理を行う。 これを書いた奴の環境では動いたらしいんだが、 俺の環境に持ってくるとどうもうまく行かない。 二つの処理の間にSleepをはさんだりすると、ちょっと挙動が変わる。 問い詰めたら「マルチスレッドにした覚えはないんですけどねぇ」とか。 よくよくソース読んでみたら、開いたファイルを閉じていなかった。 GCがありゃ何でもかんでも作って放置でOK、って考えらしいな。
>>555 >GCがありゃ何でもかんでも作って放置でOK、って考えらしいな。
考え方って訳じゃないだろうけど、そんな奴はいる。
webサーバーでしか通用しないけど、フィルター作ってハンドル管理してみました。
557 :
仕様書無しさん :2006/05/30(火) 15:07:11
>>554 > bool renketued;
ワラタw 「連結された」って意味か?
[Java] try{ 省略 if(条件){ return true; }else{ return false; } }catch(Exception eee){ throw eee; }finally{ return false; } おい!なんかおかしいと思ったらこのメソッド false しか返ってこねーよw
>>558 finally節にreturnて書けるのか…
知らなかった…
>>543 隣の席のやつの話。
測定器からデータをもらう処理で、エラー値の各ビットに
それぞれエラーが割り当てられてるという仕様らしかった。
if (err & 1) ... エラーA
if (err & 2) ... エラーB
if (err & 4) ... エラーC
...
こういう感じ。
でも、エラーの値が"0C"みたいにテキストで渡されるから、
ビット演算ができない。
if (strcmp(strErr, "01"))...
if (strcmp(strErr, "02"))...
...
全部のエラーに対応するには255通りのifを書かないといけないって、
騒いでた。
561 :
仕様書無しさん :2006/05/30(火) 20:00:43
RDBのテーブルを、データファイルのように考えてる プログラムがCREATE TABLEとDROP TABLEばっか 画面ごとに表示データのをその都度ワークテーブル作って スキーマ内、ものすげえのテーブル数 ER図も作れないし、統計情報も取れねえからパフォチューも何も無い ストアドプロシージャ使ってるのに動的SQLしか使えねえ SPが全然意味なし しかも、仕様書がなんにもねえ 古株PG曰く「作れないよ、このシステムは」って開き直ってやがる つーか、おめえはいい歳してドキュメントもまともに書いたこと無いんだろ!
ドキュメントがない ソースには引数のコメントは書いてあるが、クラスやメソッド自体の機能説明が書かれていない 全面改修の案件で全てのソースを追わないといけない・・・('A`)
563 :
仕様書無しさん :2006/05/30(火) 22:07:46
独自パッケージを持ってるとかだったが 要は最初にどっかの客に作ったシステムの 一発物のソースをひたすらコピーしてるだけの代物だった 画面を立ち上げる際の関数の引数で CASE分岐で処理分岐してる 新規客の度に機能追加しててものすげえ 全然訳わからねえ 全然、パッケージじゃないし、しいていうなら なんとなく共通なソース群があってそれがそうかもしれない
コードじゃないんだが、 vertical-align: left;
>>564 ちょwww
text-align 違いwww
566 :
仕様書無しさん :2006/05/31(水) 00:23:13
JAVA。 スレッドを多数生成する部分のコーディングをチームでやっていたのだが、 少しずつ部品を実装するうち、ある日突然テストする際にCPUの使用率が100%になった。 調べてみるとスレッドの待機処理のところにこんなコーディングが・・・ try{ w = (待機時間を取得するメソッド) Thread.sleep(w); } catch (Exception e) { //何もしない //System.out.println(e); } 待機時間を取得するメソッドの戻り値をうまく型変換できずに必ず例外が発生していた。 単体テストをやったんだろうか?とも思ったけど、やったからこそわざわざコメント入れて 例外の表示を消したんだろうな・・。
おかしくないか? 時間を取得するメソッドならlongとかjava.util.Dateとかで返ってきていいと思うんだが・・・ 待機時間取得メソッドの内部でExceptionが発生してるとかなら分からんでもないけど
>>564 コメント追記したくなった。
vertical-align: left; /* ガッツ石松 */
>>561 PGだからドキュ書けねーべ (*゚ヮ゚)
>>567 知らん。が、これを書いたヤツが相当DQNなヤツなので、
原因を深く(っつーかこれくらい見れば分かるだろうが・・・)
調べる前に諦めただけのような。
>>568 Stringで返ってきてたのをLongに変換していた。
メソッド自体はプロパティーファイルから値を取得するもので、返却値はStringに統一されていたため。
572 :
仕様書無しさん :2006/06/01(木) 01:39:54
>>500 >for (Iterator <Hoge> itr = list.iterator(); iter.hasNext(); ) {
って、たぶんJavaだと思うんだけど、Generics使えるなら、
Iterator使わずに、拡張for文を使えばいいんじゃないの?
どっちだって同じじゃん 結局forブロック内のコードが劇的に変わるわけでも無し そんなんどーでもいーよ
#define DEBUG 1 ... #if DEBUG == 1 ...本番コード #endif #if DEBUG == 2 ...デバッグ用コード #endif
#ifdef _DEBUG とかじゃないのか・・・
Microsoftルールに無用な拒否反応を示す人もいたりするので。
MSは #ifdef NDEBUG じゃなかったっけ?
NDEBUG は C 標準。 _DEBUG は MS の流儀。意味は反対。
NDEBUGは標準ライブラリにあるassertが見るくらい標準。
580 :
仕様書無しさん :2006/06/03(土) 11:04:07 BE:149769465-#
>578-579 しまった脳内で逆になってたorz
>>581 脳内でなく、脳そのものが裏返しになってないか、注意したほうがいい。
四次元の脳、出現か!?
イメージ的にはクラインの壺だろうか。
発想を逆転するんだ 裏返しになるスタンド攻撃を受けても安心だと思えばいい
586 :
仕様書無しさん :2006/06/23(金) 10:51:12
System.setProperty()、getProperty() メソッド間の値の受け渡しでコレ使ってるのは初めて見たよ・・・。
俺のソースを読んだやつは辞めたくなると思う。 でも元から辞めたくなるソースだったんだよ。 次のやつも辞めるだろうな・・・
キッタネーコードを引き継いでメンテすることになった。 バージョン管理すらされてなかったのでとりあえずsvnに突っ込んだのだが、 今後漏れの名前のコミットしかなくて、将来見た香具師が「原作者==漏れ」 だと思うかもしれないと思うと今から鬱だ。
ようこそ俺様
591 :
仕様書無しさん :2006/06/24(土) 00:07:55
前任者から引き継いだある条件文が集約されたソースで あるリテラル文字を含んだ部分を割愛したい処理で if(strstr(paramstr,"hoge1") !=NULL){ goto nullpo; }else if(strstr(paramstr,"hoge2") !=NULL){ goto nullpo; }else if(strstr(paramstr,"hoge3") !=NULL){ goto nullpo; ..... .... ... .... }else if(strstr(paramstr,"hoge185") !=NULL){ goto nullpo; }else{ prccount ++; } nullpo:; って永遠200行くらい続いていた。
インド人は右に
VB.NETで Try Try Catch ex as Exception Throw New ApplicationException("エラー") End Try Catch ex as Exception Throw New ApplicationException("エラー") End Try これをDllでやられた。 最初どんな例外で落ちてるのか、影も形もNeeeeeeeeee!
例外処理なんてもんはな、握りつぶす, とりあえず新しい例外を投げる、どっちかなんだよ・・・
>>595 ユーザーに伝えるのと、ラップして新しい例外を投げるのも選択肢に入れてください。
597 :
仕様書無しさん :2006/06/24(土) 22:29:57
/* 奴隷募集 時給〜5000円 カップラーメン支給 勤務地 首都圏各地 */
カップラーメン支給 ←これ重要
時給5000円確実に出るなら、結構イイナ
パッと見、高給っぽいけど実際は 時給0〜5000円だったりするからな
601 :
仕様書無しさん :2006/06/24(土) 23:04:53
0からなら法律違反なわけだが。
>>596 あとはログやらスタックトレースに投げておしまいあたりか・・・
まあまともな例外処理なんて・・・
catch(Exception e){} やっぱこれだよな
>>603 意味があってそういうことすることはあるが…。
( Ocaml のhashはキーが見つからないと、Not_found例外を投げて
くるので、意図的にもみけすことはしばしばある)
まあ、異常系の実装が先送りになっているか、本当にごまかしているか
のどちらかだな。
それを上回る catch(Throwable t){} やっぱこれはまずいよな
徹底的な先送り精神が伝わってきますな。いかにもわが国らしい。
>606 先送りなら catch(Throwable t) { throw t;} だろ あれはもみ消し。これまたいかにも日本的だがorz
意味があるなら、無視している旨(できれば理由も)コメントしておいてね。
>スタックトレースに投げて 詳しく
>>605 Map result = null;
try {
...処理...
result = ほげほげ;
} finally {
return result;
}
ネタじゃなく実話なのがツライ……orz
>>609 詳しくも何もprintStackTrace呼んで終わりだが何かあるのか?
609じゃないけど、ログいれようよ
スタックトレースに投げる って表現が新鮮だっただけだ、すまそ
catch(Throwable t){} return result; になってたら同じだけどな
javaって例外時でもfinaly実行後に例外消えるの? それともreturnの場合だけ特殊動作なわけ?
> 例外消えるの? はぁ?
そういや
>>610 のソースには catch が無いな。
>>616 例外による大域脱出は finally 節に入った時点でストップするみたいだよ。
結果、null が返る。
>>616 return だけ特別扱い。
というより正確にはfinally内にreturnを記述するのが×。(警告出る)
620 :
仕様書無しさん :2006/06/25(日) 22:07:25
>>616 そのあたりはjava言語規定を中途完了という単語で探すと色々出てくる
ちなみにreturnが特別扱いというわけでもなくてfinallyでreturnやthrow
するとそれまで発生する予定だったreturnや例外が捨てられるということ
621 :
610 :2006/06/25(日) 22:07:52
わかりづらくてスマソ。 finally節の中でreturnすると、tryブロック中でどんな例外が発生していても全て消えちまう。 つまり、>615と同じこと。 > というより正確にはfinally内にreturnを記述するのが×。(警告出る) 最近のコンパイラやIDEはfinallyブロック中のreturnに警告を出してくれるが、 ちょっと前まではそういう警告も出なかったのよ。 # 確かSun JDK 1.4.2やEclipse 2.1とかは警告を出さなかったはず。 仕方ないので、finallyで検索して必死に手で修正したさ。 そしたら、今まで闇に葬られていた大量のぬるぽが大発生して、 事態が収拾するまでさらに何日もかかっちまった。 もう、あんなソースは二度と触りたくない。
直感でぬるぽかと思ったがやはりそうなのか・・・ガッ
>直感でぬるぽかと思ったが このソースだけじゃ ぬる だが ぽ じゃねぇだろ?
いや、そんなことはないだろ でなきゃここに書く理由がない
あるだろ。問題は例外を潰していると言うことで nullを返却する所は二次的な物
例外起きてるのに何かしようとするのは間違いでしょ。 (例外処理中にまた例外が起きる可能性がある) それでも何かしたい時、例外を握り潰す以外何をしろと。
>>626 例外起きてんなら素直にそのまま投げろよ、糞グラマ。
自前で処理できないからってこっちに投げてくるんじゃねえよ糞
ほ
632 :
614 :2006/06/26(月) 00:38:42
>>621 そか、なるほど、勘違いしてた。すまそ。
たまにtry,catchとthrow知っててもthrowsリスト知らない人いるよな
mainにthrows
>633 その逆もみたことあるけどな。 634の言うように、 throws Throwable のみ。
稼動済みプログラムのソースにてハケーン。 本日の日付以後のみ選択可にする判定。orz if( CalanderDate.getFullYear() >= TodaysDate.getFullYear() && CalanderDate.getMonth() >= TodaysDate.getMonth() && CalanderDate.getDate() >= TodaysDate.getDate() )
よくそれで動いてるな
いや、さすがにこれは動かないだろ。
月またぎ、年またぎがなければ問題ないな そういう運用方法にすればいい
641 :
仕様書無しさん :2006/06/27(火) 22:39:15
CalanderDate.getDate()はCalanderDate.getDay()のがいい希ガス
いや、このスレに出てくる例は、どういいとか言い出す以前だから
いや、わかった上であら捜ししてるんだと思うし
今所属しているプロジェクトがかなり暇なので新人の教育担当をやらされることになりました。 本日新人が配属され教育が始まりました。 新人たちは5〜6月にJava研修を受けていたらしいですが、確認のためかなり簡単なJavaの課題を10問与えました。 新人が私のところに「どうしても1問目がコンパイルが通りません」と言ってきました。 私はコードを見ました。 class hoge{ public static void main(String args[]){ System.out.println(Hello, World); } } orzorzorz
本人にやる気がなくて「やらされてる」と思っているようではこんなもんだろ。 つまり、バカって事だ。
未経験者歓迎で採用するとそうなる
未経験者でもやる気がある奴はしっかり吸収するぞ。 ていうか最初は誰でも未経験者だけどな
>>644 大丈夫。そこまで書けるならまだまだ十分有望だ。
>646 たとえ未経験者だろうと,2ヶ月もの研修を経てアレだとヤバイだろ
>>644 それは、その新人さんの前に研修・教育担当者をクビにせんといかんな。
採用担当は?(´・ω・`)
その担当者をきめた上層部はみんな首だな
654 :
644 :2006/07/04(火) 23:18:07
慰めの言葉ありがとうございます。 ちなみに今日は自信満々でこんなコードを渡されました。 死にたいです。 class StartUp { public static void main(String args[]) { Customer cus = new Customer() ; cus.print(); } } public class Kokyaku { String code ; String name ; public Kokyaku() { code = "000001"; name = "○○株式会社" ; } public void print(code, name) { System.out.println(code) ; System.out.println(name) ; } }
コンパイルエラーじゃん
>655 多分その「自信満々」というのは 「先輩、これコンパイルエラーって言われるんですけど、間違ってないですよね? 」 という「自信満々」ぶりなのでは。 どうでもいいが>644氏、その講習とやらでJavaとJavaScriptとごたまぜに教えたりしてないか?
657 :
644 :2006/07/04(火) 23:42:37
>>655-656 どう考えてもコンパイルエラーなんだが、偽装した実行結果を添付して渡されたw
>>656 まだスクリプトとかそういう段階じゃないから
とりあえずオブジェクト生成させたくて、そのための例題
class StartUp {
public static void main(String args[]) {
Kokyaku kokyaku = new Kokyaku("000001", "○○株式会社" ) ;
kokyaku.print();
}
}
public class Kokyaku {
private String code ;
private String name ;
public Kokyaku(String code, String name) {
this.code = code ;
this.name = name ;
}
public void print() {
System.out.println(code) ;
System.out.println(name) ;
}
}
こんなのを書いてほしかったの
1〜2か月やってそれってのも才能がないとしか言えないが それすらできないのって教育係にも問題があると思うよ ましてや偽装って、マとしてより社会人として最悪 教育係共々クビにすれ
やっぱアホにはVBAでちょ。 これちかない。
>>654 > Customer cus = new Customer() ;
カスタマー カス イコール …
って読んでしまった
VBA使って、いざとなりゃAPI叩けば大概のことはできる…… そう思っていた時代が(ry
一体何を学ばせていたんだろう
おそらく、研修も捏造実行結果で乗り切ったんだな。
665 :
仕様書無しさん :2006/07/07(金) 09:09:59
>>655 仮に Kokyaku がちゃんと書いてあってコンパイルが通ったとしても
StartUp クラスは実行できない。Customer クラスがどこにも書かれて
ないから class not found だ。
666 :
仕様書無しさん :2006/07/07(金) 09:25:18
コンパイルエラーか 他社の人からリリース用に渡されたコードもらってコンパイルしてみたら 普通にエラーがでていたなあ 速攻つきかえしたけど
>>664 宿題は写すもの
試験でいい点さえ取れればいい
と言う考え丸出しだな(w
668 :
仕様書無しさん :2006/07/07(金) 16:32:20
前 協力会社が書いた関数が長すぎてCコンパイラがcore dumpしたことがあったなあ ... 分割してお願い orz
>>668 それは凄い。
俺は昔全てが main() に書かれた学生が苦労して作った作品を見たことがあるが、
それはコンパイルが通ってちゃんと動いたから、まだまだそれには及ばないという
ことだったんだなあ。
判読に苦労した。既に作品と呼んでも差し支えないであろう。
#pragmaが#preagmeは笑ったな
>>649 うちは3ヶ月研修あったが糞もいいとこだったな。
PCの立ち上げ方から始まった。研修中ソースを書いたことなし。
あとは好きに想像してくれ。
初心者が変なコード書くのは当たり前だからなぁ もう少し際どいのが見たいぜ
同じ処理の大量コピペはもちろんのこと、 何十ものプロパティがある上に内部クラスまでごっちゃり作ってあり、 DBアクセス処理でSQL構築する所は度重なる追加修正により 分岐しまくりつつコメントだらけで一体どこが本文で どんなSQLが出来上がるんだか一目見ても分かりゃしない。 そんなカオスというか生命のスープというかビッグバン直前なクラスに遭遇した。 誰か助けてorz
if( hoge!=1 || hoge!=2 || hoge!=3 ) { hoge = DEFAULT_VALUE; } こんなんばっかり('A`) && を || にするだけで自然な動作になるんだけど、もう保守の状態にあるソースだからうんたら・・・ ログ見てみると作ったのはあなたですよ・・・と。 hoge が適正値のときのリソースが使われていない現状を見るともうね
>>661 そう考えると、VBAって、何から何まで用意されてる
C#やJavaよりは難しいよな〜とも思う。
if (0<=n && n<=9) printf(" %d", n); else if (10<=n && n<=99) printf(" %d", n); else if (100<=n && n<=999) printf(" %d", n); else if (1000<=n && n<=9999) printf("%d", n); すべてこんな調子。 負の値を表示する箇所では、ifの数が更に倍になってる。。。
>>678 意味不明・・・って思ったらスペースがトリミングされているのな
printf("%4d", n); をわざわざ展開しているのか…
これは引くね
>>681 引いたらこんな感じ?
printf("%-4d", n);
レイアウトの為とかじゃないの?わからんけど。 俺はどちらかというとifの記述内容にひく・・・
ホタテをなめるなよ!
お前は何を言ってるんだ >683
新人なんだろ
692 :
683 :2006/07/08(土) 18:55:41
何か変なこといったかなぁ if (n < 0); else if (n < 10) else if (n < 100) ... みたく書かないかなって思っただけなんだけど
誤解されるとめんどうなのど追記 フォーマット記述子の*も一応知ってはいるよ。
#define NUM_MAX_LEN 10 char buf[256]=""; itoa( n, buf, 10 ); int len = NUM_MAX_LEN - strlen( buf ); for(int i=0; i<len; i++) printf( " " ); printf("%d", n);
itoaは非標準関数だから無意味に使われるとやる気なくすよな。 とか、あえて一番どうでもいいとこに突っ込んでみたり。
おおー 多重ループから抜けるときー goto使うの嫌だからとー フラグをー 立たせてー breakしてー 外でもフラグ見てもう一度breakするのをー やー めー ろー おおー
必ず下に抜けるだけいいじゃないか と言ってみる
>699 goto使えない言語だとそれ封じられたら無意味に例外投げるしかない ってこともままあるんだがどっちがいい? あるいはそれだけのためにループの部分を関数に切り出して breakの代わりにreturnするか。 // そもそも多重ループなんぞ書くなと言われたらどーしよーもないが…… // アンタこれまでに仕事で一度も多重ループ書かずに済んできたのかい? と聞き返したい気もするなそれだと
>>699 俺もどうするか聞きたい
今後参考にするので
多重ループ書くことはあるが、その深いネストから 一気に脱出しなきゃならん要件にはぶつかったことがないな。
メインループ(){ ゲームループ(){ ステージループ(){ : if(全員死亡) ゲームループの外へ : } } } こんな時かな?
>>704 そのレベルで関数が分かれていないなんて、ありえない。
>701,702 ループを脱出したい部分の終了条件を満たすようにループ変数の値を設定すればいい。 多重ループを全部抜けたい場合はもちろん、多重ループのうちのいくつかだけを抜けたい場合も思いのまま。
ループ変数って余計分かりにくくなりそうだな
>>706 それって例えばfor(int i = 0; i < 10; i++)の中でi = 10;するって事?
(露骨に悪い例でスマンが)
「通常の終了条件を満たしたわけじゃないけど、
特殊な理由でループを抜けたい」
って意図をコードに盛り込めない点で好きじゃないなぁ……。
ラベル付きbreak;があるならそっち使いたいな。
それ以前に関数化でほとんど片が付くと信じたいが。
しかし多重ループ脱出って意外に悩んだ記憶無いな。
例外処理と並ぶgotoの最後の存在意義じゃなかろーか。
for(int i=0 ; i<HOGE && loop_flg ; i++) { for(int j=0 ; j<HAGE && loop_flg ; j++) { for(int k=0 ; k<HUGE && loop_flg ; k++) { if( var[i][j][k] == HOGEHAGE ) loop_flg=false; } } }
loop_flgの部分を括りだしたら何か出来るかな
for(int i=0 ; i<HOGE && loop_flg ; i++) { for(int j=0 ; j<HAGE && loop_flg ; j++) { for(int k=0 ; k<HUGE && loop_flg ; k++) { for(int l=0 ; l<HUGE && loop_flg ; l++) { for(int m=0 ; m<HUGE && loop_flg ; m++) { for(int n=0 ; n<HUGE && loop_flg ; n++) { if( var[i][j][k][l][n][m] == HOGEHAGE ) loop_flg=false; } if( l<HUGE ) loop_flg=true; } if( var[i][j][k][l] == HOGEHOGE ) loop_flg=false; } if( var[i][j][k] == HOGEHAGE ) loop_flg=false; } } }
とりあえず変数名に"l"は使わないな
変数名のiとjの区別が付きにくくなってきた今日この頃。 失明するのは時間の問題か。
見やすいフォントを使いなされ
715 :
706 :2006/07/10(月) 23:52:46
>>708 goto が使えなかったりする場合の最後の手段ということで。
>706 その場合だとむしろ699のアプローチを取ってしまいそうな俺ガイルorz まぁ、多重脱出がものすごく例外的な実行パス上の話だったらやらんけど。 (意味的に「どの条件がループの肝なのか」ってとこのさじ加減で)
717 :
仕様書無しさん :2006/07/11(火) 15:55:05
>>701 goto が使えない言語で尚且つ多重ループからの break も不能な言語って何て言語?
>>713 大きいディスプレイに低解像度で表示するとよい。
>>717 日本語かな?
gotoによる即結論はだめで、話の多重ループからの脱出も不可能。
720 :
仕様書無しさん :2006/07/11(火) 16:16:24
フォントを変えればいい
>>713 俺はii jj というふうに二つ続けてる
ijiijiijijjijjjijijiijiiiiijijijiiijijijijijijijijijiiiijijiji
723 :
仕様書無しさん :2006/07/11(火) 18:16:46
flag |= HOGE_MASK; LOOPXX: if( flag & HOGE_MASK ) != 0 ) { /* このように記述しないと */ goto LOOPXX; /* 正しいコードが出力されない */ } 某大手メーカーがハードの検査用プログラムとして出していたものだが コメントで笑わせて貰った。 少なくとも組み込み系なら常識だと思うのだが…。
印象に残ったスレへどうぞ
>>723 括弧が対応してないから正しいコード以前にコンパイルが通りませんよ。
> 括弧が対応してない
727 :
726 :2006/07/11(火) 18:38:36
ごめん間違えた
>>723 括弧が対応していると脳内で補完して読んでも、無限ループに入ることが気になってしまう。
結局間違いだらけで、何が組み込み系の常識なのかわけわかめ。
HOGE_MASKが0なら抜け……る?
別のタスクが flag を書き換える (HOGE_MASK で 1 になったビットを落とす) 筈なので それをビジーウェイトしている、ってだけだ。 ただ、普通はそんな事で goto など使わない。
コメントを入れないとコンパイラがバグるんだろう。gotoは偽の手がかりだ。
732 :
730 :2006/07/11(火) 22:59:20
…コメント読んでてふと思ったんだが、 while (flag & HOGE_MASK) ; /* wait for reset */ これだと最適化で消えてしまうから goto を使ってる、って事なのか? flag が volatile でもそうなるなら、それはしょうがないかも…
>729 もちろん抜ける。GMASKで除去できるのでもおk。 でも、マスクかかってるなら、それはそれで なんかいろんな事妄想しちゃうよね。
734 :
723 :2006/07/12(水) 10:00:34
すまん、括弧が対応してないのはこっちのミスだわ。
結論としては
>>730 が言ってた通りなのだが、
flagが、volatile されてないんだよね。
コメントとその事実を総合して考えると、こいつvolatile の
使い方知らないんじゃなかろうか?って事で笑えたわけだ。
入力画面→入力確認画面→修正ボタンで入力画面へ ありがちな遷移だが、これを何度も繰り返すと特定の文字が増えていく・・・ ありがちなバグだが、10年もの間なんで誰も気づかないんだよ
俺の書いたソースを見て、 一体何人の人が退社を決意してくれただろうか。 これからも頑張ってソースを書き続けて、 より多くの人に幸せを授けたいと思う。
そんなことより、この俺のソースコードを見てくれ。 こいつをどう思う?
すごく・・・スパゲッティです
_ □□ _ ___、、、 //_ [][]// ,,-―''':::::::::::::::ヽヾヽ':::::/ // \\ // /::::::::::::::::::::::::::::::i l | l i:::::::ミ このスパゲッティを  ̄  ̄  ̄/ /:::::::::,,,-‐,/i/`''' ̄ ̄ ̄ `i::;| ―`―--^--、__ /:::::::::=ソ / ヽ、 / ,,|/ 作ったのは /f ),fヽ,-、 ノ | 三 i <ニ`-, ノ /、-ニニ' 」') i'/ /^~i f-iノ |三 彡 t ̄ 。` ソ ハ_゙'、 ̄。,フ | ) 誰だぁっ!! ,,, l'ノ j ノ::i⌒ヽ;;|  ̄ ̄ / _ヽ、 ̄ ゙i ) ` '' - / ノ::| ヽミ `_,(_ i\_ `i ヽ、 ∧ ∧ ∧ ∧ /// |:::| ( ミ / __ニ'__`i | Y Y Y Y Y ,-" ,|:::ヽ ミ /-───―-`l | // | | // l::::::::l\ ||||||||||||||||||||||/ | // | / ____.|:::::::| 、 `ー-―――┴ / __,,..-'| /゙ー、,-―'''XXXX `''l::,/| ー- 、__ ̄_,,-"、_,-''XXXXX | /XX/ XXXXXXXXXX| | _, /ノXXXXXXXXXX|
俺俺、俺だよ俺。
741 :
仕様書無しさん :2006/07/15(土) 16:53:44
volatile最強
ヴォァチェ
>736 やめるまではそのソースで地獄みるけどな
>>723 組み込み系のこういう処理って
間違って最適化されてる部分がぜってーありそうな気がする。
いやないから。。。。。
qsortの使い道もわからん無能はさっさと死ねって
コンテナでvectorしか使えない人、要素をループで検索するのやめてください。 せめてmap使ってください
こんてな ?
STLのコンテナでそ
>>747 やだ
たしかmapじゃランダムアクセスできなかったよね?
>>750 何を言っているのか解らんが
・vector … プログラマが決定した順序で、連続して配置される。
・map … 順序や連続性よりも、キー一発でアクセスできる事を重視。
まったく用途が違うんだが。
だから頻度も分からん検索のためだけに、mapを選択することはないって事だろ。
そこでわざとHashTable
stdextですね
755 :
仕様書無しさん :2006/07/17(月) 22:26:32
>>747 頭悪そう。きっと中卒か高卒ぐらい。かわいそう。
>>751 特定の使い方しかしないならそれでいいけど
色々な方法で要素を探さないといけない時はどうするの?
明確なキーがあるときはmapを使うだろ
try { hoge.exec() } catch(Exception e) { System.exit(0); }
>>757 複数の map と単一の vector を組み合わせるでしょう、普通。
「速度なんかどうでもいい、メモリを節約!」という場合は set とか。
複数のキーと条件の組み合わせで動的に検索する場合、vectorのテーブルを 毎回読み出して、map作るわけ?「○年○月○日以降生まれ」のように大小 比較とか、キーがユニークとならない場合mapは使えんと思うが? それと、マッチしたアイテムリストをレコードの任意の要素を選択してソート して再表示する時は?
そういう場合は、そもそもvectorなんか使わんと思うが?
>>761 わかってないのはお前だけだから心配しなくていいよ
>>761 赤面して打ち込んでそうだな
適材適所もわからんのか
multimap...
LinkedHashMap
なんだ、プログラムも書けない自称接待エンジニア(SE)さんばかりでしたか。
>>768 ああ、接待エンジニアでSEか。うまい。
山田君、座蒲団一枚あげて。
770 :
仕様書無しさん :2006/07/18(火) 19:39:04
いっしょうけんめい、がんばってべんきょうしているんだからよいじゃないか べつにせったいえんじにあでも、おまえらみたいなぎじゅつばかよりは かいしゃのやくにたつ。
い べ か ???
772 :
仕様書無しさん :2006/07/18(火) 21:24:46
> いっしょ > に > し の ??? 嫌でつ。
>いっしょうけんめい、がんばってべんきょうして >おまえら >のやくにたつ。 良い心がけだ。頑張ってくれ給え。
#include <stdio.h> int ret; int func1( void ) { ret = なにかしらの処理; return ret; } int func2( void ) { ret = なにかしらの式; return ret; } ほぅ、みんなが使うから使い回しか・・・
>774 多分func1()、func2()の戻り値を受けるのもretなんだろうな('A`)
/*ふぁいる1 */ int hoge1
途中で送信スマソ 最近こんなのがあった /* ふぁいる1 */ int hoge () { char str[10] ; ... なんかする ... hoge2(str) } /* ふぁいる2 */ int* p; void hoge2(char* str) { p = (int*)str; } /* ふぁいる3 */ extern int* p;
>777 ……それでそのプログラムは動いてるのかほんとに。 ふぁいる2、3のpを何処でいつ誰がいじるかに掛かってるわけか……
p = (int*)str; が素敵w
>>778 hoge2() はぢつはここでしか呼ばれてないから今のところ
大丈夫っぽい
>>779 str[0] しか使って無いから(w
ふぁいる3 はただ単に名前がかぶったんじゃないかと思う。
つまり他に int* pがあって、ふぁいる2 のint* pはもともと
char* p で、コンパイル通んなくてint にしてー、とか妄想
してる。
共用体の替わりなのかと思った
782 :
仕様書無しさん :2006/07/26(水) 14:57:14
SetとGet両方やるから合わせてセゲット
下駄と雪駄
下っ駄ーロボ
うおっまぶしっ
俺
グッジョブ
789 :
仕様書無しさん :2006/07/30(日) 07:35:16
排他してくれといいました。。。出来上がったコードは詐欺コードでした。 端折って書くとこんな感じ char g_dat[256]; int threadProc(void*) { CRITICAL_SECTION cs; InitializeCriticalSection(&cs); while(1) { EnterCriticalSection(&cs); g_datを変更 LeaveCriticalSection(&cs); if(なんとか)break; } DeleteCriticalSection(&cs); } 。。。使い方を理解してください、中年猿
この会社辞めようと思った電波な指示 #1
g_datを変更するときだけロックかけてるつもりなんだよな? しかしcsが関数内で消滅してるという
csをどっかに渡してるとか。
static CRITICAL_SECTION cs; にしておいて、初期化は 静的にやるようにしないといけないってことだよね。 POSIX Thread だったらこんな感じにしろってことだろ。 static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&m); /* 処理 */ pthread_mutex_unlock(&m);
g_dat 何に使ってんだよ!? じゃないの?
暇だしg_datは何を意味してるのか考えてみるか ゴキジェットはg_jetだし・・・
g_ 御苦労 dat だった
800 :
仕様書無しさん :2006/08/02(水) 00:21:47
でも、staticって初期化の順番が規定されてないからマルチスレッドの関数内で使うのは危険とどこかにあった。それにg_datはグローバルだから、g_datの同期(排他?)用のオブジェクトもグローバルにするのがお勧めな感じ。
g ゴゴゴ… _ 〜(中略)〜 dat だとォ!?
802 :
637 :2006/08/02(水) 00:52:47
やっと直ったので載せられるコード。 ユーザー側にインストールしたActiveXコントロールでオブジェクトを作ってる。 function DoClearLoginInformation() { //Try to stop Engine via WMI. try { var a = new ActiveXObject("xxxxx.yyyyy"); var b = a.CreateObjectSafe("WbemScripting.SWbemLocator"); var c = b.ConnectServer(); var d = c.Get("WIN32_Service=\"サービス名\""); d.StopService(); } catch(e) { } OnLoad(); }
>>800 C言語の場合は実行前に静的な値が入るだけなので問題なし。
問題になるのはC++の場合じゃないだろうか。
804 :
800 :2006/08/02(水) 12:54:26
社内の標準フレームワークだとか言っているDLLのヘッダファイル。 #ifdef _DLL_EXPORT class __declspec(dllexport) CommonUtil #else class __declspec(dllimport) CommonUtil #endif { BaseUtil baseUtil; public: … void SetVal(int val) { baseUtil.SetVal(val); } … }; これをincludeして CommonUtil::SetVal()を呼び出すと、BaseUtil::SetVal() の呼び出しにインライン展開されちゃうんだよね。 BaseUtilの実装部分はDLLに含まれているにもかかわらず、エクスポート してないんで、リンクエラーになるんですけど… で、みんなどうしてるかというと、BaseUtil.cppをコンパイルして スタティックリンクしてますww なにせ、インライン展開されてエラーが出るのがひとつやふたつじゃないんで… もう、何のためのDLLなんだかww しかもどうやら、DLLが作られたときのBaseUtil.cppと、手元にある BaseUtil.cppは微妙に違うらしい…。 ということは、インライン展開されて 呼び出されたBaseUtilの処理と、インライン展開されず、DLL内部で呼ばれた BaseUtilの処理が異なる可能性も… ヤバすぎですww
標準フレームワークだとか言っているDLLのヘッダファイル。 #ifdef _DLL_EXPORT class __declspec(dllexport) CommonUtil #else class __declspec(dllimport) CommonUtil #endif { BaseUtil baseUtil; public: … void SetVal(int val) { baseUtil.SetVal(val); } … }; これをincludeして CommonUtil::SetVal() を呼び出すと、BaseUtil::SetVal() の呼び出しにインライン展開されちゃうんだよね。 で、BaseUtilの実装部分はDLLに含まれているにもかかわらず、エクスポート してないんで、リンクエラーになる…
807 :
806 :2006/08/05(土) 19:29:30
あう、二重投稿になっちまった…
何でもインターネットや人の作ったサンプルのコピペで、済まそうとする馬鹿が いてむかつくんですけど マジで理解してコード書けや!!!!!!!!!!!!! 動かなかったことを人のせいにするんじゃねーよ!!!!!!!! コピペで給料貰ってんじゃねーよ!!!!!!!!!!!!
まずこんなのを発見して↓ String isHoge(){ if(i > setHoge()){ return null; } else{ return "False"; } } setHogeを確認したらこんなので↓ String setHoge(){ return this.hoge; } まさかと思ってgetHogeを探したら予想通り↓でした void getHoge(int i){ this.hoge=i; } 何か嫌なことでもあったのだろうか?
そのクラスが主語でsetとgetなんだろうか。
あげちゃってもいいさ と考えるんだ
前にもどっかのスレで書いたけど void setFooBar() { getFooBar(foo_, bar_); } 絶対なんか嫌な事があったに違いないと思う。たぶn。。。
とりあえずjavascriptはhtmlのヘッダ内に まとめて書いて欲しいと思うのはおかしいのでしょうか? 常識だと思っていたが、実はもう考えが古いのだろうか。 bodyのあちこちに散乱しているのがもしかして今流行り? あまりにも汚いソースを見すぎて 自分の中の常識を見失いつつあるのか? もうだめぽ 誰か教えてください・・・
教えて君ウザイ
レス早! なるほど、ありがとうございました。
>>814 外部ファイルに分割するのが普通。
ヘッダになんて書かない。書くわけが無い。
ボディに書くってある意味勇者だよな。 だが俺にはできん。
wiki のプラグインで堂々と body に突っ込む俺が来ましたよ xhtml 化のことを考えると外に出したいのだが、めんどい
なんかエロくなってきた気がする
つまりヘッダに書く奴は顔射好きと
プログラムコードはさらけ出せないが 非プログラム系企業(零細)の主要業務をサポートするソフト 中堅(プログラミング歴20年)が作ったプログラム。 とても大きい容量で使いにくく、ある程度は手作業(エラー出てないかとかをCtrl+Fで検索) 作成に1年かかった。(作ったのは5年ほど前) エクセル非対応 今年入ってきた新人が本を見ながら試行錯誤して作った同じ事をさせるプログラム。 中堅のプログラムよりも容量が少ない(3割容量を削減。あるソフトは7割減った) 全部自動で行う。(エラーを自動検出。POPメニューが出力される。) エクセル対応 作成に3ヶ月かかった。 中堅が役立たずなのか、この新人が素質あるのかレベル差が違いすぎ。 新人の作ったソフトのほうが使いやすいため、中堅が作ったソフトはその本人しか使ってません。 プログラムって本人のセンスによって差が大きすぎ。特に一人でソフト作ると更に謙虚に出るね。
>>822 > 作ったのは5年ほど前
これはでかいんじゃね?ライブラリとか開発環境とか、だいぶ違うだろ。
まぁそれだけじゃないだろうけどね。
×謙虚
○顕著
プログラミング歴20年で中堅? 3年経ったらもう中堅だろ
>>808 コピペで開発するのが、一番生産性がいいのでつい・・・・
826 :
仕様書無しさん :2006/08/11(金) 22:12:27
たぶん「ライブラリ?何それ?」っていう人ばっかりなんだろうね。
827 :
仕様書無しさん :2006/08/11(金) 23:06:57
「ばか、ライブラリはトショカンだろ!」
ライブラリもどきな、ユーティリティー関数を集めたクラス、、、辞めてください こんな腐ったクラス、作成者しか使ってませんって class CUtil { char _buf1[1024]; char _buf2[1024]; ,,,,ほかいろいろ public: int toInt(); const char* format(ひきすう); ・。・。・。・。・ };
>>825 お前、コピペしかできないだろwwwカスだなwwww
832 :
仕様書無しさん :2006/08/12(土) 08:29:27
852 名前:えー,だってこのほうが分かりやすいでしょ?[sage] 投稿日:2006/08/10(木) 08:33:29
if(i==0){
strcpy(buf,"0");
}else if(i == 1){
strcpy(buf,"1");
}else if(i == 2){
strcpy(buf,"2");
}
863 名前:仕様書無しさん[sage] 投稿日:2006/08/10(木) 21:02:57
>852 >856
勉強不足で申し訳ないのですが>852のソースの何がいけないのか教えてもらえませんか?
またどのようにするのがベストなんでしょうか?
867 名前:仕様書無しさん[sage] 投稿日:2006/08/10(木) 21:50:36
buf[0] = 30+i かな
889 名前:876[sage] 投稿日:2006/08/11(金) 00:06:38
なんだかんだで
>>852 はそんなに悪くないコードだという理解でよろしいでしょうか!
なんだこいつ
>>818 ボディは単発で短いやつの場合に書かない?
ページ開いた時の日時を出すだけとか。(あまり意味ないか…)
マジでこの業界、、コードかけねーやつ、消えろや 人に迷惑撒き散らして、大人のやることじゃねー あ、、、この業界、ガキしかいなかったかwww
コピペでスパゲッティ生産して、長時間デバッグを続ける。 ↓ 君はよく頑張ってるね。 綺麗で単純なコードを書いて、早く終わらせる。 ↓ 暇なら手伝え。
>>837 真理
もちろん評価は残業してがんばってる用に見えるほうが上で給料も上
そしてコピペで生産されたスパゲッティのメンテを頼まれる俺。
日本人プログラマが生産しているのは”スパゲティではなくて”でなくてきっと”そば”です。
>841 噛まなければ3口で食える。 (=理解しようとせずに必要最小限弄るだけなら何とかなる(ように見える))
だがな スパゲティはソースでごまかしはきくが、そばの麺はごまかしきかんよ
836見て 類友 が脳裏に浮かんだのは俺だけだろうか
>>844 いえ、少なくとももう一人、同じ感想を持った人が存在します。
作成者の書かれていないソース。
ソースに名前入れるの嫌いだからよっぽどのことが無い限り入れた事はないな (・∀・)
ああついでにここでも名前入れずにROMっててくれたまえキチガイクン
恥ずかしいソースを書くから、名前入れたくないんだろ。
851 :
仕様書無しさん :2006/08/22(火) 05:26:50
作成者が書かれてない上に下手なコードをメンテしてて
>>588 みたいな状況になった事がある。
俺もそんな大したコードが書けるわけじゃないけどさ。
せめて変数名にわかりやすい英単語使うくらいはしてくれ _| ̄|○
void syori1(int a ,b)
{
int c, d, e f ...
}
みたいなの見た時は本気で逝きそうになった。
原作者不明とか、コメントしておけば?
つか、1文字変数はやめた方がいいよ。検索しにくいから。 いくらバカでもaaaとかbbbとかにしとけ。
>>853 幼稚園児の年少組と年長組程度の違いしかないようだが。
>>851 void syori1(int a ,b)
{
int c[30];
}
ってやつなら見たことある
本気で殴り倒しそうになった
int hage,kasu,sine,boke; とか書いてるソースを見た時思わず同意した
MFCアプリで、任意のタイミングでダイアログを閉じるのに 「CDialog::OnCancel();」を呼んでいる。 そして、ダイアログ終了処理の一部が派生先のOnCancelに書かれている…
>857 明示的にCDialog::OnCancel()を呼んでいれば問題だが、OnCancel()自体 は仮想関数だから、派生ダイアログオブジェクトへの実体参照または、 派生ダイアログオブジェクトのポインタ経由で呼べば、ちゃんと派生 クラスのOnCancel()が呼ばれると思うけど? まぁ、普通ならPostMessage(WM_COMMAND,IDCANCEL,0)でしょうな。
>>858 だから、OnCancel() オーバーライドしてんのに基底クラスを明示して呼んでる、って話でしょ?
>>859 派生クラスに書かれているという「ダイアログ終了処理の一部」が具体的
にどんな処理か判らんが、オーバーライドされているOnCancel()を呼ばれ
たくないという理由があれば、明示的に基底クラスを呼ぶことは問題では
ないと思うが?
それを避けるために、わざわざメンバ変数を設けて派生クラスのOnCancel()
内で、メンバのフラグを見て、「ダイアログ終了処理の一部」をスキップ
させるというのも、美しいとは思えん。
OnCancel()は、タイトルバーの[×]ボタンのクリックなどからも呼ばれる
しな。
>>860 >オーバーライドされているOnCancel()を呼ばれ
>たくないという理由があれば
当たり前。
そうでないからこそ
>>857 が問題視して書き込んでいる、という前提で、
>>858 の「呼んでいれば問題だが」に対して
「呼んでる、って言ってんじゃん」という突っ込みを入れたに過ぎない。
>>822 経歴20年って、、、
40代PGは「でもしか」多いぞ(^^;
>>862 プログラマの世界に限った話ではないが、やってる年数が長ければ
良いってもんでもない。長くやっているのは何か別の事情があって
のことかも知れないからだ。(それしかできない、またはその他
政治的な理由でそれしかやらせてくれない、など)。
「このコードを書いたのは誰だぁ!!」(AAry
>>822 なんとなく想像つくのは
まぁ新人の方は本見ながらということで、そこに書いてある通りに作ったはず。
基本、オイラも知らない言語はそんな感じで作る。
そのレスだけじゃ、新人が特別スゴイとは思わないな。
そのレベルならたいていの人はそこまでは到達できる。
その中堅にも同じ本を渡せばいいだけ。
それに5年も前のと比較しちゃぁね。当時は確かドットネットもなかったような・・・・
仕様もおそらく本に書いてあるものだろう(自動検出、POPメニュー等)。
入力チェックは自動で、とかPOPメニュー作ってとか
その新人が作ったものと同じ仕様を要求して本渡せば
別に中堅でも作れるんじゃないの?
センスっつか要領のよさだと思う。センスがあるのは本の著者。
でもこれも結構普通だと思う。
ほんとにセンスがあるかどうかは複雑怪奇な業務を理解して
それに見合う設計ができること。
つうかエクセルくらいVC6でもOLEで簡単に操作できるでちょ。。。。。。。。。。。。。
>>865 1を聞いて10を知る必要はないが、2や3を知れるセンスがなければ
本に書いてあるとおりなだけでモノが作れるわけないだろ。
1を聞いて1を知れないセンスのない輩もかなり多いのに。
>>866 さっさと死ね。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
>>865 さすがにそこまで言っては憶測が過ぎるべ。
しかしほんと
>>822 くらいの差って存在するよなぁ……。
モノの本では最大10倍(だっけ?)の生産性差が指摘されていたが。
しかし、しない人はホント勉強しないな。
そのへん、「自費で技術書買ったりしますか?」くらいの
質問だけで選り分けられる気がしてしょーがない。
上記質問にYesと答えるのはプログラマだ!
それを聞いて「よくやるなぁ(なんでそこまでするんだ)」的反応をするのは
適当にIT講習受けたサラリーマンだ!
ホント、ソフト屋は色々と地獄だぜヒャーハー
./ ;ヽ l _,,,,,,,,_,;;;;i <いいぞ ベイべー! l l''|~___;;、_y__ lミ;l 自費で技術書を買うやつははプログラマーだ!! ゙l;| | `'",;_,i`'"|;i | 買わない奴は適当にIT講習を受けたエセグラマーだ!! ,r''i ヽ, '~rーj`c=/ ,/ ヽ ヽ`ー"/:: `ヽ / ゙ヽ  ̄、::::: ゙l, ホント ソフト屋は地獄だぜ! フゥハハハーハァー |;/"⌒ヽ, \ ヽ: _l_ ri ri l l ヽr‐─ヽ_|_⊂////;`ゞ--―─-r| | / | ゙l゙l, l,|`゙゙゙''―ll___l,,l,|,iノ二二二二│`""""""""""""|二;;二二;;二二二i≡二三三l | ヽ ヽ _|_ _ "l ̄ ̄ ̄ ̄ ̄ ̄ |二;;二二;;二=''''''''''' ̄ノ /"ヽ 'j_/ヽヽ, ̄ ,,,/"''''''''''''⊃r‐l'二二二T ̄ ̄ ̄ [i゙''''''''''''''''"゙゙゙ ̄`" / ヽ ー──''''''""(;;) `゙,j" | | |
延々とクライアントと上司に対する愚痴がコメントとして残されていた時。 昔はファミコンのロムにこっそりテキスト入れたりしてたらしいが・・・ あとは、延々うめき声(// う・うう・・・・)とかが書かれてたソースは怖かった。
最近も時々あるよ CDとかDVDとかがメインだから容量余ってるし
ダミーデータにそういうの入れておいたら面白そうだな
オレ、ガノタなんだけど、DBにテスト用のデータで機種コードとかを全部 RX-78-2とか、MSZ-001とか、モビルスーツの型番にしといたら、 上司がそのまま客先デモに使って、客に「モビルスーツを開発してるんですか?」 と言われたらしく、「変なデータ入れるな!」と怒られたことならある。 客はノリが良かったのに、上司ノリ悪いなと思った(´・ω・`) っていうかデモ用に使うと知っていたなら、もっとマトモなデータ入れたのに・・・
そういや、花屋のシステム開発したとき「ラフレ死亜」だの「デンドロビウム」だの テストデータに入れてたやついたけど、ガンオタだったのかな
876 :
仕様書無しさん :2006/08/28(月) 22:02:25
今月から参画したとこ↓ 仕様書なし。 前担当者既に不在。 Javadocいっさいなし。 数年前の修正箇所がコメントアウトで残してある。 比較は全てマジックナンバー、マジック文字列と。 同じ処理を繰り返す。 if (a.getA(b.getB()) != null && a.getA(b.getB()) != "") { if ("3".equals(a.getA(b.getB())) || !("1".equals(a.getA(b.getB())))) { ウウ... (;-Q)TTLL ・・・・・・・・・・・・。
877 :
仕様書無しさん :2006/08/28(月) 23:06:10
// TODO:この実装のまま一年経過すると困るはず! ・・・ちなみにあと1ヶ月切ってる
ソニータイマーかよ
>>876 >ウウ... (;-Q)TTLL
文字化け?
えーっと・・・それはボケだよね?
縦に見るのか横に見るのかわかりづらいAAだな
昔流行った、あの黒いビニール製人形に似てるよ
>>874 もう時効だと思うけど、建設重機関係のテストデータに
「賄賂建設」「丸投げ組」「孫請土木」「零細鉄工」等々の会社名を
ばんばん入れてたよ。「手抜土建」「肉欲企画」も確か使ったと思う。
たまたまそこらへんにあった漫画(ナニワ金融道)に出てきた会社名を
使っただけなんだけどね。
客先デモに使われなくて助かったのかもな。
同僚(後輩)になぜか怒られたw
>>874 バンダイはガンダムの権利関係にはものすごくうるさいから気をつけた方が。
>>885 外部流出かますかバンダイビジュアル、創通エージェンシー相手の案件で
やらなけりゃ大丈夫だと思いまふが。
バンダイへはマクロスデータでデモ汁
888 :
仕様書無しさん :2006/08/29(火) 08:50:54
タカトクw
>>883 そこで冒冒グラフ連想する君が素敵だ。愛してる。
890 :
588 :2006/08/29(火) 10:02:30
♪たーかーとーくくろーばあーいまごろどーしてるかなー?
俺コンビニの食品データに 「遺伝子組み換え食品」とか入れてたなあ
ガンダムは、クローバーがメイン・スポンサー マクロスは、タカトクがメイン・スポンサー バンダイは、程度の悪いガンプラをガキに抱き合わせ販売して儲けた利益で、 倒産したクローバーやタカトクの版権を買いあさり、その後、あたかもガン ダムやマクロスを生み出したのはバンダイであるかの如く歴史を捏造。 ガンダムやマクロスの製作に関して、バンダイは、なんら創造的な著作 行為を行っていないのに、著作者気取り。 バンダイとその系列会社って、その金儲け優先で品質の悪い商品作りが 祟ってスタジオジブリから出入り禁止業者に指定されていて、版権の 許可が出ないらしいね。
それが本当なら確かに著作者ではないが著作権者ではあるな。 下のは本当なら納得できる。 そして俺も貴様もスレ違い。
>>892 「著作者気取り」の意味がわからん。
>あたかもガンダムやマクロスを生み出したのはバンダイであるかの如く歴史を捏造。
「捏造」のソースは?
ぐぐるといくつか出てくるな。 つかスレ違いだぜ兄弟。
空気嫁無いからガノタっていうんですよ
つ エアリーズ
ファブリーズと共同開発。 緑茶成分配合。
>>896 しょうがないよ。空気のないところで戦ってるんだから。
900 :
894 :2006/09/02(土) 21:25:54
>>895 スレ違いスマヌ。本気でわからんのよ。
どうぐぐったらなにがでてくるのか、教えてたもれ。
「スレ違い」って言葉もわからないようでは 記事を見つけても内容を理解できないだろ
もうその子に触らんでいいよ 空気嫁でもくれてやれ
この会社辞めようと思ったソースコード 894の書いたソースコードだろうな 設計書まるで無視して独自実装とか勝手に入れてそう 設計書書いたとしても要件無視して独自仕様(ry
>>874 漏れはギャルゲーなヒロインの名前でライブラリ作りましたが、何も。
まあ、気づかれないだろし気づかれたら同類だし。(w
きも^^
int haruhi=0;
昔零細量販で社内Sヨ兼事務みたいなことやってて 直営小売店のレジデータ集計システム作ってたとき 某エロゲヒロインの名前をシステム名に借りましたorz ……多分もう使ってないとは思うが。いや店名が「風」にちなんでたのでそっから連想でね……
>>907 発覚したら小一時間問いつめられること必至だな。
>>907 TOMOYO Linuxとどっちが恥ずかしいのかな。
つーか、あれは小一時間問いつめられるべきだと思うのだが。
NTTデータはへんなとこでリベラルだな。
HITODEと入力するとフリーズします(>ヮ<)
>>909 SYAOLAN(だっけ)とSAKURAも忘れないであげてください。
NTTデータ本社は結構変な人いるよ?
>>912 そっち見てから書いたのかと思ったwww
そういえば、データをGCAで圧縮して送ってくる、 和塩とか和鳥のスペースに仕事のデータをアップして 「ここからダウンロードしてください」とかやってた彼は その後元気だろうか・・・
GCA懐かしいな。自己解凍形式のやつだよね。 01-02年あたりによく流通してた覚えが。
>>915 圧縮・解凍プログラムが一部のワレモノ愛好家にくらいしか
出回ってなかったから自己解凍形式が多いが、普通の圧縮形式もある。
元ファイルの内容によるが、LHAやZIP、RARよりも高い圧縮率を誇る。
・・・が、仕事のメールで使うやつなんて、後にも先にもその彼しか
出会ったことがない。
Sit形式で圧縮されてきたときは、おいちゃんちょっぴり殺意が湧いちゃったぜ
shit!!!!
相手はMacユーザか。
tar.gz
.sitx
tar.Zで送られてきたときは思わずニヤけた
業務に使っているらしき、ビューアも提供されていないマイナーなCADのファイルとかヒドス
なんでもsizeofつけて初期化してるソースコード int size = sizeof(int)*100; int ary[100]; memset(ary, 0, sizeof(size)); // 正しくはmemset(ary, 0, sizeof(ary)); とか int* p = new int[100]; memset(p, 0, sizeof(p)); // 正しくはmemset(p, 0, sizeof(int)*100); 。。。ホント頭どうなってるの??? これ書いたのは「ベテラン」だそうで。。。
>924 それをmallocでやらかしてたらもっと早く間違いに気付いた……と思う? 自分で言っといて追い打ちを掛けるようだがコンパイラのバグだと騒ぎまくるだけに10000ペリカ orz
>924 ベテランPG≠コーディング能力の高いPG。 ベテランPGが下手なコード書いたっていいぢゃないか。 糞コードを見たくないなら、ベテランには得意分野に専念してもらい、 お前が穴埋めをすりゃいいのだ。
>>924 ベテランだってはじめからベテランだったわけじゃない
ベテラン≠エキスパート
memset(p, 0, sizeof(p)); 漏れが引き継いだソースにもあったよ。。。。。。。。。。。。。。
で?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
ボタンと値の対応付けのためだけに、CButtonを派生させてるMFCプログラム。 なんと必要性&汎用性の低いクラスを乱造してるものかと思った。 実際全体を見てみりゃ、高々ダイアログ1個の単機能なツールなのに、 ソースは10個前後のプロジェクト、千は越えるクラスで構成されていたり… 使ってるテクニック等を見るに技術力はあると思ったが、 正直オナヌー見せられてる気分だった。
>>931 暇だったんだろw
独立したちょっとしたツールを作るときとかなら、自分にも心当たりがある。
わざとらしいデザパタとか。
この世界でベテランはありえない。 全てただのロートルと化す。
まだまだ終わらんよw
>>934 「トレンド」に追従した開発をガリガリする人は居ないが、センスのいい人はいるよ。
KEKの恩師には勝てる気がしない。
↑
ポインタがよくわかってないようだから教えてあげるけど
>>924 の例では確保したメモリを初期化しないで
メモリへのアドレスが入っているポインタを0でクリアしているの
だから次に p にアクセスしたらアクセス違反が起こる
わかった?
941 :
仕様書無しさん :2006/09/10(日) 12:46:33
>>940 ポインタがよくわかってないようだから教えてあげるけど
ポインタって0でクリアできないんだよ。
そこんとこわかってる?
>939 お前アホコテあぼーんしてる?
943 :
仕様書無しさん :2006/09/10(日) 12:54:39
>>941 >ポインタって0でクリアできないんだよ。
おまえは本当にポインタをわかっているのかと(ry
で、>930は、その上のアホコテのが p の型が不明なので、 「で?」としか言いようがないだけかと。 >924 がヘンだとは言ってないと思われ
>>939 落ち着いてよく見直せ。
× memset(&p,...
○ memset(p,...
947 :
仕様書無しさん :2006/09/10(日) 13:25:40
>>924 をよーく見ろ。
sizeof(size)
sizeof(p)
size変数はint型、pはint型ポインタ。sizeofでサイズ求めたらいくつになるよ?w
初期化しようとしてるメモリのサイズは要素数100のint型配列だぞ?
まあ、ベテランにも2種類いる。 常に最新の技術に関して調査してる、第一線で活躍できる 歴戦の勇者と、過去の技術だけで最新の開発ツールの機能は 使いこなせず、作法も構造も前時代のコードしか書けない老兵と。
日本でベテランというと長年やっていてとてもできる人というような意味
だけが広まったようだが、元々の英語の veteran には他にも意味がある。
http://dictionary.goo.ne.jp/search.php?MT=veteran&kind=ej veteran
━━ n. 老練者, ベテラン; 老兵; 退役[在郷]軍人; 使い古したもの.
━━ a. 歴戦の; 老練な.
veteran car 〔英〕 ベテランカー ((1916年(特に1905年)以前に製造されたクラシックカー)).
Veterans Administration 〔米〕 (the 〜) 退役軍人援護局 ((1930年設立)).
Veterans Day 復員軍人の日 ((11月11日)).
"You are veteran." 訳: 「君は 使い古したもの だ。」
今度からベテランって言葉の代わりにオブソレートって言葉を使う
レガシー でいいんでね?
956 :
元PG :2006/09/12(火) 08:30:47
木村氏ね!
World legacy = 世界遺産
958 :
仕様書無しさん :2006/09/12(火) 14:11:45
function UwaRite()
>>958 を見て意味を理解できてしまう自分が悲しい。
…えーっと、まさかと思うけど… 日本語+綴りを間違えた英語?
overwrite? せめてuwagakiだよなあ・・・
罵倒語禁止なんじゃないかな。 ガキとは何事だと
writeをwrightと書いた院卒の先輩がいます 死んでください^^
大量のスペルミスとかローマ字と英単語の中間みたいな変数名を見ると 作成者のやる気の無さを感じるよな。
やる気が無くても書かんし。
967 :
958 :2006/09/13(水) 02:02:45
最初に入った会社で、バグが出たからバグの原因だけ調べてくれと言われて 1年目に見ていたソースにあった関数の名前。 当時、発見直後その現場で物凄く盛り上がった。(バグそっちのけで) その後、俺がいなくなるまでは(その後は知らん)、何かポカミスをすると 「またウワライトしたのかよw」みたいな格言というか表現が定番となった。 なお、ウワライト発見時、その伝説の関数名をつけた人が真後ろにいたことは 知らなかった。その人が辞めた後に聞いた(´・ω・`) 他にも daita_check とか errar とか ellor とか caunto とか、伝説にはならないものの 物凄い変数名や関数名を大量に作っていたことは、今でもしっかりと覚えている。 その人は自称大卒だった
別に大卒ゆーてもピンキリだし本人のセンスの問題でそ そもそも綴りがあってようがなかろうが よりによってウワライトが思いついてそれを採用しちゃったセンスに乾杯
2chのスクリプト内もローマ字多そうというか、変な名前が多い。
それ、多分綴り間違いじゃなくてわざと付けてる。
971 :
958 :2006/09/13(水) 02:32:20
>>970 最初はネタだと思ったけど、その人自分の名前の漢字もよく変換ミスしていたから
天然の異常者だったと思う。
例: 高橋 達夫 を 高は 筒夫
とか書いてたりして、「誰これ?」が何度かあった
>>971 > 天然の異常者だったと思う。
お前、最低な奴だな。
>>972 function ObaaGaki()
>>967 それは強烈だな・・・
errorとかcountなんて良く目にするものなのに・・・
ellorなんて読めねえよw
画家だかにエロールってのがいたような。
>>978 ellorでググってみたが、アローって読むみたいだな。
ところで、ググって出てきたサイトの上から3番目に
ログインフォームからアドレス、Passを入力してもEllor表示がでてすすめません。
ってのがあったんだけど、これ本人?w
もしかして英語じゃないんでは? ポルトガル語とか
>>979 件名:ログインできません。
投稿者: miyuki 最終更新時刻: 2004-02-02 11:42:59
今日さっそく登録していざログインしようとおもったら・・
ログインフォームからアドレス、Passを入力してもEllor表示がでてすすめません。
登録はきちんとして、メールに備え付けられていたURLからとびました。
どうしたらいいのですか?
---------------------------
ちょww
萌えw
ディスクのミラーリングで、 mirror を mira と書いてあるのを見つけたことがある。 まあ、ローマ字書きだからいいか・・・。
>>984 そんな奴ぁ flight を frite と書くだろう。
>>984 flightは、fwriteのことぢゃないZOO!!
サーバーの設定を表す定数が皆 SAVER_ で始まるってのはあったぜ。 しかもその定数いろんな所で使ってるのに誰も何も言わないんだぜ。 さすがにこれは誰か助けてくれってサインだと見たぜ。
ただのオタだったとか
#define SABRE 0xf86f
よく、切れそうだ。
>>988 この前夜中にやってた映画「回路」だな。
993 :
仕様書無しさん :2006/09/13(水) 22:05:47
問おう、貴方がこんなgdgdなコードを書いたのか# セイバー違いですね、はい。
おおう、goodgoodなコードですネ come! come! come!!!
>>951 その老兵は俺だなw
職業プログラマからは足を洗ったんで空白期間ができたせいもあるけど
全く最新技術についていけてないのは自覚してる。
少しずつでも追いつかないとね。前時代的なことをやってると、何より
やってて自分が面白くない。
>>979 ELLOR No115が表示されます
01: 名前:小林 正投稿日:2003/02/07(金) 13:58
カシミールを起動すると、ELLOR No115が表示されファイルが開けませんと出てきます。
OKをクリックすると起動はしますが、以前作った登山ルートを表示さそうとしても、ルートの表から消えており表示しません。
だれか つぎすれ たのむ
UwaRite(1000);
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。