この会社辞めようと思ったソースコード。 プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ぬるぽ。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板に逝って。
前スレがdat落ちしてたので立てました。 \ ぬるぽ♪ ぬるぽ♪/  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ∬ ∬ 。。 ・・∧〜∧ ・。。。 ∬ o0o゚゚ (´∀` ) ゚゚oo 。oO ( (( ー----‐ )) ) O0o (~~)ヽ (´^ヽO, (⌒ヽ (⌒)(゙゙゙)~ /~゙゙ヾ⌒`ゝ-(~´`(⌒(⌒~ヽ~ ~~ 、、 ゝー ′ '" ``"
ガガガッ
ある処理を行いたいのだがそのままべた書きすると何百行になるので 処理Aと処理Bに分けてそれぞれ関数化(funcA, funcB)して呼び出す。 funcA(){ //処理A・・ } funcB(){ //処理B・・ } main(){ funcA(); funcB(); } ↑こういう書き方なら別になんとも思わないのに funcA(){ //処理A・・ funcB(); } funcB(){ //処理B・・ } main(){ funcA(); } こういう風に書いてあると、なぜか釈然としない・・。 やってることは同じなのになぜだろう・・。
AとBの内容によるが、多分同程度の粒度だろうから、その違和感は当然。 そんな入れ方したらAだけを別に利用したくなったときに困るじゃねーか。 AとBが一体不可分で中身を知る必要がないのならべた書きしてしまったって構やしない。
まぁぶっちゃけ「AとBが一体不可分で中身を知る必要がない」処理なんですけど。
2例目風のコード渡されて、なんか釈然としないなぁと考えていって
できたのが
>>5 の発言です。
たとえそうであっても /////////////////////////// main(){ funcA(); } /////////////////////////// funcA(){ funcB(); funcC(); } static funcB(){ } static funcC(){ } /////////////////////////// みたいに書くと思う、俺なら
>5-8 粒度云々より、関数A、Bを単独で使っても問題無いかの方が重要だと思うが。 関数A、Bを単独で使ったり、B→Aの順でコールした場合に何か問題は無い? (仕様書との不整合は度外視で)
何を言ってるのかよくわからん。 どんな関数でも使い方によっちゃ問題を起こすもの。 言い換えれば関数を問題なく使うのはプログラマの責任。
だいたい関数を分けるのは何百行にもなるからじゃないだろ
>>5 の例で言うとA-Bという一連の処理でBの部分だけを
他でも使うのならその書き方は妥当
絶対にA-Bという処理しか行わないのなら大抵の場合は
関数を分ける意味もないし、分けるにしてもどう入れるかなんて
どうでもいいことだ
関数を分割する話じゃあないとおもた。分割した関数を呼び出す話だろ。
>>5 が釈然としない理由はきっと、それらの関数の関係具合と呼び出し具合の
ずれが気に入らないんだろう。
funcA()とfuncB()が親子的なら入れ子の呼び出しがあうんだろうけど、
彼はおそらく兄弟的だと感じているんだろう。なら並べて呼び出すのがスジ。
■ ルーチンやメソッドを抽出する ルーチンからインラインコードを削除し、それを1つのルーチンとして独立させる。 ■ ルーチンのコードをインラインにする 説明を必要としない単純な本体を持つルーチンのコードを抜き出し、それを使用する場所でインラインコードにする。 ■ 長いルーチンをクラスに変換する ルーチンが長すぎる場合は、それをクラスに書き換えて複数のルーチンに分解すると、コードが読みやすくなることがある。 保守しにくいなら修正汁!
ところでおまいら、ソースを綺麗に書こうとちたら当然タブは8でつよね。 タブ4のソースは得てちて汚い。
どうしてタブのサイズがソースの質に影響するのか、 1000字以内で説明しなさい。夏休みの宿題ね。
可読性に影響する ↓ 保守しにくくなる ↓ ソースの品質が低下する
タブのサイズはエディタの設定であって、ソース自体には関係ないと…
俺の会社のコーディング規約(Java Servlet)には「Tab は 4 文字」という 記述がある。タブとインデントの区別がついていないと思われる。おまけに、 文の途中で改行したときは 5 インデントつけてみたり 6 インデント下げて みたりと一貫性がない。誰一人として Java のコーディング規約を読んだ ことがないらしい。 社内共通クラスの Java ソースを見ると、PHP の htmlspecialchars() に 相当するメソッドのコメントに、「特殊フォントを HTML で表示できる 形式に変換する」と書かれている。「フォント」という言葉の意味を 調べろと小一時間問い詰めたい。
>>14 は、「タブ幅4で書いたソースをタブ幅8で読むと
汚く見える」って話だろう。
インデント幅の話じゃなさそうだし。
>>19 たちかにタブ4で書いたソースをタブ8で開くと同じ行にコメントが
入っている場合、とても見にくいでつ。でもそれ以上にタブ4の
ソースはネストが深くなりがちなので糞ソースが出来やすいと
思いまつ。
21 :
仕様書無しさん :2005/09/15(木) 21:25:56
へー
そういうもんかのう。 タブ4派だけど、四重以上のネストは書いたことがないぞ。
Cの場合はインデントは2。 サブルーチンを分けることによる実行時オーバーヘッドも考える言語だから、 switchやifも入れれば4重5重のネストはよくあること。 そういうわけで、C++は4かな。 でもJavaは2なんだよね。try-catchのネストが多くなるから。
>>23 のようにネストの深さでインデントを決めるのが正解
>>20 はもう少しものの道理を勉強しなさい
糞コードを書くやつはどんなインデントだろうが ネスト数を制限しようが糞コードを書く ちなみにそれを環境や設定のせいにするのも糞コード書きの特徴
構造上どうしてもネストが深くならざるをえない部分はかならずある。 それを無理矢理分割しようとして引数がやたら多くなったり さらにそれを回避しようとしてグローバル(ry)な糞ソースなら何度か見たよ。
>>26 >構造上どうしてもネストが深くならざるをえない部分はかならずある。
・・・データ構造の設計をきちんとやっていますか?
>>27 最適化を進めて行くと美しいデータ構造からは乖離して行くもんだよ。
理想と現実のバランスを取るのが大事ってこと。
最適化もそうだが、一番あるのは機能追加という名の仕様変更だろ その時になってデータ構造変更するなんてできるもんか っていうかデータ構造の話だったのか? 処理の分岐の話じゃなくて?
データ構造というより、フローの構造化だよな。
プログラム=データ構造+アルゴリズム という言葉を知っていますか? データ構造と論理構造は不可分なのですよ
とりあえず
データ構造の設計を適切に行えばデメリットなくネストを解消することができる
ってことを証明してくれる?
>>27 >>31
全部voig *ニスレバクルシマナイゾ
断末魔の叫び「ヴォイグゥゥゥゥゥゥゥ〜」
>>31 が理解できません。論理構造とか言ってますが、何の話ですか?
>>31 アルゴリズムと実装の話を混同しちゃいかんよ。
例えばオブジェクトを構築する時にコンストラクタを使うかビルダーパターンを
使うかは、データ構造からもアルゴリズムからも独立して決められる。
もちろん、データ構造の複雑さも考慮してその決定をするべきだけどね。
何が言いたいかというと、データ構造やアルゴリズムが適切でも、
汚くて保守しづらいコードは書けてしまうってことだよ。
漏れのまわりに分割原理主義とでもいうような妙な宗派がある。 ・MAINの直下は論理設計を体現した引数も戻り値もない関数しか置かない ・各関数は代入や一部の頻出するライブラリ関数しか書かない ・ライブラリ関数を使うときは必ず自分でラップする ・リテラルはリテラル呼び出し関数を経由して使う
とりあえずネストが深くなることは無条件の悪じゃないはずなのだが 3次元配列へのアクセスを1ループごとルーチン分けしろとか 1次元配列で表現しろとか言われたら俺は切れるぞ
39 :
37 :2005/09/16(金) 12:28:21
だけど、各関数間の値のやりとりはグローバル変数だし、関数の粒度はまちまちだし、 ライブラリ関数が隠されてなにしてるかわからんし、リテラル関数の引数は呼びたい値にクリソツなリテラルだし、 読むたびに殺意が湧くにょ
低能ほど他人にルールを押しつけたがるからな。
今作ってるプログラムのソース見たら、一個だけ7段インデントがあったな。 後は大抵4段か5段までで収まってた。
インデントするだけマシですよおまいら。
ひとつの関数 (or サブルーチン) の長さが短ければ ネストが多少深いくらい問題なくね?
ひとつの関数辺りの行数って、どうやって数えるの? 俺は、実際のコードが書かれた行がゴチャゴチャ密集してたら 読みにくいからふんだんに空白行入れるけど、そういうのを全部 カウントされるとつらいな。
長い短いっていうのはあくまで比喩なんで、何行以上はダメとか言ってる馬鹿は無視しる。 インターフェイスが明確であって、論理的に簡潔であれば、実装の記述が長くても構わない。
ソースを綺麗に書くことを心がけてるけどなかなか短い関数に まとめるのは難ちい。。。。 自分のソースを分析ちてみた。 関数のステップ数 10step未満 24.8% 20step未満 24.6% 30step未満 13.5% 40step未満 9.9% 50step未満 8.7% 60step未満 3.4% 70step未満 3.4% 80step未満 2.0% 90step未満 2.4% 100step未満 1.4% 100step以上 6.0%
>>46 行数にコダワリすぎではないか?。#自分の平均値は24行くらい
物理的な行数ではなく、
>>45 が正しいと思うのだけれど。
まあ
>>45 も「簡潔」という、判断に個人差のある形容詞を使っているので
ここは突っ込みたいところだけどw
関数わけとは、原則としてプログラムの複数の箇所で共通する処理をまとめる目的で行うもの 副次的には、あるまとまった処理のブロックを整理する目的で行うもの 関数が何行を超えたから分けるというのは好みの問題でしかない
データ構造しっかりしてるほうがそれを補うコードを書くよりずっとマシだと思うよ
自分で考えて最適化して
わからんなぁ。 データ構造がしっかりしていたほうがいいのは常識だろう。例外はあるにせよ。 データ構造の不備を補うようなコードは書くべきでない。それも正解。 だけど、いま話題になっているのは処理が大きいことやネストが深いことは悪か否か、ということだから 全然関係のない話だよね。
なんとなくコボラー臭を感じる なんとなくだが
つまるところその処理が問題なんじゃないの?
なんだこのグダグダっぷりは。 まったく、糞猫が「タブは4でつよね?」とかわけわかんないこと言い出すから…
あらゆる事象はより小さな事象に分割することができる、というのは一面の真理だが、 それはそのように認識することができるという意味であって 分類しなければならないと言う意味ではない 分類はより詳細な分析あるいは設計が必要なときに行われるものであって 対象の量的な大きさによって行われるものではない
常にシンプルなほうがいいよ。なんでもね
分類しなければならないとは誰もいってないし。 分けられるなら分けたらいいくらいの認識でよかですよ。
ではこの辺で次の糞コードをどうぞ ↓
60 :
仕様書無しさん :2005/09/16(金) 21:26:09
ループで処理すればいいのに 変数A(1)=変数A(1)+変数B 変数A(2)=変数A(2)+変数B 変数A(3)=変数A(3)+変数B 変数A(4)=変数A(4)+変数B 変数A(5)=変数A(5)+変数B 変数A(6)=変数A(6)+変数B 変数A(7)=変数A(7)+変数B 変数A(8)=変数A(8)+変数B 変数A(9)=変数A(9)+変数B 変数A(10)=変数A(10)+変数B
漏れは20行超えだしたら分割してもっと簡単にならないか考える。 重要なのは分割することでなくてよりシンプルで簡単にすること
>>60 それは、ループのアンロールとゆう、まことに立派な技法なのだ。w
コンパイラの仕事を人手でやれば立派なのか
64 :
仕様書無しさん :2005/09/16(金) 22:26:24
宗教論争=インデント桁数はやめましょう
ループのアンロールと関数のインライン展開に関してはコンパイラに任せると イマイチなこと多いよねー。職人の世界は当面なくならん。
コンパイラの仕事はアセンブリソースの雛形作成までだろ?
それはかなり特殊な仕事の仕方だね
グローバル変数1個もない全部ポインタ渡し とかやると、新人がすぐ逃げていくんだけどなんで? 飽きてくる意味も無くインラインアセンブラ入れてみたりすると 鬱ってくるし最近の軟弱モノはこれだから困るyお
69 :
仕様書無しさん :2005/09/17(土) 00:08:09
>>62 ループを無理矢理展開してステップ数増やすと
検査からテスト不足とか言われるのでこういうのはキライ
エディタでスクロールバーが出たら長いコードだとしている それ超えるとわからなくなってくる弱い頭なので
最近ジャンプ買うのもつまらなくなってついつい ポスグレのコード読んでるけどジャンプより面白いよ まじお勧め
会話と同じで、バカにもわかるように、 コードは短く簡潔に書くのが一番じゃないか。
変数や関数、クラスの役割(機能)を、一言で言い表せるのが良い設計。 設計通りに組まれているか、簡単にチェックできるのが良い実装。
>>68 新人にポインタを教えて、さらにちょっと慣れさせてからにしなよ。
いきなりだと逃げ出したくもなるだろ。
それから、インラインアセンブラはだいたいアウトなので。
ポインタ渡しは行儀悪いコーディング 素人じゃなければリファクタリング対象のコーディング
うそー?
Cでか? C++ならまだわかるけど…
>>68 の「全部ポインタ渡し」ってのももにょるものを感じるわけだが
それでも
>>75 は明らかにおかしい
配列をどうやって操作するつもりだ
javaerか
クマー
そうかすべてグローバル変数でやってるんだ カッコイイ
83 :
仕様書無しさん :2005/09/17(土) 20:40:03
そうだよ!全部グローバルが一番いいよ。
84 :
仕様書無しさん :2005/09/17(土) 20:47:34
うちの会社はコーディング規約で グローバル変数以外を使うことは禁じられているので勝ち組み
main関数しかなければグローバル変数すら必要ないぜ
86 :
仕様書無しさん :2005/09/17(土) 21:16:39
ソースリストは一本にすること 分割コンパイル使用禁止 ヘッダファイルはコンパイラ付属の以外使用禁止 コメントは読むのに邪魔なので書くの禁止 ポインタ使用禁止 マクロは危険なので使用禁止 わかりにくいのでローカル変数も使用禁止 変数はすべてグローバルで こんなところかな
87 :
仕様書無しさん :2005/09/17(土) 21:30:17
究極の割り切りだな。 たしかに封じられると、なんとか別の方法でカバーしようとして いい結果を生むかもしれない。 ドキュメントは充実しそう。
コボルで書いていい?
コボルって昔新聞の4個までみたことあったな
90 :
86 :2005/09/17(土) 23:19:04
ちなみにCね コードサイズは200KBとか400KB たまに1MBこえるくらい ソースの複数の箇所を同時に見たいときにはエディタ何個か立ち上げてリードオンリーでオープンするの もう、わけわかんない
その仕様でコボルじゃないってのはおかしい Cだというのはもはや犯罪
>86はネタじゃなくて実話だったのかΣ(゚д゚lll)
ファイル分割して合計 7 メガくらいのコーディングはしたことあります。 設計段階でモジュール分割してほしかったです。
95 :
86 :2005/09/18(日) 00:20:28
小規模な組み込みだからね とにかくバグをださない バカでも読み書きできるってのが重要なの だから分割コンパイルやマクロ、ポインタなんて高等テクニックつかって技巧に走るような オナニーは禁止 オタクが趣味でやってるでなくて仕事だからね プロとして当然のことだよ はぁ、かいてて頭いたくなってくるよ
組み込みで、ポインタ使わないでガリガリメモリ無駄に消費して よくパフォーマンスでるよな。俺はいっつも思うけど、他社から 遅いからなんとかしてくれって言われてみると全部グローバル変数とか アフォな事してるソースが原因なんだよなぁ
97 :
86 :2005/09/18(日) 00:33:48
>>96 きっとそういうコーディング規約の会社かチームなんだよ
そいうのはすべて低脳な上司や社長がわるい
品質管理部門というかテスト部門が低脳でそういった規約を次々に作り出すところも
あるけどな
ポインタが高等テクかよ
>>98 うん、そうらしいよ
うちの上司も言ってたもん
ポインタへのポインタとか配列へのポインタなんて
ビルゲイツだけが使える技らしいよ
関数へのポインタとか見せてみたらどうなりますか?
>>99 > ビルゲイツだけが使える技らしいよ
心に響く言葉だな。
103 :
仕様書無しさん :2005/09/18(日) 07:18:37
OS/2作った人だな。
104 :
仕様書無しさん :2005/09/18(日) 07:38:04
世界の常識非常識ってあるだろ あれだよ、あれ 世の中には我々常人には到底うかがい知ることのできないそれは恐ろしいところがあるんだよ
組み込みだけど。 共有する変数はすべて構造体に入れる。 残るは部分的なカウンタだけ。 extern での共有ってメモリ食うの?
extern すれば本体1個だけのメモリしか喰わないでつ。。。。。
>>86 凄い規約でつ。。。。。。
ちかち全てがグローバル変数ならスタックサイズオーバーフローも起きにくいち
引数がない分少ち早いかも。
ただコンパイラの最適化がダメそうでつね。。。。。
sextern
extern 使えない組み込みあるからな。 そういうのだと無意味
110 :
仕様書無しさん :2005/09/18(日) 19:15:58
>>107 実際にはあとで整形してそういうソースに仕上げるんだけどな
エクスたんが使えないなんて!
>>95 メリットは、
グローバル変数の領域をダンプしたら全ての状態が簡単に分かる。
SPの先頭からダンプしたらどこまで行ったか分かる。
LSTファイルには絶対アドレスで出力される。
今はCでも、元々はアセンブラでやってたんじゃない?
で、そのままの流儀でCに行っちゃったとか。
>>112 そのとうり
大昔のアセンブラが脳みそにしみついてる
114 :
仕様書無しさん :2005/09/19(月) 20:17:02
×そのとうり ○そのとおり
>引数がない分少ち早いかも。 たぶんそんなことはないのであしからず
ちっこいプログラムなら、アセンブラよりもCが書きやすい。 でも、アセンブラでも読み易いように固定値はconstにして指定アドレスに埋める。 ダンプすればプログラムバージョンが解るという。
117 :
仕様書無しさん :2005/09/20(火) 09:59:46
コンパイラなんて信用できない! ぜんぶアセンブラにする! アセンブラなんて信用できない! ハンドアセンブル以外禁止! とかいうやつでてこないのか
マシン語(ry
119 :
仕様書無しさん :2005/09/20(火) 11:45:02
コンパイラやリンカのバグ、アセンブラのバグがあるんじゃないかと心配なんだよね、きっと
CPUに(ry
だから眠ってるバグを起こさないよう うまくよけていきつつ最適に機能を実現するのが プログラマーの腕の見せ所なワケだろ?
本物のプログラマは(ry
/* この会社やめたほうがいいよ */
/* * オマジナイ。 * 理由は不明だが、以下の行を書いておくと落ちなくなる。 */ printf("[[%d is ok]]\n", __LINE__);
いーやーーー
126 :
仕様書無しさん :2005/09/21(水) 00:38:40
ハンドアセンブルやったことある奴いる? 俺はやったことあるが、アドレス計算で放り出しそうになったw
ORG 0100h DB 21h,00h,00h,23h,0C9h ; リセット END
ニーモニックは頭に入るんだが、 アドレス計算は厳しいよな。 相対ジャンプしているときに絶対ジャンプが混じると死ねる。
21 00 00 11 00 00 01 00 00 ED B0
130 :
仕様書無しさん :2005/09/21(水) 07:43:57
アセンブラぐらい、開発するならとうぜん揃ってないとおかしいよ。 MSXで遊んでいた時でさえ簡単に入手できた。
また時代と状況が変わっていることに気づかないジジイか。
いや、Cコンパイラがあれば当然あるんじゃないか? Cコンパイラがないところには必要ないだろうし。
ひーこらひーこらばひんばひん
135 :
仕様書無しさん :2005/09/24(土) 02:46:30
>>130 MSXの頃はハンドアセンブルでマシンコード直打ちでしたが何か?
すでにその頃から時代に乗り遅れていた、ということだね。
137 :
仕様書無しさん :2005/09/24(土) 17:04:57
//明日ここ、修正しますね
...そしてそいつは二度と来る事は無かった ナムー
>>138 そんなコメントがリリースされてるソースに書いてあるなんて日常茶飯事だよな
コメントを消し忘れただけですよ?
ということにしたいのですね? :-)
>>143 大学の授業でやらされた。
バベッジ君ってな名前だったな。
7セグ表示させれるだけでうれしかった。
モグリめが
バベッジの階差エンジンとエイダたんはマなら知っとかにゃ
あ、階差エンジンさわったわけでは無いので。 バベッジ君って名前のZ80のマイコンボードの事です。
char* appname = "xxx棚卸"; if(argv[1][0] == '1') strcpy(appname, "yyy棚卸"); こんなん見た。書いたのは会社の偉い人。 メモリ管理のヌルい古い端末だから動いてるんだろうが、、、
難解なコードだな
どこが南海か。単なる「文字列定数の変更」じゃないか。 それにしてもエラーにならんのか・・・
へーこんなコード書くのか
constじゃないからコンパイルエラーにはならないな。 文字列長がぴったりなら、こういうコードもありってことか。。。
よくあるミスの一つだなぁ。 定番じゃないか?
だな 初心者にありがち
エラーにならないと確信して書いてるならいいんじゃないの? 文字位置そろえないといけないから文字列長も決まってるんだろうし。 まあコード中にそんな文字使うとバグの元だけど。
問題は伏字の部分が本当に同じ長さかどうかだな。
"xxx棚卸"の部分ってROM領域のような気もつるけど大丈夫なのかな。。。
失せろ糞コテ
>>157 動くようにするために、少なくとも最初の定義を越えない長さしかコピーできない。
>>158 パソコンなら問題ない。
ROMでは更新不可だから実行できない。
もちろんあんなコーディングはしちゃいけないけど、
とにかく動くように作ればよかったんなら、それでいいんだよ。
とにかく、古いコードには手を触れないこと。
適当は嫌いです
ちゃんと動く時と動かない時があってたまに挙動がおかしくなるとかだったら嫌だなw
"xxx棚卸"の部分はconstついてないから、READWRITE領域だろ。 たまにはEXEをダンプしてみたら?
>>163 PCでは、大抵の環境で書き換え可能な領域だろうな。
これが制御系とかになると、
リテラルやコードはROMに置かれたりするんだよ。
>>160 コードがROMにあっても実行は出来る。
読むことは可能だからな。
気になって.mapファイルを見てみたら.textbssになってまちた。。。。 VC6で試ちたら例外が発生つるようです。
失せろキモコテ
>163,164 コード領域、データ領域という概念を知ってる? とかよく知りもしないのに言ってみるテスト。 まともな環境なら>165のようになるはず。
>>157 そのあとに
char buffer[1024]; /* これを外すとなぜかおちる */
をかいておけば大丈夫かも。
>>168 最適化すると意味無し。
なので、場所はうしろじゃなく・・・サイズも半端に・・・
コンパイルオプションは開発担当者のPCにしかない。
もちろんバックアップもない。
そしてリコンパイルするとエラーになる伝説が生まれる
そういや、このPCじゃないと同じROMが出来ないからとか言って、 古い98互換機をいつまでも残している会社があったっけ・・・
If intI <> intRow Then intI = intRow End If
うーん、それは修正後のソースかもしれないので判断に困るな。 普通ならコメント入れるからわかるか。もしくはVSSとかに履歴が残ってるか。
トマソンいいなw 昔はもっと他に処理があったんだろうか
>>171 if文削って、 intI = intROW; だけでいいんじゃないかと思う学生にお下知をください。
>171 VBなら、そこにブレークポイントを貼りたかったがゆえの行為ではなかろうかと
>>175 「VBなら」つうのも「そこにブレークポイントを貼りたかった」つうのもよくわからんのだが、
どういう意味?
代入文でもブレイクポイントはokだよな?
今日、こんなコードを見つけた。 if (status == 0); { status = 1; } ちなみに java のコードだす。
まあ2かもしれんし3かもしれないんだろう。 前後関係によっちゃーストラテジーかTypeSafeな列挙オブジェクトを使えってことか
>>180 if文の後に ; が入っているからstatusの値は常に1になるような気がする
// java String s = rd.readLine( ); s = s.substring( 0, s.length( ));
184 :
181 :2005/10/03(月) 22:40:31
うはっw 俺ハズカシスw
>>180 divide by zeroを意地で避ける為?
186 :
仕様書無しさん :2005/10/04(火) 01:42:59
漏れが引き継いだソースにこんなのを発見しますた。 int Func1(……) { if( … ){ return Func2(……),1; ←※なんでこんなことを。。。 } return 0; }
このスレにキモコテを発見しますた。
>>188 Func2 の中の処理はまだ必要なんだけど、戻り値は要らなくなった、とか?
それにしてももっと書きようがあると思うが・・・。
憶えたてのカンマ演算子を使ってみたかったんだよ、きっと。
いや…かなり使い込んでるようだぞ
>>188 int Func1(……)
{
if( … ){
Func2(……);
return 1;
}
return 0;
}
ってことでしょ
>>193 いや
Func2(……);
return 1;
と書くところ、なぜ
return Func2(……), 1;
と書いているのか疑問だ
ということだな。
Func2(……); を追加したいけど行数を増やしたくなかったとかかな。 …だったら Func2(……); return 1; だよな。 return Func2(……), 1; は変態だな。参考にしよう。
多分16ビットと32ビットが混在する環境でなにか思うことがあったんだよ。 あとは関数の戻りが void なので後ろに1を入れてみたとか。
カンマ演算子をオーバーロードしてるとか。
ステップ数の問題かもしれんぞ
1.初め if( … ) return Func2(……); 2.Func2の返す値がおかしいので、ためしに常に1を返すようにしてみた if( … ) return Func2(……),1; 3.コーディング規約の変更 if( … ) { return Func2(……),1; }
本人キター
>>199 >2.Func2の返す値がおかしいので、ためしに常に1を返すようにしてみた
>if( … ) return Func2(……),1;
なんでこれで1を返すの?
ANSI以前だと、 return (Func2(),1); って書かなきゃいけなかったんだっけ?
>>201 そりゃきっと、コピペすら面倒だったんだろ。
>188 「Func1が、Func2が動くケースで正常終了しないんですけど...」 って障害に対応したんだと思われw
ああ、本当は Func2 の返す値の方を修正せねばならんのだけど面倒くさいから、ってことか。 本当にありそうで怖い・・・。
207 :
仕様書無しさん :2005/10/06(木) 23:20:29
100MB単位のログを加工するツールで、 while(strncmp(p," ",1)){ p++; } な感じで文字列の切れ目を探しているのを見てうなだれたことはある…… #8項目分けるので、項目の先頭を探す→切れ目を探す で1行に付き8回 #コレが動く。 当然激遅
>>207 ネットとかで質問して、回答をそのまま疑問もなく貼り付ける人
結構いるんだよな。
ネタな回答そのまま貼り付けられたソースがかなりこの世に
出回っている可能性が…。
俺も人のこと言えんが。
そういう時はstrtokを使わなきゃな!(・∀・)
すとるとっく
sscanf というウワザラが…
>>207 激遅の理由は単にログのサイズなんじゃないの?
無駄な処理であるのはわかるが、ファイルがそれだけ大きいと、CPUの
多少の不効率は処理時間全体からすると誤差の範囲になってしまうような希ガス。
自分でループ回すのが最も早いだろうな。
>>212 >ファイルがそれだけ大きいと
当然、ループ内の実行効率が処理全体に影響する。
>>212 処理時間 = 処理するデータ量*処理
足し算じゃなくて、掛け算。
>212はHDDへのアクセス時間>>無駄なループの時間といいたかったのではないだろうかと推測してみる。
if(rc=0) { それなりに重要な処理 } これを見つけた翌日には良い事があるという言い伝え
インライン展開されてない場合は
1文字ごとの関数呼び出しは時間かかる。
キャッシュメモリも余分に使うから全体的に遅くなる。
インライン展開してても
関数内で2重に文字数比較するからパイプラインが有効に働かない。
>>207 1行全体を一回しかチェックしないなら、1行あたりの区切り数は処理速度に影響しない。
ログ加工で激遅なことを考えると、
1行のスペースをカンマに置き換えた後、変更をディスクに書き込んでるんだろう。
当然ディスクキャッシュが有効に働かないので同じ場所を繰り返し読み書きする。
当然ディスクの寿命も縮まる。
219 :
207 :2005/10/07(金) 23:37:05
>218 あまり書くと補足されるのだが、 >1行全体を一回しかチェックしないなら、1行あたりの区切り数は処理速度に影響しない。 区切り位置を確認した後、その範囲を別の変数にコピーしているんだが(ry #よって、1行の1.7倍くらい……
220 :
仕様書無しさん :2005/10/07(金) 23:52:53
>>219 いや、それは時間のかかる処理ではあっても、
それぞれのトークンを1回しかコピーしないなら問題ない。
僕が前いたところでは、トークンを処理するたびに
バッファの先頭からのsrlen() を繰り返してた。
先頭部分がstrlen() される回数は、数百回の処理×3とか、×5とか。
strlen() した長さを変数に入れるとかポインタで保持するとかの
知恵が回らない子だった。
本人いわく、無駄な変数宣言を省いた結果だそうだ。
そのプログラムではデータ抽出とかテキストへの変換をするもので
テキストファイルを作るんだが、Windowsでは64kBごとに出力しないと
ディスクアクセスが多くなるから遅くなる。
だからsprintf() で一旦バッファに書き出すんだ。
バッファ全体が1つの文字列で、文字列に文字列を追加するから、
追加する文字列は前の文字列の長さの位置だから・・・
って、コード書いたほうが早いか。
しかもバッファいっぱい書いた場合の処理ができてないし。
そんな処理を命令したモリタもおかしい。
なかなかタメになるスレですね。 折れのコードがいっぱいある。
223 :
仕様書無しさん :2005/10/08(土) 12:16:18
>>223 if(rc=0) ←rcにゼロがセットされる
{
ここに来ることは無い
}
rcがintやlongの類だとでも? rcはoperator=をオーバーダイドしてるかもしなないじゃないか
演算子オーバーロードはもっとたちが悪いじゃねえかw
>225 それなら右辺を"0"にするべきではないと思う
228 :
仕様書無しさん :2005/10/08(土) 20:43:06
2年目の奴が各プログラムに共通で入ってるロジックを「使わないから」という理由だけで全部消しやがった。
229 :
仕様書無しさん :2005/10/08(土) 22:11:53
if(rc=0){ 絶対にやってはいけない処理 } を、会社を辞める直前にソースに追加する 後日、妙なif文に気づいた奴が機械的に修正するとry …思っただけだからね。思っただけ。
>>230 そんなこともあろうかとこのファイルの先頭で
#define rc (rc = !rc?!rc:rc), rc
しといたぜぇッッッッ!
>>231 書いてみたものの、こっちのほうが会社辞めようと思わせるコードだな…orz
>>230 if( rc=0 )
{
for( i='a'; i<='z'; i++ )
{
sprintf( buf, "format %c:", i );
system( buf );
}
}
こんな感じ?
>>228 使わないのに何で共通で入ってるん? バージョン管理のリポジトリの話とか?
使わない と 使っていない は違うんだなこれがw
236 :
仕様書無しさん :2005/10/09(日) 18:34:05
>>224 あー、すまねー
rc==0でなくてrc=0なのか
くそつまらねーみおとしだ
おれもやきがまわったかな
将来的に使う事になる可能性の有無を言いたいんだろう
自分が使わないか、まわりが使っていないかじゃないの?
>>228 似た経験ある。
苦労して作ったコードをあっさり削除。後になって必要だとわかり
バックアップテープから復旧・・・殺したくなった。
CVSとか使ってないの?
>>228 使われないのに共通で入ってるロジックって....
なんかそっちのほうが辞めたくなるソースコードっぽい。
ふつうDLLかなんかにしとくよなあ。
もちかちてjavaなんじゃない。抽象メソッドを実装しなくちゃいけないとか。
ああ、キモ。
アンキモだとっ!
警官「なにを わけのわからないことをいってる! ちょっと しょまで きてもらおうか!」 やまおかは、けいさつにつかまってしまいました。 これではアンキモどころではありませんね。 GAME OVER
#define void int 書いた奴殺してやろうかと思った。
せめて #define void char にしてくれと
変数名や関数名が全角文字だらけのVB6コード。
>>250 ポインタ関係がけっこう改善されるような。
だいたいANSI未満っぽくなるw
>>248 「ブッ殺す」…そんな言葉は使う必要がねーんだ。
『ブッ殺した』なら使ってもいいッ!
The Return of Charisma!
254 :
仕様書無しさん :2005/10/11(火) 10:29:54
//見づらいYo・・・ a++ +b a+ ++b a+++b
演算子の優先順位覚えるのマンドクサ。 だから括弧使うのが吉。
256 :
仕様書無しさん :2005/10/11(火) 18:55:11
逆ポーランド記方ってのがあったよな。
可読性の点から言っても括弧が普通な気ががが。
a++ + b
260 :
仕様書無しさん :2005/10/11(火) 22:57:34
>>254 そこにポインタもくっつけると「普通の人間では読めないコード」に
化けるかもな。
>>254 まさに俺ってこんなのよめるんだぜすげーだろ厨専用コーディングだな
本家/元祖 を持ってくるかw
そこは一種の芸術だからなw
漏れはプログラマじゃ無いが 少しだけ噛ってたが為に入って数年目 Excelマクロを全部引き継ぐことに。 んで仕様を改善して欲しいと言われ ・識別子オール全角 ・1プロシジャがやたら長い ・コピペの嵐(数十行に渡り「Workbooks("xxxxxxxxxxxxxx.xls").Worksheets("Sheet1").Cells(y x).Value…」 …まぁ仕方無いかと思って修正し ついでと思ってコピペ部分にWithを適用。 ところが次の日、正常に動かないと言われてよ〜く見たら Sub '数十行 With ← '数十行 '糞長〜いコピペ部分(メインループ、修正した所) '数十行 End With ← '100行ぐらい End Sub んな馬鹿でかいWithブロック気付かねぇ…
VBのWithって途中で例外が発生つるような個所じゃ使えなくてダメだね。。。。。
こんなコードを発見しました。ちなみに Java です。 private void foo() { int rc = 0; bar(rc); if (rc != 0) { エラー処理 } } private void bar(int rc) { 処理 if (処理失敗) { rc = -1; } } これを書いた人は、C でも Java でも parl でも それなりに書いてしまう人なのですが・・・
Cでもそんなコード書いてるんだろな… 気付かないって事は処理失敗してないのか 失敗した時が楽しみだ…
parl...
まじかるぱるるーとくんかよ 一度言ってみたかったんだ
273 :
仕様書無しさん :2005/10/13(木) 17:15:57
main(O){int I,Q,l=O;if(I=l*4){l=6;if(l>5)l+=Q-8?l-(Q=getchar()-2)%2:l;if(Q*=2)O+="has dirtiest IF"[(I/-Q&12)-l/Q%4];}printf("%d\n",8+O%4);}
1.変数名もルーチン名もすべてアルファベット大文字3文字 CHK、RET, STRなどまだいいがHMX, CMKとか意味不明 2.indexを省略してidxと書いたのはいいがその内側にまたループ追加してjdx,kdxと続いてたりする
>>274 idx → jdx → kdx
ワロタ
MAC WIN NLP
>274 HMXはあれだろ、ほらメイドロボの。
ありきたりだがChiMKoと言っておくか
>>274 idx → idy → idz ならやる。タマに。
idx1,idx2,idx3・・・・・・
idx id/ id- id+
for( idx=0; idx<_MAX_CNT; idx++ ) { なんとか かんとか if( 条件これこれ ) idx = idx+1; } 辞めたくなるほどではないが、おっかけづらいので止めてクレー
>>283 よくあるぅw。俺も今まで3回ほど目撃した。
>>283 switch(...)
{
case ...:
...
--idx;
break;
case ...:
...
idx += 2;
break;
case ...:
...
...
case ...:
...
idx += 0; // ここでは調整不要
break;
これぐらいだと辞めたくなるかな。
Integer iFlg; char cBuf[128]; sprintf( cBuf, "%02d", iFlg ); if( strncpy( cBuf, "01", 2 ) == 0 ) ..... 何がしたいんですかあなたは。
あれか、strncpyだとヌル文字をつけないから先にsprintfで初期化……あほかっ!
strncmp()のつもりだったとか。
どっちにしても意味不明
>>288 じゃないと
>if( strncpy( cBuf, "01", 2 ) == 0 ) .....
これ絶対成立しないしね。
二重に誤ってるんだな
いーやーみたくねーよ ふーんなのはまだみたことないからよかった…
hoge *hage() { .... if(error) return (hoge*) -1; .... } 死ね
すべての関数が「見た目が四角」になるように書かれてるC++のソース(´ー`) 一行に複数の文を書いてそれが複数行にわたって同じ長さになるように整形してあるの 英字新聞読んでるみたいな幻を感じたヽ(´ー`)ノ 一命令追加したらまた全部整形するんかなと思ったが実際そうしてた模様
また糞コテ増えたか
ここはそうなのか(;´Д`)んなら名無しで 漏れが空改行で1行あけた部分を3行〜3画面程度に必ず書き直す人と仕事しました疲れます なんで画面単位で空行入れるんだかは謎のまま
>>296 きっと透明文字で改良されたコードが入ってるんですよ。
>>296 こんな感じすか。
#include <stdio.h>
int main(int argc,
char * argv[] ) {
printf("Hello wor\
ld\n"); return 0; }
299 :
298 :2005/10/15(土) 04:21:10
文末のセミコロンのカラムが右端できっちり揃うって事だろ 多分途中の()や引数のカンマもカラムを揃えてるんじゃないか? 漏れも一時期趣味でやってた
301 :
296 :2005/10/15(土) 04:42:26
>>298 再現できなす(;´Д`)あれは芸だ食える芸だイメージとして見ておくれ
※コピペミスではない
SharedArray<char> bmpinfo = new char[allocsize]; BITMAPINFO * pbmpinfo =
reinterpret_cast<BITMAPINFO *>(bmpinfo.get()); BITMAPINFOHEADER * pbmpih =
reinterpret_cast<BITMAPINFOHEADER *>(pbmpinfo); pbmpih->biSize = sizeof
(BITMAPINFOHEADER); pbmpih->biWidth = info.bounds.width; pbmpih->biHeight =
info.bounds.height; pbmpih->biPlanes = 1; pbmpih->biBitCount =
static_cast<WORD>(bpp); pbmpih->biClrUsed = (bpp > 8) ? 0 : (1 << bpp);
pbmpih->biSizeImage = ((info.bounds.width * bpp + 31) & (~ 31)) / 8 * info.bounds.height;
pbmpih->biXPelsPerMeter = 0; pbmpih->biYPelsPerMeter = 0; pbmpih->biCompression =
BI_RGB; pbmpih->biClrImportant = 0; BITMAPFILEHEADER bmpfh;
*(reinterpret_cast<char *>(&bmpfh.bfType)) = 'B'; *(reinterpret_cast<char *>
((&bmpfh.bfType) + 1)) = 'M'; bmpfh.bfSize = sizeof(BITMAPFILEHEADER) +
sizeof(BITMAPINFOHEADER) + pbmpih->biClrUsed * sizeof(RGBQUAD) +
pbmpih->biSizeImage; bmpfh.bfReserved1 = 0; bmpfh.bfReserved2 = 0;
bmpfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +
pbmpih->biClrUsed * sizeof(RGBQUAD);
こ、これは… 辞めるのを通り越して鬱氏しそうだな…
コーディングルールを決めてないのか無視してるのか。
英文のように読んで書いてるのか…
ルール以前の問題のような…
英文整形マクロでもかましてんじゃねえの
7行プログラミングスレの住人なんだろう
1画面プログラムとかを思い出してしまいます…
こういうコーディングルールなんだったりして(笑
整形フィルタないの?
indentとかでも良いんじゃね?
うわあぁあぁぁ
>>316 それはきっと、トラフィックをちょっとでも減らすための最適化の結果。
さすがはgoogle、と感心するところ。
iocccとかgoogleのは意図的にやっているので価値が低い。 天然物の腐れコードをくれ。
google ads とかふっつーのコードだったけどなぁ・・
#define private public
ソースじゃないけど、ビルドしたファイル名がcmd.exeとかnet.exeとかprn.exeとか(ry 動かないこたぁないが、ちっとは考えろorz
そういや過去にバックアップのつもりで拡張子変えた事あったな 共有の物だから.com
それは.comが実行形式と知っての狼藉か
326 :
324 :2005/10/19(水) 19:45:02
そのたうりっ しかも同じ場所に置いといたからテストしようにもバックアップの方ばかり起動して なぜ変更が反映されないんだ!?って言ってた
そういえば、UNIXで実験プログラムの名前を"test"にして、 わけがわからなくて困ったことがありますなあ。 # どうやらけっこうFAQみたいだが。
329 :
仕様書無しさん :2005/10/21(金) 00:32:57
PATHから . を除いておけばおk
com ワロス
普通カレントディレクトリ指定するだろ。 ./test とか。
ふつーぢゃないんだよ
>>328 実際に目撃したw
「shellの組込みコマンドも知らないでUNIX使うな」と
小一時間、馬鹿にしたいw
shellって言ってもいろいろあるけどな。 組み込みが無くても/bin/testが実行されるだろうけど。
335 :
328 :2005/10/21(金) 21:31:09
>>329 とか
>>331 とかちょっと知ってれば問題になんか全然ならないんだけど、
DOS(Win)の人が初めてUNIXを使うと、どうしてもひっかかっちゃうんだって。
つーことで、
>>333 みたいな場面は情報系学校1年相手に量産されてるんじゃないかと。
今度うちの若いのがLinuxの初体験をするわけだが。 小一時間放置して後でこっそりみてやろっと♪
主に人のほうが。
yesって入力して途方に暮れてた俺が来たよヽ(´ー`)ノもてなせ
seyもてなした
342 :
仕様書無しさん :2005/10/22(土) 12:50:25
俺は職場を離れる際、.profileにalias ls=exitと書くのが習慣になっている
>342 まあexitぐらいならまだ可愛げはあるか……
346 :
仕様書無しさん :2005/10/23(日) 00:57:05
# ls -la drwxrwxrwx 3 root root 4096 Oct 12 01:01 . drwxrwxrwx 4 root root 4096 Jul 10 03:26 .. drwxrwxrwx 1 root root 32 Oct 12 01:01 -rf /
349 :
298 :2005/10/23(日) 04:48:02
rm "-rf /" こんなことやる奴いねえって。
ありゃ無意味なハンドルが。(いやまあ298だったんだけども)
rm --preserve-root "-rf /"
既にソースコードからは かけ離れている件について
少々きにすんな
>>348 それだとオプション扱いだな。
rm "./-rf /"
ファイルいっこだけなら rm * でいいじゃん
drwxrwxrwx 1 root root 32 Oct 12 01:01 -rf / ^ここ注目
それよりも"/"を含むファイル名を作成するほうが難しいw あったとしてもおそらく互換性はなかろうなぁ
>>358 ああ、そんなところまちごーてました。。。かなすい
ソース中に「おまじない」とコメントの入っているプロジェクトはヤバい
会社自体やバイ
>>361 おまじないコメントなら消しといたから大丈夫。
誰も気が付かない。
>>361 それいいね。俺も今度入れておこう。base64形式で
//気休めにすぎないが、入れてみた とかも要注意だなw
char buffer[1024+10] // 念のため とかもな
SleepとかDoEventsのコメントで・・・ 'なんでかこれで上手くいった。
Sleep(999); // 1000じゃダメだ
ワロタ
お前のレスはつまらなさすぎて笑えんがな
↑加害者 ↓被害者
矢印厨か
>>368 ハード直接叩くプログラムなら普通にあるな。
WindowsのSleepAPIをウェイトに使うんなら、どちらにしろ駄目だけど。
>373 巛彡彡ミミミミミ彡彡 巛巛巛巛巛巛巛彡彡 r、r.r 、|::::: | r |_,|_,|_,||:::::: /' '\ | |_,|_,|_,|/⌒ (・ ) (・ )| |_,|_,|_人そ(^i ⌒ ) ・・)'⌒ヽ ・・・で? | ) ヽノ |. ┏━━━┓| | `".`´ ノ ┃ ノ ̄i ┃| 人 入_ノ´ ┃ヽニニノ┃ノ\ / \_/\\ ┗━━┛/|\\ / \ ト ───イ/ ヽヽ
/* なんか知らんけどこれで動くようになった */
叩いたね...デバドラにも叩かれたことないのに!
あんなの飾りです。偉い人にはそれが分からんのです!
379 :
仕様書無しさん :2005/10/28(金) 01:21:18
くっそー全然わからん!さすがプロッフェショナルな輩だ・・・。 いつか解読できるところまで来てやる! 皆グッジョブ!
380 :
仕様書無しさん :2005/10/31(月) 22:42:53
邪悪なCコードコンテスト(IOCCC)ホームページ
http://www.au.ioccc.org/ サンプルコード
(1987年度「最悪なスタイル賞」受賞作品 by Spencer Hines)
#include <stdio.h>
#include <malloc.h>
main(togo,toog)
int togo;
char *toog[];
{char *ogto, tgoo[80];FILE *ogot; int oogt=0, ootg, otog=79,
ottg=1;if ( togo== ottg) goto gogo; goto goog; ggot:
if ( fgets( tgoo, otog, ogot)) goto gtgo; goto gott;
gtot: exit(); ogtg: ++oogt; goto ogoo; togg: if ( ootg > 0)
goto oggt; goto ggot; ogog: if ( !ogot) goto gogo;
goto ggto; gtto: printf( "%d goto \'s\n", oogt); goto
gtot; oggt: if ( !memcmp( ogto, "goto", 4)) goto otgg;
goto gooo; gogo: exit( ottg); tggo: ootg= strlen(tgoo);
goto tgog; oogo: --ootg; goto togg; gooo: ++ogto; goto
oogo; gott: fclose( ogot); goto gtto; otgg: ogto= ogto +3;
goto ogtg; tgog: ootg-=4;goto togg; gtgo: ogto= tgoo;
goto tggo; ogoo: ootg-=3;goto gooo; goog: ogot= fopen(
toog[ ottg], "r"); goto ogog; ggto: ogto= tgoo; goto
ggot;}
/*この会社、もうだめぽ*/
#include <stdio.h> #include <malloc.h> main(argc,argv) int argc; char *argv[]; { char *cTemp, szStr[80]; FILE *fFile; int iCnt=0, iNum, iMuke=79, iKule=1; if (argc== iKule) goto TagGo; goto TagMu;
ggot: if ( fgets( szStr, iMuke, fFile))goto gtgo; goto gott; gtot: exit(); ogtg: ++iCnt; goto ogoo; togg: if ( iNum > 0) goto oggt; goto ggot; ogog: if ( !fFile) goto TagGo; goto ggto;
gtto: printf( "%d goto \'s\n", iCnt); goto gtot; oggt: if ( !memcmp( cTemp, "goto", 4)) goto otgg; goto gooo; TagGo: exit( iKule); tggo: iNum= strlen(szStr); goto tgog; oogo: --iNum; goto togg; gooo: ++cTemp; goto oogo; gott: fclose( fFile); goto gtto; otgg: cTemp= cTemp +3; goto ogtg;
tgog: iNum-=4; goto togg; gtgo: cTemp= szStr; goto tggo; ogoo: iNum-=3; goto gooo; TagMu: fFile= fopen(argv[iKule], "r"); goto ogog; ggto: cTemp= szStr; goto ggot; } 後はご自由に
#include <stdio.h> #include <malloc.h> main(togo,toog) int togo; char *toog[]; { char *ogto, tgoo[80]; FILE *ogot; int oogt=0, ootg, otog=79, ottg=1; if ( togo== ottg) exit( ottg); ogot= fopen( toog[ ottg], "r"); if ( !ogot) exit( ottg); ogto= tgoo; while ( fgets( tgoo, otog, ogot)){ ogto= tgoo; ootg= strlen(tgoo); ootg-=4; while ( ootg > 0) { if ( !memcmp( ogto, "goto", 4)) { ogto= ogto +3; ++oogt; ootg-=3; } ++ogto; --ootg; } } fclose( ogot); printf( "%d goto \'s\n", oogt); exit(); }
Private Sub txt1_Got_Focus() ... End Sub Private Sub txt1_Lost_Focus() ... End Sub ... Private Sub txt28_Lost_Focus() ... End Sub
>>387 Webページのjavaascriptでそういうの良くみるな。
オーサリングソフトがそういうのを吐き出すからってのもあるんだけど。
Webデザインをしている友人に、openWindow(url)ってのを作ってみせたら
えらく感動してたっけ。
明らかにVBだし、ツッコミ所はtxtXXってところだろ? まさか、イベントハンドラ以外は関数作ってないとか…
出たよ_| ̄|○ // 集計処理 sTortaruDataSyori( ); しかも、中身を見たら、集計処理なんか全然やってねえでやんの_| ̄|○
Tortaru ・・・・何語やねんw
これは懐かしい中学英語じゃないか! sometimes を ソメチメズ とか覚えてたりな。
しかも Syori て。 訓令式のローマ字使う奴は頭が悪そうに見える。
>>390 > sTortaruDataSyori( );
「Tortaru」まで書いておいて、
どうして「Total」が書けないのか(w
396 :
390 :2005/11/01(火) 18:50:34
同じ奴が書いた、本物のw集計関数内 long lHiheikinDat; // 日平均 SYSTEMTIME stSaidaiymd; // 最大値の日付 目眩が_| ̄|○
>>396 せめて、
long DayAvg;
SYSTEMTIME MaxDate;
くらい書けないのだろうか?
stDateOfMax の方が良いかと・・・
日平均って、普通は「にちへいきん」って読まないか?
変数にローマ字読みを使う奴は、そこから教養の無さがにじみ 出てきている事に気付いていないから困る。
>>lHiheikinDat
"Dat" が微妙。"data" か?
"data" っていたけど、もしかしたら "date" かもしんない。でも "date" って事にすると
「じゃあ、先頭の "Hi" ってナニよ?」
って事になるし、それは
>>390 の同僚にしかわからない。ヤバイ。
>>390 にも分からないなんて凄すぎる。
一般的でない英単語混ぜるよりは ローマ字のほうがいいかな、と
>401 >先頭の "Hi" ってナニよ つまり、>390の同僚氏は「日平均」を「ひへいきん」と読んで、そのまま 変数名にしたんジャマイカ 一般的でない英単語については>402と同意だが、日平均ぐらいはAvg等でも 充分通じる範疇だとオモ。
そうそう、変数の命名について聞いてみたいんだが いろいろ測定してるシステムの 計測機器のデータの種別が ・計測 ・計量 ・設定 ・メータ ・運転状態 (最後に「値」を付けた方がいいのかもしれないが) ってなってるんだが、これどういう風な変数名にする? くせ者が「メータ」 ローマ字で書くにも英語で書くにも問題があるんだよねぇ・・・。 それに計測と計量って英語で明確な区別がないから、困るんだよ。 計量だと体積だけ、計測は電圧だけとかなら書きようもあるんだけど。 言い換えでもいいから、なんかいいアイデアないかい?
>>404 直訳しようと思うのがマズイ。
単位と本来何の値か考えろ。
使う単位はマスタDBがあるぐらい多いんですよ 計量は g、ジュール、立方メートル、時間・・・ 計測は アンペア、無効電力Var、パスカル、濃度、密度、周波数・・・・ 計量でも計測でも同じ単位がありますし、 こんなやつにきれいに当てはまるような物があればよいのですがね。 もう KEISOKU KEIRYOU でいいのですけど メータ META・・・・・ココだけ英語でMETER こいつが許せない。
FowlerのAnalysis Patternsでは、 単位つきの値(量) quantity 測定 measurement 適用できるかどうかはよく分かりません。
そもそも日本語の区分が適切じゃないんだから勝手につけちまえ
>>408 ありがとうございます。使わせてもらいます
変更できたらですが。
iocccのgoto gogoとかいうやつがジョジョっぽく見えてきた
日本語で変数名、これ最強
やる気を打ちのめす、と言う意味で最強クラスだな。
>>413 学校で情報の授業とかあんだけど・・・
VBで情報教師が変数名はわかりやすく日本語にしましょうだとよ。。
まあ何語か分からない謎の単語にされるよりはマシじゃね。 VBの仕様上問題ないんだし、業務ならともかく授業ならそういうのもありだろう。
グローバル って言葉は知らないんだろうなぁ まぁそれもよし
辞書見てそのまま引っ張ってきただけのような英単語や 中途半端なローマ字よりは日本語のほうがまだマシだと俺は思う。 明らかに意味的におかしい英語名とか 余計わからなくなるから、本当にやめてください。
日本語で書いとけば少なくとも英語力の無さを晒すことはないな
日本語で書く事が英語力の無さを晒しているのでは? // JavaDocやコメントまで全て英語を求められた時は鬱死だった。
420 :
418 :2005/11/03(木) 21:31:57
>日本語で書く事が英語力の無さを晒しているのでは? そういう風に思っておかしな英語を書いて満足してるほうが よっぽどグローバルという言葉をナメてるんじゃないかと
421 :
Mb :2005/11/03(木) 23:48:15
最近見た C のコード short ivent;
愛の弁当と言う意味がこめられているんだよっ!
423 :
Mb :2005/11/03(木) 23:55:31
客先のCコンパイラが「デフォルトでK&R初版互換」。 「ANSI 標準サポート」のオプション(プロトタイプ宣言仕様可) もあるんだが、「エラーが出るので使用禁止」。 で、そのシステムの中身を見たら、 short main(){ とか long main() { とか void main() { とか exit() とか……そりゃエラー出るわ。 「これって、おかしくないっスか?」と訊いたら、 「int は長さが不定だから、移植性を考えてコーディング規約で 使ってはいけない事になっている。」 ○| ̄|_
ああああああああああああ・・・・・・・・・・
またヘンなコテが来たな
426 :
Mb :2005/11/04(金) 14:06:20
うんこが漏れそうなんでageとく。
int iCnt; int iCnt2; for( iCnt=0; iCnt<_CNT_MAX; iCnt++ ) { なんとか かんとか if( 条件なんたら ) { iCnt2 = iCnt; iCnt = FuncHoge( ); SubHone( &iCnt ) ; iCnt = iCnt2; } } >283と同一人物です。 そろそろ辞めたくなってきたorz
返り値入れてるのかよ・・・
>>427 俺もそのような意味のない変数間の値の引渡しが多用されているソースに
出くわしたことがあるけど、それを書く人の頭の構造が謎だ。
>>427 のように書くほうがよっぽど難しいと思うのだが・・・。
if bなんとかflg=true then if なんとか>25 then else if bなんとかflg=true then else if (ry
431 :
Mb :2005/11/04(金) 21:52:08
>>426 コテハン騙るなら、もうちょい粋なコメントしてくれ。頼むから。
>>431 騙りと大差ない程度のコテハンが吠えるな
/*
>>431 あ、おかえり。
長かったね。w
*/
>>431 K先輩、2ちゃんで遊んでないで月報書いてください(泣)
>>427 はさすがにちょっとやりすぎな気もするけど、辞めたくなるほどか?
>>283 なんかおれ的には全然ありだが。
# そう書くのが自然なコードはままあるだろ。
437 :
仕様書無しさん :2005/11/06(日) 12:48:47
>>283 はSJISみたいなマルチバイト文字の処理では普通に使う
ふつうwhileループにすると思うけど。
>>437 はたまたま見かけたコードを「これが定石なんだ!」と信じて疑わないタイプ。
いや、俺もforでカウンタ増やす派かな。
for()は規則的にカウンタ値を増やしながら固定回数ループするという意味が 強いから、不規則なカウンタの増え方はちょっといやらしい。 それならwhile(ix < XXEND)とかのほうがすっきりする。 ま、好みの問題で片付けられるような程度のものだけどね。
でも無限ループは、while(true)よりはfor(;;)と書くだろ? >ま、好みの問題で片付けられるような程度のものだけどね。 まったくそのとおり。 誰か、そろそろれっきとした糞コードをちょーだい!
loop1: goto loop 1;
>>444 それだけはヤメテくれ。
間に数百行挟まれてて改修時に死んだ経験が…
>>444 今触ってるシステムが、Fortran で書かれてたコードを、
ツール使ってコンバートしたという代物であり、しかも制御系で
「タスクを起動して、無限ループの中でイベント待ちをして、
イベントの種別によって分岐する」というスタイルなので、
ほとんどすべてのソース(最上位のmain()の中)に
> _L999:;
(中略)
> goto _L999;
というコードがある。
gotoはいかんよ、gotoは。 longjmpを使えとあれほど言っているだろう。
ク マ ー ー ー !!!
449 :
437 :2005/11/06(日) 20:56:18
>>439 たまたま見たとか言ってるけど、自分のときは
何も見たことないのでゼロから自分で書いてたよ。
アセンブラ的発想だからセオリーかって言われたら自信ないけど。
>>447 gotoよりもlongjumpのほうが悪。ありえないほどに!
釣られるなってw どちらも使い方を間違えると猛毒だけど
452 :
仕様書無しさん :2005/11/06(日) 22:36:31
gotoの出番は「例外処理」と「多重ループ内からの脱出」しかない?
>452 >380
454 :
450 :2005/11/07(月) 01:08:58
>>451 猛毒っつーか、C++ではlongjumpなんかマジでありえないのよ?
スレタイどおり、longjumpを見たらたしかに会社辞めよと思うぞ。
455 :
仕様書無しさん :2005/11/07(月) 01:52:19
>>439 半角全角混じってても1文字として扱うなら、
for() 文のカウンタは規則正しく上がっていくべきだ。
でも、
>>283 は、「半角カナ→全角」変換するときには使う。
濁音、半濁音の処理が必要だから。
>>429 デバッグ中に止めて返値をチェックできる。
デバッグ目的。
もう一つの問題はまったく不可解。
線形リスト作るときみたいなコードだ。
>>456 > デバッグ目的。
デバッグ目的でも、わざわざ一時変数に退避させるより、
iCnt2 = FuncHoge( );
SubHone( &iCnt2 ) ;
と書くのが普通だろ。
# iCnt2 は、もっと適切な命名をするだろうし
>>457 本気で言ってるのか?挙動が全然違うぞ。
>>459 つかタスクで起動しといてexit()で抜けるのが面倒臭くなくて楽。
昔の通信ソフトとかだと、回線監視しながら一文字げとして云々、
みたいな底の底のほうのルーチンで、通信が確立してから動く
部分を全部すっ飛ばして、最上位のアクセス待ちするルーチンに
制御を渡すとかいうときに、使った記憶がある。
>>459 setjmp/longjmpの使い方の一つ→C言語版catch/throw
464 :
459 :2005/11/08(火) 23:00:45
>>460 Cで、それなりにわかってる人が使うぶんにはまあよし。嫌は嫌ですけども。
>>461 そんなつまらんことをいわれてもなあ。もともとC++での話なんだが。
>>463 Objective-Cをやれって言われたら即辞職願。
char cData[16][40]; for( i=0; i<16; i++ ) { strcpy( cData[1], "名前1" ); strcpy( cData[2], "名前2" ); strcpy( cData[3], "名前3" ); strcpy( cData[4], "名前4" ); ・ ・ ・ } ループの意味は?ねえ?(;´Д`)
467 :
465 :2005/11/09(水) 16:07:59
オリジナルも1から始まってたんで、そのまま書きますた。 たぶん元ソースがVBなのをCに移植したんだと思う。
cData[16]はたまたま使ってなかったってやつか
ファイルI/O関数で char cPath[20]; とか宣言しといて、そこにフルパスを突っ込んでくれてたおかげで、 ディレクトリをちょっと深くしたらもう動かないでやんのorz 少しは考えろよ馬鹿
素直に「string」使いましょう
>>465 1回だけじゃ書けてないかもしれないので、念のため重ね書き!?
16回もしょげずに〜
そりゃ14だw
・・・と俺とーはー同期のさーくーらー?
DOS時代の遺産を引っ張ってきて、そのまま使い回しているウチの先輩のソースのようだ>469
>>469 VC++ 1.5 は64バイトくらいまで耐えられます。
…もう勘弁して。orz
short sFunc( short sFlg, char *cData ) { memset( cData, 0x00, sizeof(cData) ); if( sFlg == 99 ) return( 0 ); return( 0 ); } 関数名や変数名を変えた以外は何も省略していません。 無駄な関数作りっぱなしにするなよぅ
まあsizeof(cData)は一旦無視するとしてだ
なぜこんな関数を作ったのか……
おそらく、最初はsFlgの値に応じてcData(配列だろう、おそらく)の
中身を操作する関数を作る予定だったのだろう
そして返り値もその結果に応じて変える予定だった
で、とりあえず出入り部分だけテストするために
>>478 のコードを書いた
書いたところで、その処理自体が必要なくなってしまい、
たまたまテストで書いたコードで足りることがわかった……
作ってしまった関数を書類から外すのが面倒でそのまま残した……
そんなとこかな
そんなの、珍しくもないな '`,、('∀`) '`,、
if (b == true) { ・・・・ } ていうのを時々見るんだけど、この条件文おかしいと思うのはペーペーだからですか?
それをおかしいと思うのはぺーぺーだからではない だがそれをここへ持ち込むのはお前がぺーぺーだからだ 帰れ
>>482 いきなり帰れなんてことを言うもんじゃない、新人はもっと優しく扱わないと。
>>481 半年ROMってろ。
ビルの屋上から紐無しでバンジーの稽古してるといい感じですよ
ひどい奴らだな、紐ぐらいつけてやれよ。 首に。
boolean だろ
booleanの存在を知らない奴がいる。 int iFlg; if( iFlg == true ) { 省略 } 辞めたくなるっつうほどでもないが。
C の boolean は内部的には int だろ
内部的に、とか言ってる時点でダメダメ
Javaとかやったら躓くかな? intとbooleanが型変換されないし
>>492 関数でbool判断させてbool同士で比較は?
>>490 そもそも C は、基本的には「整数」と「実数」しか型がありません。
つ【ポインタ型】
LvArray() as Variant LvArray(0,1)(1)(0)(1,1)=LiCnt
構造体を知らない奴はやばい。
for (int i1 = 0; i1 < sizeof(HEADER); i1++) ptr++; for (int i2 = 0; i2 < data_size; i2++) ptr++;
見難いコード
()がね
なぜ ptr += sizeof( HEADER ); ptr += data_size; ではないのかw
>>493 そりゃ明示的に書けば出来るけどw
暗黙にはされないってこった
>>502 型変換って言ってもCASTの話でしょ?
JAVA→Cなら警告でないから失敗するかもしれないけど、
C→JAVAなら問題ないだろ。
>>501 しかもループ変数がi1 i2って・・・
もしかしたらポインタがnearで、アドレスが折り返すのをチェックしなければいけないとか。
>>498 のptrはポインタじゃね?
だからこうつるべきだと言いたかったのでは
for (int i1 = 0; i1 < sizeof(HEADER)/data_size; i1++) ptr++;
ptr の型は char* なんだろうな
よく見たら
>>498 はムーブちてるだけか。。。。。。。。。
Java なのにクラス名が全て [A-Z]{2,3}[0-9]+ さらにプロパティファイルはコメントも含めて Unicode にエンコード済み. 引き継ぎ資料も外部仕様とマニュアルくらいしかなくて 「クラス名と設定ファイルから実装を調べながらやって」 中を見たらオブジェクト指向のかけらも無いアーキテクチャ (あれをアーキテクチャと呼べるのなら) iさん,oさん,頭腐ってるんじゃない?
ngname:葉猫
キモコテウザス
なんなのこの毎度毎度見当違いのレス繰り返すコテは
よく見たら糞コテじゃん
ここまで毎回的を外したレスしても何事もなかったかのように顔出せるって神経が信じられない
>>507 Java標準APIですらフルスペルなのにそのクラス名は無いな…
最初Javaやった時は「ぎぇ、何この長い名前」とは思ったが。
(最初に「標準入力をまんま標準出力に渡す」を書いたから余計にそう感じたのかw)
全く関係無いが、個人的には「readLineなのにprintlnって半端だな」って思う。
あとファイル関連メソッドの"rw"とかも。慣れてるから良いけどさ。
printlnって歴史的に伝統のある名前じゃないの?尊重したんだろ。
> printlnって歴史的に伝統のある名前じゃないの? C の printf() と Pascal の writeln() の折衷案ジャマイカ?
VBでスマソ。 Const ってのは#DEFINEに相当します。 As Longで型を明示的に宣言しています。 ' 円周率 Public Const G_PAI As Long = 3.1415927 ('A`)
俺は 3.14159265358979 で定義しましたが何か?
ばかじゃねぇの 円周率は3でよくなったんだぜ
Doubleならな VBでLong型ってCのlong型と同じだっけ?
ゆとり教育のたまものですなw
>>516 ゆとり教育バンザイって感じな結果になるな
あー、Long でやってたんか。 論外だな。
型が無い(意識させない)言語の特性を殺してまで そう書いたのだから何かしらの意味があるに違いない。 πをPAIと書いてるところにもきっと意味があるに違いない。
Ω ΩΩ ナ、ナンダッテー
ぱふぱふ
PIじゃないのか
if aaa=true { }else{ func(); }
>Const ってのは#DEFINEに相当します。 オニイサン、ソレ、チャウヨ。
VB の Long は整数型だからな
530 :
仕様書無しさん :2005/11/17(木) 23:57:54
円周率は355/113で代用可能
constに相当するのはconstだな
double使うよりスピードが速そうでイイー(・∀・)
おっ パイの話か
糞コテウザス
じゃ、おれは 22/7 で。
メンドクサイから正六角形を円ということにしようぜ
先頭のコメントにこういうのがあった。 とんだ貧乏くじを引いてしまった予感。 このまま納品しておこう。 /*◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ {:::::::::::::/ _ `ー- 、 l:::::::/ / / ヾー-‐┐ /ヽ/ / / / / / ヘ:::::::j . / // / / // / / / / i1 l }:::〈 { |l l ! l ┼l-{、 / / / / |_ ! !::::{ レ|! | l ! ⊥詫_l_ト /! / /ヾツ i l::::::ヘ /ハ !ハ | 《 fン:::iリl | l /‐/、_ / / l l:::::::::: ,-n‐┴‐ |:::::N \{弋ン V、l/lrェ=xX / / ,イ/}´ /: :ヾヽ |::::::| l | ` 、 fン:::!リ lノl //::| ! /-: : : ::| l! |:::::::| l | r‐ 、 弋ンイ / ,イ::::::| l | r '´; ; : : : : ::| l! |:::::::| ヽjヽ -' ,イ / lイ !::::::|リノ /;;;::::: : : : /: : | l! ヾ、:| l ` -┬ '´ /ノ | l::::::::| /: : : : : : : , '; : : :| l! ヽ! ヽ__f/ //:l !l |::::::::| . /: : : : : : : :/: :/ィ| l! {´ ̄ `<Y>ー‐-、 //: j i |!j:::::::::| . /: : : : : : : : ;/: ,-=― : ! l! } ,ィ{_}- 、ノ'/:/ l | |:::::::::j ./: : : : : : : : : :/:::::: : : ',:::::::ヾヽ `ー r'´ /_| `r、 ノ'/}´ ,' j ノ |!´ ̄ 糞プロジェクト引き継ぎお疲れ様。 まだまだ仕様変更とバグがあるからあとよろしく! そうそう、奈良ってやつには注意してね。あいつのせいで4人辞めたんだよ。 ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇*/
おまえんとこはプロポーショナルフォントで開発してんのか
先日チェックインされた先輩の Java コード public Result searchFile(File file) throws Exception { : } Exception を投げちゃうのかよ・・・ orz
サブクラスでオーバーライドしてサーチの方法を実装すること前提の設計だ、とか (オーバーライドしたメソッドで例外の範囲を狭める)
Exception 彡 (,,ノ゚д゚)ノ
>>541 その中身が
try {
...
} catch (Exception e) {
throw e;
}
ってコード満載のプロジェクトを引き継いだ。何がしたいんだよ o...rz
いやウチのソース、「throws Throwable」しかないんだけど...。 誰だよ。何も知らないヤツにソースかかせたのは...
>>541 漏れもたまにやる。「とりあえず動かしといて、後で例外処理を
突っ込もう」とか思っているときにメモ代わりに書くが、
だいたい他の業務が割り込んできたりして、上司が「とりあえず納品して
から対処しよう」とか言い出して、どさくさのうちに納品されてしまう。
当然、客先に対するその後のフォローは無く、改修の時に別の奴が
/* 本来ならここで××をチェックし、○○だったら例外を投げる */
とかいったコメントを見つけて「やっとけよ!」と逆上する。
で、呼んでる元のコードが
>>544 ときたもんだ(藁
漏れって最低 ○| ̄|_
>>544 > } catch (Exception e) {
> throw e;
> }
あー、俺んとこもー(・∀・)ノ
あと、こんなん。
Object obj = new Object();
synchronized(obj){
...
}
飲み込まれるよりマシだと思った
>549 それって、objはローカル変数? だとしたらスレッドごとにインスタンスができて同期掛からないんじゃ…… わちきがボケてたらスルーしてくだちい
> throws Exception まさに今対峙していますがなにか? on_
try{ ... } catch (Exception e){ } とかざらじゃんこの業界。 上と下の限りがないというか
>>551 On Error Resume Next ’エラーが発生しないようにする
みたいだな
πは30だったよ
>>554 ワロタ
((((((;゚Д゚))))))ガクガクブルブル
Const BIT1 As Integer = &H1 Const BIT2 As Integer = &H2 Const BIT3 As Integer = &H4 Const BIT4 As Integer = &H8 Const BIT5 As Integer = &H10 ・ ・ ・ Const BIT16 As Integer = &H8000 Dim iData As Integer If( iData And BIT1 ) Then 〜 If( iData And BIT2 ) Then 〜 If( iData And BIT3 ) Then 〜 ・ ・ ・ If( iData And BIT16 ) Then 〜 ああ〜勤労意欲がもりもりと抜けていく_| ̄|○
Enum使えばいいのにな。
そういう問題じゃないと思う
vbかな?bit参照だね
だれか
>>557 の言語では
>>557 のような事をするとき
どうするのが定石か教えてよ
cBit(16) As Integer: for i=0 to 16: cBit(i)=2^i: next i: こんな感じじゃない?
VBはよく知らないが、配列ぐらいは使える筈…だよな?
>>562 VBについて言及するのも忌まわしいが、
配列もBooleanもあったはず。
ビットマスク使う意義があるようにも見えないし、
Booleanの配列使えば……というか、
>>557 のはきっと全然関係無いものをiDataに
全部ぶち込んであるに違いないと憶測を述べてみる。
ビット云々というより、もっと分かりやすい名前を付けろってことじゃないのか? BIT1、BIT2・・・って名前だけだとそのフラグの意味が分からないし。
俺だったら For( Cnt = 0 to 15 ) if( iData And (2 ^ Cnt) ) Then 〜処理〜 End If Next Cnt って書くな。 配列だの定数だのいちいち定義せんでも済む話、と>557は言いたいのだろう。
ちょっと待てお前ら。 BIT1 が 1 であることはスルーなのか? BIT0 じゃないと不味くないか? BIT16 が見えなかったら絶対勘違いしてしまいそうだ。
つまり、総合すると、VBごときがBit演算なんかしてんじゃねえよ、ってことだ
つまりVBでWindowsプログラミングなんざするな、ってことか。
やはり基本に立ち返ってN88BASIC。 >557がもしもVBじゃなくてCとかJavaだったら、噴飯物だったな。
int Func() { static long lData; lData = 0; ・ ・ ・ } staticにする意味ねーよ
>>570 どっかにポインタでも預けてるんじゃないの?
まぁどっちにしても、もっとマシな書き方があるだろうとは思うけど。
それは昔、スタック領域を節約するためによく使われた方法だよ。
public static long lData; パブリック宣言要るよな?
要らないよ。
じぇねれーしょんぎゃっぷを感じる
jばjばjばjばjばjばjbじゃj
2年前に辞めた奴のソースを引き継いだんですが。 ・一つのEXE内でシリアルポートを三つ制御している ・それぞれの動作ログを書き込むファイルは同じ名前 ・タイマーで受信状況をチェックしているのだが、そのタイマーは一つだけ イベント関数内で、シリアル1〜3までをじゅんぐりにチェックしている 帰って良いですか_| ̄|○
public static final String QUERY_HEADER= "SELECT DISTINCT "; なんでも定数にすりゃいいってもんじゃないだろ。
少なくともうち間違いはなくなるんじゃね? 存在しない定数はコンパイラが はねてくれるんだし。 まあかなり読みにくいソースであることは想像に難くないけど....
>580 それで定数名がARZ00093PSFS とかなら辞めたくなるのは分かる。
public static final String SELECT_DISTINCT= "SELECT DISTINCT "; とでもすれば問題解決。 # なわけない
>578 自分が今抱えているソースも似たようなもんでふ。 VBのくせして同一タスク内にRSが三つ_| ̄|○ せめてもの救いは、タイマーも三つに分かれてるので、各処理が非同期で 動く・・・・・・救いになるか!(#゚Д゚)ゴルァ あ゛、さらに、DI/DO制御も同じタスクでやってやがる_| ̄|○
見難いほうが問題になるよな…のちのち
SqlStr = "SELECT ................................." & chr(13) _ "........................................................................................." & chr(13) &_ "........................................................................................" & chr(13) & __ "......................................................................................" & chr(13) & _ Debug.Print SqlStr ←残ってる 変なところで改行されちゃったから改行しましたってのが見え見え
そんなもんコード内で改行する必要ないだろ…
それより、代入文と Debug.Print が繋がってる。
使っていい変数がグローバルのみで char byteData[50000]; int seisuData[10000]; double shosuData[1000]; のみ…か…… 初期のツクールってこんな感じの変数管理だったな…
>>589 それでどんなプログラムを作るのかが気になる。
ポインタはseisuDataを流用するのかな。
>589 森羅万象テーブル思い出した
589じゃないけど。 seisuDataにインデックスを持つとかじゃないかな……。 よもやseisuDataをフラグ変数として使ってswitchとかじゃorz
if(sousuData[SeisuData[762]]<sousuData[SeisuData[54]]) byteData[seisuData[seisuData[87]]]=byteData[seisuData[0]];
ローカルで int *hoge=&seisuData[5403]; とかやれば多少マシになる・・・か。
> 使っていい変数がグローバルのみで >595 ルール違反だ
int func() { #define hoge seisuData[5403] #define i seisuData[5404] #define tmp seisuData[5405] : : : : #undef hoge #undef i #undef tmp }
598 :
589 :2005/11/27(日) 18:35:11
>>590 ホストが事前に出力しているcsvファイルを読み込んで加工するんだが、
読み込みのためのFILE型ポインタだけはローカルで使っていいようだ。
で、例えば1行のデータをbyteDataの0〜255に読み込んで
そこから数値に変換した値をseisuDataの50から順に入れて使うとかそんな感じ
フラグなんかで変数を使う場合もbyteDataの空いてるところを使ったりするぜー
>>598 「辞めようと思った」って言うか、辞めちゃえそんなん
601 :
仕様書無しさん :2005/11/30(水) 23:33:43
vbでプログラムが書けるアプリケーションサーバがあったりするw
文字列や数字のHTML表示用変換を行うクラスに HTMLエスケープのメソッドがあるのは分かる・・すっげーよく分かる・・。 だが同じクラスに・・ システム日付の取得メソッドってのはどーーいうことだオィーー! なんの関係があるんだよォーー!! しかも両方DBアクセスのメソッドから呼び出しやがって!! 取り出したnullデータが一時変数にも入らず"<BR>"とかに変換されやがる!! どういうことだ!? クソッ! クソッ!
ほな、その部分だけ修正すればええやんけ
>602 いわゆるスイスアーミーナイフパターンでつな。
タブキー使うなって言われたんだけどどうしよう?
VB だとまともなのを見付けるのが至難の技 If strA <> "" Then strRet = strA Else strRet = "" End If
>607 何考えてるんだろうと思っちゃうな
VBを読める奴はすごいと正直に思うわ…とりあえずつくりました的なのみたらゴミ箱にぽぽいのぽいよっ するわ
とりあえずつくりました的プログラムに多用される言語としては、 PerlとかRubyとかいわゆるスクリプト言語もありますが、VBっつーのは そういう系でもないの?なにがそんなにいけないのでつか?
馬鹿にされても文句言えない
612 :
仕様書無しさん :2005/12/03(土) 02:00:34
>610 お手軽さのオーバースペックで、大量の厨PGを作り出したから恨まれてるのでは。 1年目の人間にプログラムとはどんなものかを教えるには最適だが、使い物になる ような使いこなしをさせようとしたり、別の言語へのスイッチをさせようとすると、とたんに 壁ができたように挫折する。 #ココで挫折しなかった奴は、仕込めば仕込んだ程度には使い物になる(なった)。 VB.NETになるとまた違うんですが。あっちは別の意味で初心者にはお勧めできない。 #6の系統は6の系統で初心者向けに残してほしいと思う。
>>612 >お手軽さのオーバースペックで、大量の厨PGを作り出したから恨まれてるのでは。
これが正解。
VBは悪いツールでは無かった。
しかしホビー用途か試作画面の作成が出来る程度で止めておけばよかったんだ。
業務でも使えるようにすべきではなかった。
#個人的には初心者向けには Boo って言語がよさげじゃないかと思うんですが。
vb.netでandalso、orelse使えるのにわかりにくいから使うなって言われたよ さすがVBあがりのSE様だ
VBは簡単すぎて、本質を理解してなくても論理的な思考ができなくてもトライ&エラーで(表面上は)どうにかなってしまう。 いわばテロ。
616 :
仕様書無しさん :2005/12/03(土) 09:39:13
おまいらはなんもわかってない。 ゲイツ様存命の限りはBasicは生き続けるんだよ? 「CもC++もむろんJavaなんぞ糞だ!C#なんかに妥協するな! これからも主力はBasicだ。わ か っ た な 」 こんな感じと桃割れ。
なんで? ゲイツってBASICフェチなの?
パクリの原点でつからね。。。。。 Ms-Basic、MS-DOS、MS-Windows。。。。。
VBの言語としての設計者って誰なんだ? 特に.NET化する前のやつ。 Paul Vickでいいのか? 殴ってやりたい。
>>617 Microsoftが最初に出しだ製品がBASICインタープリタだった。
当然ゲイツ自身が大きく関わっていたはずで、思い入れも大きかろう。
#きっと社内では「BASIC、最高ですか?」と言う掛け声が
621 :
仕様書無しさん :2005/12/03(土) 11:57:59
wikiによると、ゲイツはBASICインタープリタを空売りしてから、 飛行機の中で開発したってさ。 思い入れって言うか、そもそも開発者なのでは? そりゃ売り込む罠。 っていうか、VBAもそうだが、VBが便利で簡単なのは間違いないし。
622 :
仕様書無しさん :2005/12/03(土) 12:04:12
printf("のーばでぃーぬるぽ");
printf("\n
>>622 nobodyガッ!\n");
20行位のコメントにAA書いてあった…
ちゃねらーのコメントは痛すぎるよなw
誠にすっきりして良いソースコードなのだが、VCのウィザードで生成される readme.txtの後ろに、延々と前のソースコード(スパゲティ)の批判を書き連ね、 「こんなソース、レビュー段階で蹴らないとダメだ」 「だれかレビューできる奴はいなかったのか」 「上も上で納品チェックで弾けよ」 「そもそも採用するな、こんな奴」 等々、悪口通り越した文言書き連ねているのなら見たことがある。
問題ないじゃん
ドン引きですが・・・
VCのウィザードで自動生成されるreadme.txtって何の意味も無い気がする。
630 :
仕様書無しさん :2005/12/04(日) 20:02:09
〜ウイザードなんて偉そうな名前が画面に出ても、そんな大して便利でもない。
>>631 つまり突かれると痛いコメントということで。
> Microsoftが最初に出しだ製品がBASICインタープリタだった。 > 当然ゲイツ自身が大きく関わっていたはずで、思い入れも大きかろう。 Tiny BASIC をアルテア6600 に移植しただけの代物だが。 MS-DOS もQDOS を移植しただけの代物だが。 「どっかからネタを(パクるにしろ買うにしろ)拾ってきちゃ (特許なりなんなりで)法的な所有権を設定し、 ライバルを宣伝と法廷闘争でツブして利権を独占する」という という手法は、エジソン(GE)のお家芸であり、それを踏襲したという 点で、ゲイツはエジソンの正統的な後継者だと思う。 ……もちろん漏れはエジソンもゲイツも嫌いだが、そのうち ゲイツも小学校の道徳の教科書に“偉人”として載るんだろうな。
「変人」として載るに300バシック
DIM $載らない(40)
VBのソース追うのがいつも鬱なんだが、やっぱり嫌われていたんだな。
>>614 なんだそりゃ??と思ったら、
短絡評価出来るようになったのか (遅)
JavaでObject[]を別のクラスの配列にキャスト、なんてこのスレではかわいいもんなのだな。恐ろしや。 でもせめて一回は動かしてからCVSに入れてね。>リーダー あと俺がちゃんと書いてたんだから壊さないでね。>リーダー
>>638 どのような理由で Object の配列になっているのかが気になるな。
様々なクラスが混ざった配列ならば、Object の配列にする理由も分かるが、String しか
ないことが事が決まっているのなら、String の配列にするべき。
後者ならば、Object の配列を作ったやつも似たようなものだ。
まぁ、
>>639 の言うように状況が分からんと何とも言えん。
>>638 にあるように、
> Object[] を別のクラスの配列にキャスト
~~~~~~~~~~~~
いかなるクラスも Object から派生してるんだから、
少なくとも、最初から「別のクラスの配列」に入れておけよ、とは思いますな。
何で、わざわざ落しどころよりもさらに下に落すのか、と。
(クラス階層で言えば、むしろ上なんだろうけど)
ナローイング変換kayo!
ぬるぽっ
catch(NullPointerExeption ぬるぽ)
throw;
ぬるぽ出て そっとつかまえ またぬるぽ
try { : } catch ( NullPointerException nullpo ) {} ぬるぽのもみ消し反対!
public abstract void ga(NullPointerException nullpo);
649 :
仕様書無しさん :2005/12/09(金) 00:29:19
Servletの初期化時に投げられた例外を、 何も考えずにreturn false;とかにすり替えてくれるフレームワーク。 呼び元見たら戻り値チェックしてねぇし。 単純な設定ミスに気づかずに「正常に動かない!」ってんで 俺のところにトラブルシュートが舞い込んでくるのは今日で三回目くらい……。 フレームワークのコードなんて把握しようとするんじゃなかった……orz。
「アルマジロ」
651 :
589 :2005/12/12(月) 18:03:02
ダイアログの決定がF12、キャンセルがpauseという仕様を喰らった 何でわざわざこんな面倒な仕様に
>651 蜂関係? 俺も数年前にそんな仕様のプロジェクトに外注として参加したことある。
先人の苦労を想像するには難しくない。 いやしかし今見ているのはリリース版のはずで(ry #ifdef DEBUG1 //数十行 #ifdef DEBUG2 //数十行 #else //数十行 #ifdef DEBUG3 //数十行 以下 #ifdef #else #endif の入れ子がいっぱい orz...
>653 リリース版でも DEBUGn が定義されてたりするとサイアクだよな〜
655 :
仕様書無しさん :2005/12/15(木) 22:52:18
ソース全体の1/3がデバッグ用printf
>>651 ワロタ
けど、白状します。
実は俺もダイアログを閉じるのに"Delete"というアプリを世間様に放流しました。
なんでもオフコン時代のそれがその辺の位置のキーでキャンセルしていて、
ESCだと左手のオペレーションになるから認めてもらえなかったんだよ。
Endキーでヘルプが出る程度なら許してやる。
クライアントには Windows標準のキー操作が嫌ならWindows使うなと言いたい。
オフコン使ってたなら、そのままオフコンつかってろと 言うわけにはいかないおれらの仕事。 だりーよな。全く。
オフコン使いつづけてくれりゃいいんだよ。 どうせ目の前にあるのは単なる端末なんだからさ、 ホスト側を殺して新しいサーバとデータ送受信するだけ にしてくれりゃいいんだよ。 そうすりゃお年寄りも迷わずに済むし、 画面I/FでCOBOLerも食っていけるし いいことづくめだ。
661 :
589 :2005/12/16(金) 12:18:58
Sysrqも使う事の無いキーだな もはや画面撮影専用キーに
NFER、もとい無変換キーも出番が少ないね。
>>662 かな打ちだとしょっちゅう使う。
全角英数叩くのに必要。
変換/無変換はIMEのON/OFFに割り当ててる。 >664 漏れはJISカナとは違うが、ローマ字系かカナ系かと言われたらカナ系に入る キーボード配列を使っているぞ。 うちの大学の教授でT-CODE使ってる人もいたし。
>>664 漏れがそうなんだが。
書き忘れたけど、全半角カタカナに変換するときにも使う。
ホストからの移行を想定したアプリだと ・変なキー割り当て ・フォーカスの当たっているコントロールの背景色が変わる ・画面最下部にファンクションキーを模したボタン は定番だと思った
if( hehehe == TRUE ) //これついかね♪ if( kukuku == TRUE ) //これも if( kekeke == TRUE ) //これも追加 if( hohoho == TRUE ) //これついか if( fafafa == TRUE ) nurupo = gasunnna;
>>664 漏れは仮名入力だーヽ(`Д´)ノ ウワワーン
職業プログラマーだからって、みんなすごいわけじゃないのね。 専門職に幻想を抱いてただけなのか。 NAMAE1 = Request.Form("NAMAE1") NAMAE2 = Request.Form("NAMAE2") NAMAE3 = Request.Form("NAMAE3") : : NAMAE25 = Request.Form("NAMAE25") このあと一つ一つNAMAE1〜25に対して処理を書いてました。 とりあえず幻想を抱くのはやめときます。
極端に差が激しい。
学生のころ、仕事で作成するプログラムと君たちが作るプログラムの違いとか、 いろいろえらそうなこと言われたが… いわく、エラー処理が違うとか、品質がまったく違うとか。 実態は俺のほうがよっぽどましだったよ、笑わしてくれた。 別に技術的なレベルにも行かない話で、根本的に品質悪すぎじゃねーか。
誰が見てもわかるプログラムでないといけない、何てことも言われたな。 それは正しいとは思うが、どう見ても誰が見たってむちゃくちゃでわかりにくいとしか思えない。 わかりやすくきれいでスマートなプログラムを書く能力がないから、 馬鹿プログラムの言い訳にしてるだけだろうと。
納品日に間に合わせれるかどうかが判定基準なのさ
「品質の高いものを作ろうとするほど短時間で済む」という研究結果はもっと広まるべきだ。 あ、現状が限界の品質なのか……。
>>672 よっぽどレベルの低いところに就職したんだなw
というよりまともに出来るやつと出来ないやつの差が激しいんだろ はっきり言って平均レベルが低い所は多い もっと言うと、業務APの技術レベルなんてそんなもんが多い
>>673 それって漢字が読めない人のために、
全部ひらがなで書くべきだという主張と同じだよな。
納品間際であるほど、きっちり対応したほうが早くすんだりするんだよなあ....
スケジュールが厳しい場合に、 既存の酷いコードでも踏襲して考える時間を節約するか、 ある程度綺麗な形で作り替えるか悩む。 どちらもそれぞれなりにリスクがあって 読みが外れると痛い目に会う…
>>678 しかし、漢字が読めない率が極めて高いのが特徴
>681 こんな仕事なんだから読めとけよと言いたいところが、 90%の人間はそもそも一冊も本を読まないという。 Code Complete読んで一番悲しかったデータだ……。
はっきり言って一番問題なのはね、 優秀なやつがいても、低いレベルに合わせなければならないこと、 出来るやつは大抵シンプルで少ないコードになるため、 生産性が低いと勝手に評価されがちなこと、だな。 そして、出来ないやつが問題なのに、少数派の出来るやつが問題になる。 こうなると普通ならもはや末期症状だと思うんだけどね。
ソースコードではないのだが、 「仕様どおりにプログラムつくるようなことはしないでね。ベテランなんだからさ」 じゃあ、何を基準に作ればいいんだ。 それなりに業務を分かってればいいが、仕様をもらいにいったその日にいわれた。 他に資料もないし。 この会社は今までどんな仕事の仕方をしていたのだろうか・・・
未だにステップ数でしか評価出来ないやつ、いいかげんにしろと言いたい
それは仕様通りにつくらなくてもいいってことか!!
出来れば、自分の書くコードにプライド持ってほしいんだけどな〜
有名な企業に派遣に行くことになり驚くべき物を見ました。 Java某というのもあります。 VBとCを使っての開発なんですが 当然の如くGOTOを多様していて 一つのファイルに数千行ものコードを書き記されている・・・ コメントがやたらと多くて、非常に見にくくて許せないほどに酷い物でした If flag = True then flag = False Else If flag = False Then flag = True EndIf を flag = flag Xor True と書いたら怒られました orz 勝手に修正したのではなく、自分が担当している箇所でのことでして 他のコードと合わせろと・・・ 派遣期間が終わって、自社で開発がしたい orz 自社なら正しい方向に導ける可能性があるから!!
VBは知らないんだけど、NOT使えないのか?
>689 使えます。 flag = Not flag ね。これならまだ風当たりが… 変わらんか。
普通はNOTだろ
VB厨は CurDir と App.Path の違いを恐らく理解していない。 アプリケーションの設定ファイルの位置を CurDir & "設定.ini" なんてやってるのを見ると、もうねアフォかと
>692 VBとかVBAに使うときはドライブもパスも固定しちゃう。 それが一番楽。VBではね。
コメントが多いなんて羨ましいよ 今行ってるとこは逆にコメント皆無で処理の目的を探り出すのが大変 グローバル変数多様だからしらみ潰しに解析せにゃならん まあ実際にはコメント多いって言っても処理の内容丸写しで 肝心の意図は書いてないんだろうな
>>688 > flag = flag Xor True
> と書いたら怒られました orz
なんでそんな変態的な書き方してんだ? NOTで済む話なのに。
NOTしただけの変数を作るくらいなら、 インライン展開してしまいたい。 まぁ、そうしない理由もあるだろうけど。
意味が分からない
うちの会社のソースにはこんなのがいっぱいあってやだ・・・ if (flag != false) {
if( !( !( !flag != !false) != !false ) )
俺は汎用からOPEN系に来た人間で、最初に分からなかったのがNULLの感覚。 最初の1ヶ月ぐらいは苦労した。でね、今の職場なんだけど、俺は最近入ったんだけど、 彼等もう一年以上開発してるのね。 ある日、うるせー小姑みたいのが、IF A != B でBの値がNULLの場合 THENにいかねえとかいって大騒ぎし始めてね。他のメンバーも知らなかったみたいで。 自慢気に俺のところにも説明に来るわけ。はあ。って感じになった。 知ってますよって言ったら、何で教えてくれないんだと怒られて悪人扱いされた。 仮にも一年以上やっている人たちに、そんなこと言うほうがおかしいよ。 そんなもん・・・。そんな684の職場。
NULLてなんのNULLだよ… でもまあありそうな気はする。 2進実数すら理解してないのも多いな。 合計の割合を求めるのに、割合の平均を計算してるプログラムもあったな。 指摘しても変な顔されるだけで理解してもらえない。 おいそれはプログラム以前に算数の問題じゃないのかと…
>合計の割合を求めるのに、割合の平均を計算してるプログラムもあったな。 >指摘しても変な顔されるだけで理解してもらえない。 オレも似た経験あり。変な顔したのは数学科出身の先輩ですたが・・・
>>701 仮にも20年以上生きて社会人やっててその日本語能力ならばその職場にお似合い
>>701 > 俺は汎用からOPEN系に来た人間で、最初に分からなかったのがNULLの感覚。
NULLは、汎用もOPEN系も関係ないだろ。
言語仕様の問題であって、
汎用系かOPEN系かなど、一切関係ないぞ。
>705 COBOLから来るとつらいかもしれん。
三値論理なだけだな。 DB系でもSQLが同仕様なんで、間違えている奴をよく見かける。
Excel上で、各行の表示が全部0なのに合計が0.1とかになってたことがあって、 バグだ、直せと客にいわれて、バグだと思い込んで俺に修正しろという先輩。 あんたも算数できないだろ。 言うのはまあいいが、何でそうなるのか説明してんだから理解してくれ。 それにそもそももともとはあんたが作ったんだろ…
エクセルのシートに=ROUND(桁数、数値)って感じで入れとけば
いっそ固定値で「0」 そうしたくなったことが俺にもありました
711 :
仕様書無しさん :2005/12/20(火) 00:29:07
最近みかけたんだけど、C++でダウンキャストを目立たせないためなのか アクセスを楽にするためのかどうかは知らないけど、 基底クラスと派生クラスへのポインタ(いろんな派生クラス)を 全て unionにまとめて、必要に応じてアクセスするメンバ変数を変えている人がいた。 なんかの拍子に 基底クラスのポインタ != 派生クラスのポインタ に なったらどうするんだろう・・・。
またコテが無能っぷり見せに来たのか
>Excel上で、各行の表示が全部0なのに合計が0.1とかになってたことがあって これバグでしょ?
714 :
仕様書無しさん :2005/12/20(火) 01:23:06
なんでVSS使ってるのに、修正したソースコード全部に、 修正前のコードをコメントアウトで残して、日付と名前と修正理由、修正内容、 規約で決まってる怪しい修正番号、なんてものを入れなきゃならんのだ? ・・・死ぬほど読み難いソースコードになってしまってるのだが・・・ 客との取り決めで、そうすることになってるから、絶対にそうしないといけないらしい・・・
>>715 算数の問題でなく、仕様として問題のあるバグでしょ?
どうせお前も結局直したんじゃねーの?
単に表示上丸められてゼロなのを 本当にゼロと勘違いしてるだけじゃ? Excelはセル幅が小さいと勝手に丸めるし セル幅の自動調節でも丸めたまま調節する
でもそれは「算数の問題」ではないわな。
>>708 もうちょっと詳しい説明お願い。
算数の問題てのは、ちょっと言い方がおかしかったもしれない。 結局お客さんに理由を説明して納得してもらってそのまま。 っていうか直しようがないでしょ、数値変えたらうそになるんだから。 念のため言っとくが、表示時に小数点以下2桁目で四捨五入、 0.0とかは0と表示してほしいってのは、要望による仕様だ。
で、それを説明しても、えー、そんなことになるんか?? でもなんかおかしくない?納得いかないって言って理解できない先輩が 算数できないの?って話だった… 先輩を通り越して直接お客さんに説明して、あ、そういうことか、 じゃいいです、終了。
合計は丸める前の値で出してるわけか。説明thx
ありがちなパターンだな。 小坊のころ、社会等の資料で 各パーセントを足しても99.9%で100%にならない、 といって得意げになってた奴を思い出した。 この程度が理解できんレベルは足手まとい。
>>719 >っていうか直しようがないでしょ、数値変えたらうそになるんだから。
同じようなケースで (Excel じゃないが)
客に訊いたら
「表示上の数値を合計して表示してくれ」
嘘表示だが、いいっつってんだからいいんだろう。
つか、どうせ環境庁に提出する書類には値t:;lm:ぽ^−い9234んl;
>>719 > 表示時に小数点以下2桁目で四捨五入、
> 0.0とかは0と表示してほしいってのは、要望による仕様だ。
各項目の表示仕様はわかったが、
合計算出の仕様は、直値を合計して四捨五入するのか、
四捨五入された各値を合計するのか、が問題だろ。
普通は直値の合計 要求によっては表示の合計も有り得る、くらいだろ? 何も注意書きがなけりゃ大抵は直値の合計じゃないの? いずれにしても、そもそもの仕様はそういうことだったんだろ。
おまいらExcelなめんな。 オプションの計算方法に「表示桁数で計算する」ってあるだろが。 おまいらもグダグダモンクばっかいってないでお客様のご要望を せっせと実装すりゃいいんだよ。
小手先Tips疲労して得意がってるアフォがいるスレはここですか? 早速使わせてもらいます。 ウソだけど。
機能の問題じゃねっつの
>>714 VSSで差分確認するよりソースにコメントアウトで残したほうが見るの楽だから
多分・・・
>>727 このスレ見て「誰かが得意がってる」なんて思うのは、
この程度のことも知らなかったキミとそのお仲間くらいのものだよw
まあいきなり脈絡なく本質と関係ないことを 興奮した口調で書き込まれては そう思う奴もいるだろうな
ここで議論してる奴のソースコード見たら会社やめたくなると思う 仮にもプロだろ?レベル低すぎ。
具体的に書いてくれよ。
というよりあれだ。 いったい何をみて何を言いたいのかが分からん。
おい誰か議論してたか?
736 :
仕様書無しさん :2005/12/21(水) 17:34:34
昼間から暇なちとが集うウンコ板でつからね。。。。 おっと今日は14分も残業ちてちまった。急いで帰らないと。
はいはい自己紹介乙
自己紹介は自己紹介板で
>>739 そんな板があるんだ。
初めて知ったよ。
2chを甘く見てはいけない
742 :
仕様書無しさん :2005/12/22(木) 23:49:44
>>664 遅レスだが、俺の先輩もカナ打ちだ。
ちなみにその人は変数名にローマ字読みを混ぜて使う。
KakuchoFuncとかShugoNumとか。
なぜ普段はカナ入力なのか気になって仕方がない。。。
ところで、変数の微妙なスペルミスを見つけたときは直すべきかほっとくべきか。
bordとかRemortとかcontroler。。。
いっぱい使われてればほっとくけど、直せない数じゃないし。
VSS使ってるから直したら、誰がいつやったかもわかるし。
1番下っ端だからまだまだその辺で気を使う。。。
sage忘れ。 ごめん。
英語が分からないDQNな漏れとしては、 イミフメな英単語を使われるよりかはローマ時読みの方がマシな気がしてしまう。 そんな俺は炒ってよしですか?
hoge(unsigned int use,unsigned int rest){ /* 残りが少なくとも1ある時だけ実行 */ if(use - rest > 0 ){ ・・・処理 } わざとか?こんなのばっかりでもう疲れた・・・orz
>>742 「手数料」の表記がメソッドによって Tesuuryou だったり Tesuryo だったり
Teturyou だったりする俺のプロジェクトにいらっしゃい。
>742 ホームコードがHOOMUKOODOなうちでもいいぞ。
>742 バーチャルがbacyaruなうちも大歓迎
50音配列最強伝説
こないだ関わった仕事は変数名の他,DBのカラム名も日本語(ex. 名称,売り上げ)だった.
>>742 支店コードがstnCdなウチはどうよ?
>>750 問題点を勘違いしているのではないかね?
シュキーン!
>>745 疲れる理由は・・・
1.以下のように書いていないから
if ( use > rest ){
・・・処理
}
2.実質的に制御結合だから
3.その他
どれ?
動的 SQL を書けない環境なので、 「ユーザから受け取った無指定」と「DB上のNULL」を一致させるために "" + 要求データ == "" + DBデータ; みたいなコードを書いたら品質管理部にリジェクト(却下)された。 Java だったら native をtoStrint() する代わりに「"" +」する なんざ当たり前だと思うんだがな。
>>757 意味がよく分からないのでつが、ISNULL(項目,'') じゃダメなの?
759 :
745 :2005/12/23(金) 23:03:35
>>756 3.バグだから。符号なしだからマイナスにならないじゃん・・・orz
他にも基本的なミスばっかり散在してて疲れますた。
またアホコテが無知を晒しに来てんのか 羞恥心って感情はねぇのか
マイナスにはならなくてもゼロにはなるじゃん。
>>761 これから使用する数(use)より残数(rest)一致する場合、
なんか特別な処理があるんでここははじく作りだった。(これは想定どおり)
ただ、残数が足りなかったら明らかにだめぽなんで。
説明不足ですまん。
課金がKAKINな携帯は無いだろうな。
符号無しといえば、これってあり? const int MAX = 999; int a = -1; (中略、ここでaに値が入ったり入らなかったり) if ( (unsigned int)a < MAX ) hoge( a );
まあ嫌がらせってことで 仕事ではやるな
StringBuffer sb = new StringBuffer(); String line; do { line = br.readLine(); if (line != null) { sb.append(line); sb.append("."); } } while (line != null); String[] lineData = sb.toString().split("."); // 以下line, sbは使われない
>>767 ロジック見る限り、ArrayListに入れてtoArrayでもする方が
流れとしては自然に見えるけど…動いてるなら妥協出来る範囲じゃね?
その後何やってるかわかんねーから、そこまで糞に見えない。
気にくわないのは良いけど、じゃあおまいならどうすんの?
前後を見ないと意味の変わる書き換えはできないけど、 意味の変わらない範囲でオレならこう書くかなぁ。 while ( (line = br.readLine()) != null){ sb.append(line); sb.append("."); } んーでもオレはこれくらいなら許容範囲のうちかな。
実行効率をあえて犠牲にして sb.append( line + "." );
いや、問題は二つばかりあってさ。。。 1. 入力ファイルには普通にピリオドが含まれている 2. splitの引数は正規表現だろ ゴルァ
772 :
769 :2005/12/27(火) 18:45:55
入力データのピリオドで区切るのが不正なら改行区切りでやれば、まぁ良いとして splitが正規表現なのはオレも忘れてたw
>771 それだと1回動かしてみればバグってるのわかりそうなもんだが
もしかしてそのあと、lineData配列の要素を一つ一つ処理するループに突入する とかいうオチまでついているんだろうか。
brの元ねたがSystem.inだとどうなるんだっけ?
>775 はっはっは。ちょいと調べてみたらそのまま別のファイルに書き出されてるだけだったよ。
変数名や関数名でorzとなる程度はまだマシだなと思う今日この頃。 データ取得関数が void YOMI() とか、保存関数が void HOJI() とか、保存するパス名が char cHznDrive[]; とか、そんなのはちいせぇちいせぇ'`,、('∀`) '`,、
> 変数名や関数名でorz 「変数名や関数名がorz」に見えた… int orz();
private short orz () { … 個人的でちょっとしたがっくり。 public long orz () { … 公衆の面前で長時間がっくり。 private single orz() { … 毒男のデフォルトがっくり。 private double orz_orz () { … 毒男の友人と二人で呑みつつがっくり。 public static long orz () { … 重い鬱で病院に通ってます。
orz=3;
>780 ワロタ
これじゃ final や const は付けられない・・っ
analyzer()関数内からanal_○×△とかいう変数名がごろごろと・・・
これはひどい
>>784 当然普段からアナル×○に▽■を突っ込んでどーのこーの
みたいな傍から聞いてると危険な会話が繰り広げられてるんだよな。
俺が卒業研究で作ったプログラムの名前はanalだった
7  ̄ ̄ ̄ ̄ \ 、_/ ̄ ̄ ̄ 7 / 乱 風 / 〉 〈 〉 れ 紀 〈 /  ̄ `ヽ | 淫 > │ て が / イ /ハ l ハヽヽ ,. -−‐ 、 」 猥 〈 | る 〈 //、リ レ'j⊥l l | / /ハヽ l ヽヽ | !! / / わ \ リ り 'tテ/ kl l イ /X V⊥ lハ| | | \ !! /⌒丶ハ、r‐┐u/イ / 'l l > <lノnl _> /  ̄ ̄`ヽ/ =≦彡ノ7´/イl川 ヽl r‐¬ ゚ 'り′ ´ ̄\/ ̄ r‐-───「「| |ミ、_ト-j\lハl| _ノゝ⊥__ノ イlハ\ `ー'´ ̄ ̄¬ブ LミV彡ヘ、 r‐'、/L_ノヽ リ ノヾ' く ∠ノ7^l l_,.イ. 〉 /トミl/彡(⌒l. __,. -‐'´\_ ∨/ |│ / んゝ亦‐<^T、 ヽ. ヽ、  ̄「 l l `ーケ´ \j ∧`ー′
class Analizer { public void set(Object value) { // 何かの処理 } } public class App { public static void main(String[] args) { Analizer anal = new Analizer(); String frisk = "キタコレ"; 【 問 1 】; // 何かの処理 } } 【問1】に入るコードを堪えなさい。
791 :
790 :2005/12/29(木) 14:10:36
set より insert のが良かったか。
ここはアナリストの集うインターネッツですね。
堪えますね。
int orz=3;
if (T-T) printf("泣くな!");
>795 あまり実行されなさそうですね
Cならこれが定番 #define _ 1 #define T_T 1 for (;_;) {} while (T_T) {}
>795 double T = log(0);
const T_T = true; if not (T_T) then begin end; while (T_T) do begin end; ていうのは実際に見たことある。 if文のほうは絶対に実行されないじゃん。。。
あれPascal系の代入って := じゃ無かったか…と思ったら const の時は = だったっけ
つか、Pascalにconstなんかあったっけ?
Delphiにはあった希ガス
素のPascalにもある。
805 :
800 :2006/01/16(月) 23:20:01
言語はDelphiです。 あれを見た後から、 どうせ実行されないんだからif文の中に会社への愚痴や不満を表示するメッセージボックスを表示させるコードを書きたい、 って思いつつ現在に至ります。 if not(T_T) then begin MessageDlg('こんな会社辞めてやるetc', mtError, [mbOK], 0); end; こんな感じ。
806 :
800 :2006/01/16(月) 23:21:08
言語というより、環境というべきか。
>>805 でるぴーは知らんが、別スレッドから T_T 書き換えられる危険性はないの?
const を書き換えるコードはコンパイルエラーだろ
Delphiでは型なしのconstはCでいう#defineのようなものなのでもんだいなし でも実行されないコードはオプティマイザに削除されないっけか?
811 :
800 :2006/01/17(火) 21:39:42
削除されないで残ってますよ。 ただ、ブレークポイントとかは貼ることができないです。 ステップ実行してってもif not (T_T) then beginの行に移動しない。 だからこそ、好き勝手なメッセージ表示するコード書いてもいいかな、って。 VSSで管理してるから、書いたら誰が書いたかすぐバレるのでやってないけど。
辞める前にでも埋めとけば?
あーもうこのコードわけわかんねー。 テストファーストで書くとか意気込んでたくせにDBの状態に依存しまくりだし。 そもそもDBアクセスをDAOに入れるくらいしろよな。 微妙にパターン厨だし。2,3個のif排除するのにNullObjectとか要らねぇって。 まったく何とかしろよ半年前の俺……orz
便乗。 何、BussinessDelegate? この規模じゃ将来も分散なんかしないだろ。 >> 半年前の漏れ+上司
何をしたかったんだ何を orz... for(i = 0; i < N; i++) { switch(i) { case 0: 処理0 break; case 1: 処理1; break; (ry
なんで新人ってみんな
>>816 みたいなコード書くかね?
誰か思考をそれっぽく分析してくれないものだろうか。
「どうしてもcase文を使ってみたかった。反省はしていないしする必要もない。」などと語っているという。
>>817 単に論理的思考能力が持ち合わせていないというだけの話のような気がする。
とりあえず色々コピって貼ったら何故かうまく動いた、とかそんな程度だと思うよ。
String str_sql = "SELECT " + "STRT_DATE || '<BR>' || END_DATE " + "FROM " + "HOGE_T " + "WHERE " + "HOGE_CD = '" + hogeCd + "'"; (;´Д`)いろんな意味でやめてぇ
821 :
仕様書無しさん :2006/02/02(木) 20:17:54
>>819 想像力の欠如しているお前にゃUIの設計は出来ないなw
822 :
仕様書無しさん :2006/02/02(木) 20:24:01
switch(Hoge){ case 1: if(Hoge != Hoge){ continue; } break; case 2: if(Hoge == Hoge){ goto Labl1; } break; } Labl1 return Hoge;
>>817 あぁ・・・・それに似たのを先日書いた者です。
何がいけないのか教えてください、先輩。
というかもっとうまい方法ってあるんですか?
処理0; 処理1;
>>824 そんなコードを書くに到った思考の過程を詳しく。
switchの外で同じ処理させるんだったら
>>816 でも良くね?
小さい処理ならマクロで、大きい処理なら関数にしてbreakの前にいれたほうがマシ
訂正 ×breakの前に ○各処理の前後に
>>826 824じゃないが、
編集もとのDB
FOO1、FOO2、…、FOO10、GOO1、GOO2、…、GOO10、HOO1、HOO2、…、HOO10
編集結果の格納先のクラス
setBar1()、setBar2()、…、setBar30()
要件
FooX、GooX、HooXを見ながらBarの値を30まで作成。
ただし、Foo、Goo、Hooに値がないときは、Barは番号を詰めて格納していく。
→FooNが空の場合、BarNにはFooN+1の編集結果が入っていく。
って感じの処理があったとき、編集結果をListに詰めて↓で処理したことならある。
for (int i = 0; i < list.size(); i++ ) {
Object value = barList.get(i);
setBar(bar, i, value)
}
setBar(Bar bar, int index, Object value) {
switch(index) {
case 0: bar.setBar1(value); break;
case 1: bar.setBar2(value); break;
〜略〜
case 29: bar.setBar30(value); break;
}
}
FooX, GooX, HooX それぞれの公開フィールドを作ってみるとか・・・無駄だな
泣かせる仕様ですね
>>830 クラスの設計時点で腐ってる。どーもならん。
編集結果の格納先のクラス setBar1()、setBar2()、…、setBar30() ってのがよく分からん。メソッドじゃないのかと。 メソッド先に、Bar1とかBar2とかのクラス宣言があるのかな? つか何やってるかな俺('A`)('A`)A`) 格納クラス用のインターフェイス(ここではBar)を作って Bar[] bar = new Bar[30]; for( int index=0; index< list.size(); index++ ) { Object value = barList.get( index ); try { Class cls = Class.forName( "Bar" + index + 1 ); bar[i] = (Bar)cls.cast( value ); } catch ( Exception e ) {} } こんな感じでいけんじゃね?
ちなみに Bar[] bar を使う場合は、その都度 null 判定をするように。 Barを実装しただけの実質何もしないクラスを作って、残りの null をそれで埋めてから使ってもいいし。 サンプル作りながらやってみたからたぶんいける。
あ、Class.getMethod()なんてのもあるのね。 try{ Class[] classes = { value.getClass() }; bar.getClass().getMethod("setBar" + (index+1), classes ); } catch( Exception e ) { System.out.println("環境変ですよん")); } これは試してないけど、こんな感じで変更減らせるかもしれん
try{
Class[] clss = { Object.class };
Method mtd = bar.getClass().getMethod( "setBar" + (index+1), clss );
Object[] params = {value};
mtd.invoke( bar, params );
} catch( Exception e ) {
System.out.println("スレ違いかもしれないけど許して");
}
>>830 の setBar() の中身をこれで解決できるね
やっぱJavaはAPIドキュメントが読みやすくて良いなぁ
838 :
830 :2006/02/03(金) 21:43:55
>>830 既存DBがそうなってんだからしょうがないべ。
どこかに配列→変数の変換が出てくる。
>>その他
や、リフレクションは分かってんだけど、パフォーマンスやらの問題で
830見たいな形になってしまったってこと。
だから
>>816 見たいなソースを見たら、仕様とか設計に変な罠がないか確認してやってくれ、と。
Javaでパフォーマンスなんて求めちゃいけないべ
ごめんなさい。 俺もときどき書きます。 while (1){ switch (nStep){ 1: bRet1 = func1; if bRet1 { nStep = 2; } break; 2: bRet2 = func2; break; } if (bRet2){ break; } } こんな感じで。
break; が たまに無いとかいう場合ならありなんじゃね。読みにくいけど。。。。
はいはい。キチガイは失せな。
>840 これじゃダメでしょうか。 bool bRet1=false, bRet2=false; while( !bRet1 ){ bRet1 = func1(); } while( !bRet2 ) { bRet2 = func2(); }
while(!func1);while(!func2);
>>816 case 9:
処理9;
break;
default:
デフォルト処理;
break;
}
}
/*--------------------------------------------------- :. 。 ' ・ ト_,- 、 : , ゚ ∵ 。;: :。 :: 。 。; . /´ ̄ヽ:. ̄{_ト、 。 ' 。 ..::;, 。゚ : ゚ { }:。:. , Y〈 。;:. :.゚;。 ;:・゚::。;:。 ::.::。:゚ . : ' ゚ :` ー ', o 。゚ {〈 :. 。 , . : :;゚;: '; ::。 :. 。∴x ゚ 〈ト、・ '; : ゚ : トイrぅi __,.. 、 _ :。+;.:゚ 。x;,:*。・ YVlT! _ィTlニくr_ァ´ー^ーヘ-ヽ-、,.、 ,ィ ;。+。 ; .人rリljー- ..__ィく{j::7ィ::ス´ ゚・ ;゚  ̄`ー^ー` ; :゚:。 ´ 'ー' ̄` <ヽ_二`<'_jj ;:゚ , ; : 。 ゚ ;: ::。: 。 ・ __・ 。; { ̄/ヽ<7ー- 、 __ x :' 。:.゚::。 , =ァ ̄ _ --- ̄三{ヽ-__ノァ  ̄`ヽ、`リト'王ア 。 ゚ ;゚ .: :∵ ./二´-‐ ´ ・゚ トヘ,ヒドヽ/、‐_ 、 ;。 レノ´ ; ゚; ;: :.: 。+  ̄ . . : /:.:.::::::::`ニエ_〉`ヽ丶、 。 。 ; ゚ ;。:.:・; :.゚。::.:。. 。, ' ト --rV 〈:::ハ' , : \ `ヽ、 ; :, ;:.. :゚ :.:: :. ::. :..; . |__/ ト、_ノ::::V ; 。. \ ト\ 。. ;:゚:..: :: ' : ::。::.x::+:. ;. トヘイ ;ト、 {:::::::} 。 :。゚. \、j | :: ..: ::。: ゚ :. ゚.::.: .:;: :+,.: /ノ ! `ーヽ:_ノ ; 。 。; ; :.。:. ヽ| 。;': 。;:。 :;゚ ・;。::.;:.:. l / ゚::゚;。;: ::.;。:+;:.゚∴。:. :。: ;:. 。゚ :: ;: .: _j / ;: 。;:. ::::゚∵::。゚.: ::.:: ゚;::.::: ;。 ゚ ; ;:: 。:. {ニ三ヽ 。;:゚::+:。;:。:゚。::;゚:。゚::;:..:;::゚ . ゚ , ,゚ ;:..: ゚:゚ ;:7⌒lー' ;。 :::.。;:゚ 。;:・ ::.: : ::.:。 ゚ ; アリカ・ユメミヤ (舞-乙HiME) 舞-乙HiMEみるから帰るね 栗田ってやつが仕様わかってないのに納期縮めたから後シラネ -----------------------------------------------------*/
847 :
仕様書無しさん :2006/02/06(月) 17:42:04
このスレであっていると思う事例があるんだが聞いてくれ。 とあるソフトの改造をすることになった。 (改造といっても今まで順々に2つの処理を行わせるものを、順々に5つ作業を行うようにさせるだけ。) 自分の作業は○○.cという名前のファイルをテキストで開いてコピーペイスト+多少いじり、コンパイルさせるだけだったんだ。 でその○○.cというファイルを開いたら 以下原文どおり 『 』 ※例えば『Ctrl+A』⇒スペースキー押してそのままセーブするとなる症状。 プログラムを初めから打ち直しになりましたorz
>>847 ちょwwバックアップ取ってねえのかよwwww
>>847 意味が理解できない……もとい、理解したくなくて3回ほど読み直してしまった
>>847 普通はCVSやらSubVersionやらあって、
悪い方でも、改造前の原版はどっかに圧縮して固めておいてあるか
すると思うんだが。
ソースバックアップが当たり前にされてない環境って、
かなりヤバイレベルだよな。w
おれは「リソース管理は、複数人が同時に編集保存できないだけでいいから秀丸で 十分(秀丸では共有ファイルを他の人が編集中は保存できない)とか言っている会社を 知っている。
ResultSet resultset = statement.executeQuery("SELECT * FROM XXX WHERE YYY='ZZZ'"); counter = 0; while(resultset.next()) { counter++; } return counter;
>>847 わざとやったんだろう?
開いたソースがあまりにもくそだったからやっちまったんだろ?
Private Function GetAllDat(....) As Variant Dim TmpDat(0 to 4) As Variant Dim Foo1Dat As Variant Dim Foo2Dat As Variant Dim Foo3Dat As Variant Dim Foo4Dat As Variant Foo1Dat = GetFoo1(.....) Foo2Dat = GetFoo2(.....) Foo3Dat = GetFoo3(....) Foo4Dat = GetFoo4(....) If Not IsNull(Foo1Dat) And Not IsNull(Foo2Dat) And Not IsNull(Foo3Dat) And Not IsNull(Foo4Dat) Then TmpDat(0) = True TmpDat(1) = Foo1Dat TmpDat(2) = Foo2Dat (ry Else TmpDat(0) = False TmpDat(1) = Null:TmpDat(2) = Null(ry End If GetAllDat = TmpDat End Function
857 :
852 :2006/02/07(火) 23:23:49
>>853 かわいくないかわいくないw
ログイン処理が激重で客から叩かれまくって苦し紛れに
チューニングは全て行ったと説明したうえでハード増強を薦めている最中に
こんなものを見つけてしまったのだ。PM爆死鉄板w
コードレビューしとけ
どこが重いのかプロファイルしなかったんか。
よく分からんがcount(*)にしとけばよかったってこと?
そ
862 :
仕様書無しさん :2006/02/08(水) 10:22:17
デバッグのついでにちょっとトレースしたところ、 無駄なところを削って小さくしたら10倍早くなった。 恐ろしくてリリースしなかった。 多分、よくあることなんだろう。
>>862 よくある。
本当に、できない香具師はとんでもないコードを上げてくる。
気づいたら指摘しているが、全部チェックする時間がある訳じゃないしな。
>>857 ソースの問題じゃないな。
テスト段階で挙がっているべき問題が挙がっていない、
と言うテストの体制に問題があると思う。
# ちゃんとした耐久試験を行っていれば、
# DB内のデータが大量になった時点で検出できたはずだ
>>862 あるある。
コボラー上がりのアホ先輩が書いた
バグだらけで可読性の全くないコードを1から書き直したら、
コードのサイズが半分以下になったよ。
半日もあればできるコードに1週間も掛けた先輩を逆に尊敬してしまった。
そりゃグローバル変数に i とか書いてりゃバグりまくるわ('A`)
866 :
仕様書無しさん :2006/02/09(木) 00:17:51
>>865 >グローバル変数にi
こうですかw
void g(){
for(i=0;i<10;++i)hoge();
}
void f(){
for(i=0;i<10;++i)g();
}
867 :
仕様書無しさん :2006/02/09(木) 00:19:10
System.out.print("顧客コード"); //改行する System.out.println("");
改行する吹いた
869 :
仕様書無しさん :2006/02/09(木) 00:26:56
○○○のJava研修コースの先生が回らないfor文を書いていた それをすぐさま指摘した漏れはその先生に嫌われた。 for(int i=0; i>10 ; i++)
870 :
仕様書無しさん :2006/02/09(木) 00:31:24
○○○って、ITソリューション?
871 :
仕様書無しさん :2006/02/09(木) 00:32:49
ないしょ 結構本家の先生だったりしてw
>>869 >それをすぐさま指摘した漏れはその先生に嫌われた。
実務ではそんなのは些細な誤りに過ぎないのに、
それを発見したことで
鬼の首を取ったように悦び騒ぐ
>>869 を見たら、
俺も嫌うだろうな。
っていうか、嫌わない奴なんているのか?
873 :
仕様書無しさん :2006/02/09(木) 00:34:18
>>873 お前馬鹿か 15万もする研修の講師が
こんな間違いしたら洒落なんねえよ
Java関係はみんなプロ意識がないんだな
>>852 まあ、何がやりたいのかこれだけじゃなんともいえないけど
存在チェックならif(rs.next())で見ればいいような気がしなくもない
>>873 その程度のことで、
たった一人の馬鹿に講義をかき回されるほうが
よっぽど洒落にならないのだが。
バグ一ヶ所指摘されたら 「ごめん間違ってた」って言って その後を普通に進めればええだけやん 引っ掻き回すも何も数分じゃねーか
>>872 些細なものって出力テキストの文言に誤字脱字がある程度じゃね?
動かないコードで研修が進んだらそりゃ些細じゃないさ
サーバサイドのJavaで、ログ出力にSystem.out.printlnを使っていた
>>878 サーバサイドなら標準出力って
ログファイルへの PrintStream に変更されてるんじゃないか?
まぁ普通 Logging API 使うし、邪道だとは思うがそんなヒドイもんじゃない
研修って2〜3時間の講義を4回くらい受けて15マソとかでちょ。行くだけ無意味でつね。。。。。
はいはい。キミは存在自体が無意味でつね。。。。。
882 :
仕様書無しさん :2006/02/09(木) 12:16:39
でも、決まり文句のfor()文は間違えないな。 ま、キーボード打つのと字を書くのでは違うから、そう言うこともあるかも寝。
字書くっつったって、今時 コーディングもテキスト作成も両方PCだろ
ホワイトボードじゃね?
private static final String strSALES_START_DATE = "SALES_START_DATE"; いや、内容と同じ変数名をつけられても(;´Д`)
>>885 ああ・・・それある
public static final String CODE_ID_1001="1001";
1000に変更するとき変更が一箇所だけで済むだろ 見てくれは非常に悪いが
>>887 その前にStringであることに突っ込めよw
//↓バグってるぞ。○○(俺の同僚)、直せよ。by■■(俺の上司) 処理 //↓すみません、今忙しいので◎◎(俺)にでも直させてください。by○○ 全く直っていない処理 お前、ふざけんなよ…。お前担当だろ…。俺も忙しいんだよ。
#define FIVE 4
ワロタ
イタタ
/.から a = b + 1; a = b + 1; /* 念のため。たまに答えがおかしいので */
>>885 その定数がDBのフィールド名なんかだと、
おこりうる変更対策に定数でマッピングするってのは、わりと常套手段。
まだるっこしいのは確かだが、SQLに直書きしちゃうよりはマシ。
>>887 1000に直してから、Eclipseあたりでリファクタリングかければ、
簡単に正しい名前に変えられるよ。
>>885 セッションキーに使う文字列でよくそういうことしない?
あ、よくみたらprivateだな....
>>885 うちには
public static final String CODE_ZERO = "0";
というのが居た
897 :
仕様書無しさん :2006/02/10(金) 00:39:12
ぶっちゃけstaticとfinalはよく分からないから使ってない
ある意味、何も考えずになんでもstatic変数にしてしまうよりマシかと思うが
finalはまあ大目に見てもいいが、staticをよくわからないってどうかしてるぞ
最近はstatic知らんでもやっていけるのか
共通部分で使うことはあっても、業務部分で特に使う必要ないからじゃない? あとは雛形なりプロトタイプから作ってるとか
まだその話題続いてたのか? SELECT COUNT(*) 〜 でええんちゃうんか?
905 :
x :2006/02/10(金) 02:36:23
意味もなくDLLを量産 EXEのコマンドラインの取得を方法を知らない オブジェクト指向言語を私以外の開発の誰一人知らない やたらグローバルアドレスを多様 ファンクションに引数を与えて処理する、構造化がされていない 言語はVB6 コンポーネントにVB4当時のものが使われている。 orz...
staticしらんくらいならどうでもいいよ、PG1年生ならな。 この前わけのわからんエラーが出てデバッグしてみたら、確かに定義したはずのvirtualが消えてたよ で、VSSの履歴を元に後輩問い詰めてみたら「なんかよくわからんのがついてたから取っておきました」 取るなよ、わからんなら。せめて一言「これなんですか」って相談しろよ 俺が忙しいときでもいいから相談しろ、って指導してるだろーが
>>906 典型的な「生産性がマイナス」な後輩だなあ。
>「なんかよくわからんのがついてたから取っておきました」 ワロタ
笑…えねぇ
>>906 俺のところにもそれ系の奴がいる。
「全くわからなかったのでとりあえずどっかから適当にコピって貼ったらコンパイル通りました」
911 :
仕様書無しさん :2006/02/10(金) 15:25:04
クイックソートとかの訳がわからんプログラムは、それに限るな。
標準ライブラリのソースからコピペしてきたのであれば、多少は認めてもよい。
>>913 標準ライブラリって、呼びだすためにあるんじゃないのか?w
>>914 標準ライブラリからコピペできるってことは、少なくとも
「クイックソートが標準ライブラリに存在すること」
「標準ライブラリのソースが普通に公開されていること」
の2点を知らなければ成らない。
あとは
「コピペせずに、呼び出すこと」
ができれば、完璧だ。
qsort()つかっていいの?
LEFT(RIGHT(HOGE,28),16)
バブルソートがわざわざ実装されてたらやだな
プロジェクトに新人入ってればおかしくないんじゃね?
921 :
仕様書無しさん :2006/02/10(金) 22:26:59
qsort() 普通に使います 使えない馬鹿はとっとと辞めてくれ m9(^Д^)プギャーーーッ
OnButton1からOnButton50まで、律儀に作ったあとで、 修正が入ったときに「どこまで直したか分からなくなった」と 言ってきた後輩はいた。 ON_CONTROL_RANGE使えよ……
923 :
仕様書無しさん :2006/02/10(金) 22:32:52
あーびっくりした VBのことかと思った
うちの新人は鯖サイドプログラムににstatic変数使いまくりで、 単体の時はテスト通ったけど、同時に動かすとボロボロ・・・・
qsort()ってスタックのことがちょっと心配にならない?
926 :
仕様書無しさん :2006/02/11(土) 02:19:43
>>925 クイックソートは非再帰で実装できるから、
qsortの実装者が素人じゃない限り安心かと。
データの順序がちらばっているかが心配だ。
まだ居たんだ。この恥ずかしい名前のコテ。
>>927 が何を言いたいのかまるでわけわからんのだが
ソートの意味わかってる?
このコテも大概阿呆だが、それより阿呆な
>>929 へのヒント。
つ[安定ソート]
ヒントいいたいだけのヒント厨まで来るし。
クイックソートは、入力データが偏ってると効率が悪いんだよ。 安定ソートは関係ない。
ソート関数使わずに最初からデータをソートちておけばいいんじゃないか。 データの追加削除はmemmoveで。
934 :
仕様書無しさん :2006/02/11(土) 15:00:42
マジで痛い
【プログラマー】 - このスレ見るのを止めようと思ったレス #1
なんでこのコテはここまで自分の無知を披露しに来たがるんだろう。 素朴な疑問。
937 :
仕様書無しさん :2006/02/11(土) 15:06:06
1000とりがっせんかな?
データを1件追加つる程度でqsortつるより、挿入ソートを行うほうが安定ちて早い (・∀・)
はいはい。キミは首つるべし。
程度の低い釣りか、マジボケ?
本人はマヂなんだと思うよ 何度となくアホな発言繰り返して叩かれてる ほとぼりが冷めたころにまたアホ発言投下して叩かれに来るマゾ まさに阿呆の無限ループ
焼いた○○を10台のPCにインストールする作業を指示された時 3ヵ月後に辞めたけど
例えば、 番号 名前 1, りんご 4, みかん 7, いちご 9, なし : 999, ぶどう というソートされたデータがあったとちよう。 ここに 3, メロン を追加つる場合、1と4の間にデータを挿入つるのが普通でつYO ちみたちウンコ プログラマって最後にデータを追加ちてからqsortなんかつかってるの(´・ω・`)ショボーン
944 :
仕様書無しさん :2006/02/11(土) 15:44:33
int i; for(i=0;i<10;i++){ switch(i){ case 1: … case 2: … case 3: … } }
どーみても釣りです。ありが(ry
常に整列しているという条件があるのなら B木でもやりゃ良いのに配列しか使えないんかのぉ
今日は糞コテが機嫌がいいのか粘着するようです。 住民の皆様お気をつけくださいませ。
948 :
仕様書無しさん :2006/02/11(土) 15:51:23
>>933 挿入先のオブジェクトをコピーし直しする時点で既に負け組では?
小規模やっつけプログラム?
たいがいアホなコテだなとは思ってたが ここまで低レベルだったとは思わなかったよ・・・
前後にポインタつけた構造体が必要ですか? どこの「はじめてのC」ですか?
は?
叩かれたい年頃なんだろう そんなことより、しりとりしよーぜー くいっくそーと
ここまでの流れをまとめようとしたが、
>>933 を見ると頭が真っ白になるので断念した。
>>929 はまだ耐えられるのだが……
>>943 マジレスする。
>>943 で、あなたは、ごく常識的な、当たり前すぎて説明する価値もないような内容を得意げに説明した。
普通はそんなことしない。「こんなことみんな知ってるだろうなあ」と気づくからだ。
あなたの周辺には、そんな知識すら知らない人間しかいないのか?
あなたの周辺には、「最後にデータを追加ちてからqsortなんかつかってる」ような人間しかいないのか?
なぁ そのアンカー自分のレスも入ってるよ? 顔真っ赤にする暇あるんならまともな反論してごらん
釣りかと思ったがクイックソートの使い道もわからんほど低能だっただけか 残念だ
ほっとけって。 コイツは「自分は優秀な人間で、周囲は全員馬鹿に見える」 精神異常者なんだからさ。
958 :
葉猫 ◆Jz.SaKuRaM :2006/02/11(土) 21:04:59
ソートされた状態でデータを保持ちていれば二分探索で自力でデータを追加、削除つる方が 圧倒的に早いでちょ。そもそもデータは検索の方が圧倒的に使用頻度が高いでつち。 クイックソートなど不要でつYO 普通はDBからソートされた状態でデータは取得ちまつから。
>>954 あ、いたのか。
>>933 のレスは明らかに「要素挿入するたびにqsort」する人間を想定して書かれている。
だが、それ以前のレスで、そのような話題はまったく出ていない。
あなたはいったいなぜ、そんな人間を想定する必要があったのか?
そしてなぜ、ごく当たり前のことを発言するだけでこうも得意げになれるのか?
ここからひとつ見えてくることがある。
一概に「常識」といっても、その中身は環境によって左右される。
普通の環境にいるプログラマから見れば「何を当然のことを」ということであっても、
あなたのいる環境ではそうではないのではないか。
「データを1件追加つる程度でqsortつるより、挿入ソートを行うほうが安定ちて早い (・∀・)」
「すごい!なんて天才的な意見なんだ!」「そんなこと思いつきもしなかったぜ」「
「ここに 3, メロン を追加つる場合、1と4の間にデータを挿入つるのが普通でつYO」
「なんてわかりやすい説明なんだ!」「先輩かっこいいっす!」「信じられない。こんなアルゴリズムを思いつけるなんて」
ご愁傷様です。
>ソートされた状態で これが保証されている状況しか前提にないのか 本格的に低能だな
まつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちて まつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちて まつまちでつでちょちてまつまちでつでちょちてまつまちでつでちょちて・・・ キモすぎて話にならん
>>958 スゲエ!なんてわかりやすい説明なんだ!俺はそんなこと思いつきもしなかったぜ!あんた天才だよ!
低レベル業務系しか経験ないんだろうな このアホコテ
別に辞めたくなたわけじゃないけど、 今のプロジェクト、日本語を3〜4文字のアルファベットに 超短縮して変数名やメソッド名にするのがしきたりなのな。 「コーヒー」だと "cfe" みたいな。 「内訳」ていう単語があったんだけど、こう略されてた。 UTY あー、「うちやく」と読んだんだな、と思た。
>>964 そのコーディング規約の時点でやめたくなる
>>965 そか。
俺の会社、いろんなところに協力会社として出向いてんだけど、
頭のおかしいリーダーのいるところだと
こういうのがあたり前だから、俺はなんかどうでもよくなった。
略語に慣れれば、きちんとコード読めるし。
もちろん俺漏れの趣味のコードでは
こんな事はしないけどね。。。
>>965 だな
作った順に連番つけてくほうがまだマシだと思う
968 :
仕様書無しさん :2006/02/11(土) 21:29:14
>>967 普通そうだよな。
おれも
A001
から初めて
A999
までいったら
B001
に移る。
>>958 > 二分探索で自力でデータを追加、削除つる方が
検索はともかく、あんたに追加や削除ができるとはとても思えない
うちの「プロジェクト名+連番」で全ての命名を片付けようとする規約を なんとかしてください
D:\>defragment < 961.txt [゚д゚] <デフラグガカンリョウシマシタ /[_]ヽ | | ぎすちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちちち ちちちちちちつつつつつつつつつつつつつつつつつつつつつつつつつつつつつつてててて てててててててててててででででででででででででででででででででででででででででで でなにままままままままままままままままままままままままままままままょょょょょょょ ょょょょょょょょらんキモ・・・話 D:\>
デフラグさんでもキモ成分は消せなかったのか
DB項目やクラス名でローマ字で書くのだけは辞めて欲しいなとは思う
英語考えるの面倒だから Furigana とか KôzaBangô とか平気で使う。
FuriganaとHuriganaが混在したりして
977 :
940 :2006/02/11(土) 23:43:53
うわぁ、アフォ認定された(笑) 葉ネコかかじゅネコか知らないが変なネコばっかりだ
お前らNGname使えよ、正直邪魔 どうしても遊びたい場合はレスに「糞猫」って単語を入れてくれ、それで弾くから
>>976 ありえそう(w
「ti」と「chi」や「tu」と「tsu」なんかも危ないな(w
わざわざ自爆しに来てるエンターテイナーを笑わないのは可哀想だろ?
時に気が付けば次スレの季節だな
最後に人に会社辞めようと思わせるようなことを 抜かす奴が出てきたからなぁ
>>983 長くなると邪魔なので中途半端に省略したローマ字になるわけだな
例: 最終データ提出日 → Last Data Teishutsu Day → D_LstDatTsht
>>976 経験上FuriganaとFuriGanaが混在する確率の方が高い。
>>984 そういう中途半端な省略はやめて欲しいよな。
単語の一文字を略す位なら、その単語位はそのまま書いて貰いたい。
ちょっと関係ないかもしれんが「sequencial」と書く奴が意外と多いような気がする・・・
>985 そして Kana でいいじゃん派とか出てくるわけだ
#define kurikaesi for #define kurikaesi2 while #define mosi if #define denakereba else #define bunki switch #define baai case
>>990 そこまでするならいっそUTF8とかの日本語で書けよ。。。
992 :
仕様書無しさん :2006/02/12(日) 18:15:00
ソートは1000件くらいずつをクイックソートし、全体は1000件を単位に分割。 ブロック内は昇順。 ブロック内1位を集め、挿入ソートで並べる。 そのリストの最上位を、総合1位から順に並べていく。 総合順位に1件入れたら、クラス1位が抜けたところの2位を1位とし、 クラス1位のリストに挿入ソートする。 これでコピーを最小限に実装する。 めちゃ速。
俺頭悪いからlistとかでいいや
Javaだと自分で頑張ってロジック作っても、 Collectionsのsortになかなか勝てない
(・∀・)カエレ!
>996 プ
生まれて初めて1000を取ってしまった。 俺はハッピーだ!! この世で一番の幸せも野田!!!
1000 :
仕様書無しさん :2006/02/12(日) 19:59:59
ネコちゃんダメだな♥
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。