- 1 名前:仕様書無しさん [2007/08/14(火) 23:48:45 ]
- この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#17 pc11.2ch.net/test/read.cgi/prog/1183700531/
- 713 名前:仕様書無しさん mailto:sage [2007/10/05(金) 14:36:27 ]
- スレ違いっぽい話題を引きずることになるかも知れないけど
C++やVBだと不要メソッドのリストアップにどういう方法があるの?
- 714 名前:仕様書無しさん mailto:sage [2007/10/05(金) 14:59:20 ]
- うちはVB厨だが、これを使ってる
ttp://www011.upp.so-net.ne.jp/flatsoft/soft/fs_about_vbcheck.html
- 715 名前:仕様書無しさん mailto:sage [2007/10/05(金) 16:09:54 ]
- >C#だからこそ何を削除したらいいか検索するのが不可能って流れになってるじゃん。
どこにそんな流れがあるんだ
- 716 名前:仕様書無しさん mailto:sage [2007/10/05(金) 16:13:01 ]
- >>713
ググレカス
- 717 名前:仕様書無しさん mailto:sage [2007/10/05(金) 16:14:38 ]
- つーか、リフレクションを駆使するようなチームだったら、コードをクリーンに保つくらいすると思うんだが。
- 718 名前:仕様書無しさん mailto:sage [2007/10/05(金) 16:51:09 ]
- >>715
C#嫌いが嵩じて幻覚でも見てるんじゃ
- 719 名前:仕様書無しさん mailto:sage [2007/10/05(金) 17:00:20 ]
- >>713
VBでこれ使ってる。 ttp://www.aivosto.com/vb.html Cならsplint、C++は昔なんか使ってたような気がするけど忘れた。
- 720 名前:仕様書無しさん mailto:sage [2007/10/05(金) 22:33:55 ]
- 不要社員のリストアップに
- 721 名前:仕様書無しさん mailto:sage [2007/10/05(金) 23:41:32 ]
- >>708
この前、fxcopとかってツールをためしに使ったら、使われてないメソッドとかは指摘されてたような。うろおぼえ。
- 722 名前:仕様書無しさん mailto:sage [2007/10/05(金) 23:41:46 ]
- >>711
C++はおろか、Javaや最近のVBですらリフレクションが実装されていることを知らないこと、 それ以前に問題の本質を見つけられない濁った目、そして文中に漂う全角アルファベット、 おまえ、もしかしてコボラだなww
- 723 名前:仕様書無しさん mailto:sage [2007/10/05(金) 23:47:35 ]
- こぼらがいっぴき
こぼらがにひき… この辺で…俺のはじめてのプロジェクトは火を噴いてあたりを転げまわりだした。
- 724 名前:仕様書無しさん mailto:sage [2007/10/06(土) 00:02:02 ]
- ぇ、C++ってリフレクションあったっの? C++/CLIじゃなくて?
- 725 名前:仕様書無しさん mailto:sage [2007/10/06(土) 00:02:49 ]
- >>707
関係ないが、そこで、上から目線で教えてやってるジッタってやつは、よそのスレで、ツッコミ入れられまくってたヤツだな。 このエントリで。 blogs.wankuma.com/jitta/archive/2007/07/26/87218.aspx
- 726 名前:仕様書無しさん mailto:sage [2007/10/06(土) 00:22:24 ]
- 本当に関係ねえ
- 727 名前:仕様書無しさん mailto:sage [2007/10/06(土) 08:20:06 ]
- >>725
先輩だか上司だかに、添削と言って、こんなソースにされたら、やめたくなるよ。
- 728 名前:仕様書無しさん mailto:sage [2007/10/06(土) 14:14:55 ]
- dim strTemp(10) as string
const intTemp as integer = 10 for i as integer = 1 to intTemp strTemp(i) = "" '処理 next
- 729 名前:仕様書無しさん mailto:sage [2007/10/06(土) 14:17:15 ]
- どの辺が気に入らないんだろう
- 730 名前:仕様書無しさん mailto:sage [2007/10/06(土) 14:30:39 ]
- VBなところ
- 731 名前:仕様書無しさん mailto:sage [2007/10/06(土) 14:35:35 ]
- for i as integer = 0 to intTemp
- 732 名前:仕様書無しさん mailto:sage [2007/10/06(土) 14:53:15 ]
- for i as integer = LBound(strTemp) to UBound(strTemp)
- 733 名前:仕様書無しさん mailto:sage [2007/10/06(土) 15:03:54 ]
- VBの文字列って初期化されてることが保障されてなかったっけ?
- 734 名前:仕様書無しさん mailto:sage [2007/10/06(土) 15:06:03 ]
- for i as integer = 0 to intTemp-1
- 735 名前:仕様書無しさん mailto:sage [2007/10/06(土) 15:12:03 ]
- 綺麗なコーディングしてるだろ
バグってるんだぜ、これで…
- 736 名前:仕様書無しさん mailto:sage [2007/10/06(土) 15:30:29 ]
- >>733
保障されてる
- 737 名前:仕様書無しさん mailto:sage [2007/10/06(土) 19:51:32 ]
- VBって確か、
配列宣言時に指定する数が、 要素数じゃなくて添字の最大値なんだよな
- 738 名前:仕様書無しさん mailto:sage [2007/10/06(土) 20:15:39 ]
- dim a(3) なら a(0) 〜 a(3) だっけ?
昔のベーシックで a(0) を無しにしてメモリを節約するとかいう セコいオプションがあったような記憶がある。
- 739 名前:仕様書無しさん mailto:sage [2007/10/06(土) 20:21:04 ]
- VBでは、option base で配列の添字を 1〜にするか0〜にするか変更できる。
- 740 名前:仕様書無しさん mailto:sage [2007/10/06(土) 20:59:49 ]
- もうすぐ64ビットが当たり前になる時代にそんなオプション意味あるんか?
- 741 名前:仕様書無しさん mailto:sage [2007/10/06(土) 21:32:07 ]
- メモリの1バイトは血の一滴だ!
- 742 名前:仕様書無しさん mailto:sage [2007/10/06(土) 21:39:56 ]
- おしい
血より精液のほうが説得力あったのに
- 743 名前:仕様書無しさん mailto:sage [2007/10/06(土) 21:40:28 ]
- 初期化が保証されてても初期化、ということにはあまり文句は言わない
でも過保護言語のVBだし事情が違うのかな
- 744 名前:仕様書無しさん mailto:sage [2007/10/06(土) 21:43:52 ]
- 初期化で思い出したけど
MFCとかでポインタ先が破棄済みかどうかに( pTest )ってやってるの困る 解放後の0割り当てなんてコード全体で徹底するのか? いずれにせよMFC内部で delete this とかやるのあったらダメ
- 745 名前:仕様書無しさん mailto:sage [2007/10/06(土) 22:06:11 ]
- メモリ管理もろくに出来ない無能な人間のための言語というアピールはひしひしと感じる
便利だから使うんじゃない,それしか使えないんだ,てな
- 746 名前:仕様書無しさん mailto:sage [2007/10/06(土) 22:26:48 ]
- 管理以前にそもそもメモリの概念が分かっていません。
- 747 名前:仕様書無しさん mailto:sage [2007/10/06(土) 22:34:13 ]
- メモリの節約、スレッドの節約、etc...
- 748 名前:仕様書無しさん mailto:sage [2007/10/07(日) 00:07:44 ]
- 給料の節約、残業代の節約、etc...
- 749 名前:仕様書無しさん mailto:sage [2007/10/07(日) 00:10:42 ]
- >>744
> 内部で delete this とかやるのあったらダメ そうか?
- 750 名前:仕様書無しさん [2007/10/07(日) 03:47:54 ]
- >>725
相当に疑わしい人間だな。
- 751 名前:仕様書無しさん [2007/10/07(日) 07:16:38 ]
- > 解放後の0割り当てなんてコード全体で徹底するのか?
逆に delete して NULL 入れてないやつはぶっ殺したくなる
- 752 名前:仕様書無しさん mailto:sage [2007/10/07(日) 08:29:44 ]
- 自所持ポインタをNULLにしたところで
その参照先を他のやつもポインタで参照してたら・・・・そっちが自動でNULLになってくれるわけじゃないから NULL当てはめて安心するなんて無意味っちゃ無意味
- 753 名前:仕様書無しさん mailto:sage [2007/10/07(日) 09:22:50 ]
- 意味不明。
自ポインタで必要なくなった参照先は、他のやつでも必要なくなるって決め付けてるのか? そんなもん、プログラムのロジックによりけりだと思うが。他では保持する必要があるかもしれないし。 NULL当てはめて安心したいのは、処理が他の参照先に移ってるのに自ポインタが保持してるせいで 誤ってアクセスするというようなことを起こさないための防衛策もあるだろ。 「この会社辞めようと思った」の90%くらいは真実だと思うが、10%くらいは「辞めようと思った」奴の レベルが低すぎるんじゃないかと思うことがある。
- 754 名前:仕様書無しさん mailto:sage [2007/10/07(日) 09:53:34 ]
- 言ってることが全然分からんな。
よほど内部・詳細設計が腐っていると見える。
- 755 名前:仕様書無しさん mailto:sage [2007/10/07(日) 10:57:20 ]
- >>751
そんなことするのヘタクソだけだろ。
- 756 名前:仕様書無しさん mailto:sage [2007/10/07(日) 10:59:49 ]
- Javaで、1000行以上のメソッド(この時点でどうかとおもうが)を抜ける時に
一々オブジェクトにnullを入れて片付けているのを見たとき。 そんなどうでもいい気を使う前に、そのくそ長いメソッドを見直せと。
- 757 名前:仕様書無しさん mailto:sage [2007/10/07(日) 11:07:22 ]
- Javaは変数スコープ明確にしてGCに任せるだけだから楽だな
- 758 名前:仕様書無しさん mailto:sage [2007/10/07(日) 12:32:51 ]
- gcなんて訳の分からんもんによくお任せできるな
お前は通りすがりのオヤジに家の留守番を頼めるのか?
- 759 名前:仕様書無しさん mailto:sage [2007/10/07(日) 12:40:28 ]
- いや、javaは別にgc依存でいいんじゃないか?
そういう言語なんだし。
- 760 名前:仕様書無しさん mailto:sage [2007/10/07(日) 12:50:25 ]
- >>753
deleteした場合の話だろ?
- 761 名前:仕様書無しさん mailto:sage [2007/10/07(日) 13:00:12 ]
- 同じアドレスを共有しているポインタがあるのに delete するって
それだけで重大な設計ミスだな 所有権移行なら、delete せずに権限渡して 自分のポインタは NULL 設定とかする(auto_ptr がこうなってるな)し、 複製ならオブジェクトのコピーするだろ、普通 複数箇所で共有するなら、いいからスマートポインタ使っとけって話だし
- 762 名前:仕様書無しさん mailto:sage [2007/10/07(日) 13:06:13 ]
- >>757
スマートポインタも使わないのか? 参照カウンタだって立派なGCだが。
- 763 名前:仕様書無しさん mailto:sage [2007/10/07(日) 13:13:28 ]
- >>758
それを言い始めたらコンパイラも実行環境も何もかも信用できなくなるよ
- 764 名前:仕様書無しさん [2007/10/07(日) 13:42:04 ]
- ぬるぽ
- 765 名前:仕様書無しさん mailto:sage [2007/10/07(日) 13:48:08 ]
- お前らはデンマークの2流都市出身の禿や
カナダの糞田舎で育ったキモいオッサンの作った言語なんて信用できるのか?
- 766 名前:仕様書無しさん mailto:sage [2007/10/07(日) 14:02:00 ]
- malloc/freeのペアを使っていた時代は、freeの後にNULLは設定していたなー
論理的な異常処理とかでやむを得ず処理を終了する場合は、 ポインタ参照用変数がNULLじゃなけりゃ取りあえずfreeしまくってexitしていた。 まぁ、三つ子の魂百までじゃないけど、たまにそうコーディングして苦笑する事が最近はある。
- 767 名前:仕様書無しさん mailto:sage [2007/10/07(日) 14:07:25 ]
- 最初に疑うべきはいつの時代でも自分のコーディングだけどな!
- 768 名前:仕様書無しさん mailto:sage [2007/10/07(日) 14:34:45 ]
- ポインタをNULLクリアしなきゃならないコードの書き方を疑え。
- 769 名前:仕様書無しさん mailto:sage [2007/10/07(日) 15:01:04 ]
- >>763
どんなコンパイラも実行環境も最初は通りすがりのおっさん程度の信頼性しかないものだ。 それが大勢に使われて、もまれて、信頼できる警察官になるんだよ。
- 770 名前:仕様書無しさん mailto:sage [2007/10/07(日) 16:00:39 ]
- いまどき C++ で自分で delete 書いてる時点で何かおかしいと疑ったほうがいい。
std::auto_ptr, boost::scoped_ptr, boost::shared_ptr で全部済ませとけ。
- 771 名前:仕様書無しさん mailto:sage [2007/10/07(日) 16:12:58 ]
- boost の利用は標準に取り込まれてから考える
- 772 名前:仕様書無しさん mailto:sage [2007/10/07(日) 16:52:43 ]
- std::auto_ptr を delete 書くのを省くためだけに使うんだったら帯に短し襷に長しだな
- 773 名前:仕様書無しさん mailto:sage [2007/10/07(日) 17:17:30 ]
- >>772
へ?その目的で使ったら十分だと思うよ。 本人の意思とは関係なく例外安全性が付いてきたりするけど、別に余計なもんじゃないし。
- 774 名前:仕様書無しさん mailto:sage [2007/10/07(日) 17:32:33 ]
- まぁでもエラー処理とか例外安全とか一切考慮してないような自作スマートポインタクラスを使うのもなぁ〜
- 775 名前:仕様書無しさん mailto:sage [2007/10/07(日) 17:33:38 ]
- 普段ウォシュレットを使い慣れている奴はたまに駅の便所で拭かずにパンツを上げるらしい。
もしくは美味く拭けずに手にウンコ付けまくりんぐとか。 一番多いのが、ちゃんと拭いて流したつもりでも毛に残ったウンコでパンツが黄色いとかだな。
- 776 名前:仕様書無しさん mailto:sage [2007/10/07(日) 17:57:15 ]
- エクセルが信用できないので計算機で出した値を手入力してます
GCが信用できないので(ry
- 777 名前:仕様書無しさん mailto:sage [2007/10/07(日) 18:12:18 ]
- GCはいつインスタンスが破棄されるか分からんのでデストラクタ使い辛いのがなぁ・・・
- 778 名前:仕様書無しさん [2007/10/07(日) 18:33:56 ]
- ところでここはいつから"この会社辞めようと思った自分の一言"スレになったのですか?
- 779 名前:仕様書無しさん [2007/10/07(日) 18:41:25 ]
- >>778
知るか。どうでもいい事書くな!ヴぉけ
- 780 名前:仕様書無しさん mailto:sage [2007/10/07(日) 18:41:26 ]
- javaやC#も、スコープ抜けたら、デストラクタ(相当)がコールされる仕組みを作ってくれたらいいのに。
メモリ以外のリソースの開放がかえってめんどくさくなったな。
- 781 名前:仕様書無しさん mailto:sage [2007/10/07(日) 18:41:49 ]
- 1メソッドだらだら1000行とか書くやつは害虫としか思えん。
自分が辞めるよりそいつを駆除したほうがいいだろ普通。
- 782 名前:仕様書無しさん [2007/10/07(日) 18:51:41 ]
- >>780
javaならファイナライザがあるよ
- 783 名前:782 mailto:sage [2007/10/07(日) 18:52:39 ]
- と思ったけど動くタイミングが微妙だな
- 784 名前:仕様書無しさん [2007/10/07(日) 19:52:52 ]
- C++/CLIを使えばいいじゃない
- 785 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:00:32 ]
- >>775
普通はウンコ吹いてからウォシュレット使うでしょ
- 786 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:01:12 ]
- >>780
C#のusingでスコープ囲む奴じゃダメ?
- 787 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:04:38 ]
- >>785
最初にウォシュレットで残留物を洗い流してから、 紙に色が付かなくなるまでふきふきしてる。
- 788 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:13:15 ]
- >>786
usingでもいいけど、開放したいのが複数あったらネストが深くなるからね。 using (IDbConnection conn = new ・・・) { conn.Open(); using (IDbCommand cmd = conn.CreateCommand()) { cmd.CommandText = "・・・"; uding (IDbDataRedader reader = cmd.Execute・・・) { while (reader.Next()) { ・・・ } } } } C++/CLI や D みたいにやれたらいいのに。
- 789 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:15:33 ]
- >>787
それだと横に飛び散る様な気がするから俺は、>>785派
- 790 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:33:57 ]
- >>788
順序は無視して、単純に開放したいのが複数あるときは using( ... ) using( ... ) {} って出来たと思う。的外してたらすまんす。
- 791 名前:仕様書無しさん mailto:sage [2007/10/07(日) 20:58:01 ]
- exit(-1);
- 792 名前:仕様書無しさん mailto:sage [2007/10/07(日) 22:11:26 ]
- >>777
デストラクタは破棄される自分自身が保持してるものをアボンヌする「のみ」・・・のはずだから まぁタイミングなんて別にいいじゃん・・・・。いや実際処理入れられるけど、出来るけれど
- 793 名前:仕様書無しさん mailto:sage [2007/10/08(月) 00:04:26 ]
- 自分の持っているもののみを開放するのみとは言え、
class CFile { public: CFile() : m_fileptr(NULL) { } ~CFile() { Close(); } // まさに開放するのみ bool OpenForRead(const std::string &path); bool OpenForReadWrite(const std::string &path); void Close(); private: FILE *m_fileptr; }; CFile *file = new CFile(); file.OpenForReadWrite("/tmp/hoge"); // ここで GC の対象になったとして CFile *file = new CFile(); file.OpenForRead("/tmp/hoge"); OpenForReadWrite, OpenForRead は Reader-Writer Lock で flock かかるとして、 OpenForRead が成功するか失敗するかわからん、 というのが悩みどころなのでは。 いや、この場合は明示的に Close してやればいいんだけど。 # C/C++ しかわからんので C++ + GC という謎の物体でスマン
- 794 名前:仕様書無しさん mailto:sage [2007/10/08(月) 00:16:00 ]
- 実処理の発動はともかく破棄権を与えるタイミングは把握できるはずだから問題ない・・・と思うんだけど
- 795 名前:仕様書無しさん mailto:sage [2007/10/08(月) 03:43:17 ]
- ># C/C++ しかわからんので C++ + GC という謎の物体でスマン
途中まで読んで、最近はgc付きのC++なんてのがあるのかと思ったぞ
- 796 名前:仕様書無しさん [2007/10/08(月) 03:54:21 ]
- // cnt が 0 より大きかったら処理する
if (cnt > 0) { }
- 797 名前:仕様書無しさん mailto:sage [2007/10/08(月) 04:00:34 ]
- if (cunt < dick) {
// や〜ん、こわれちゃう! }
- 798 名前:仕様書無しさん mailto:sage [2007/10/08(月) 05:34:57 ]
- デバックの結果、不等号の向きが逆、ってのはよくある話で
- 799 名前:仕様書無しさん mailto:sage [2007/10/08(月) 07:00:58 ]
- // 余計な物がありますよ
if( a < 20 ); { return hogehoge.detteiu( pero-n, a ); }
- 800 名前:仕様書無しさん mailto:sage [2007/10/08(月) 09:40:32 ]
- >>796
見りゃわかるから、そんなコメントいらね!ってこと? もしくは、 0 < cnt のほうが見やすいだろ!ってことか?
- 801 名前:仕様書無しさん mailto:sage [2007/10/08(月) 11:29:35 ]
- >>800
そんなこともわからんのも まずいと思う。
- 802 名前:仕様書無しさん mailto:sage [2007/10/08(月) 12:07:32 ]
- >>gc付きのC++
C++/CLI でもこれはやるのかな?
- 803 名前:仕様書無しさん mailto:sage [2007/10/08(月) 12:16:56 ]
- >>801
や、すまん。俺も悩んだ。
- 804 名前:仕様書無しさん [2007/10/08(月) 12:21:43 ]
- if (cnt > 0) {
} 何の問題もないだろ、 おれもこう書くが?
- 805 名前:仕様書無しさん mailto:sage [2007/10/08(月) 12:26:31 ]
- ネタはコメントの方だろ
- 806 名前:仕様書無しさん mailto:sage [2007/10/08(月) 12:29:42 ]
- 俺の部署のコーディングルールだと直値は禁止なので0じゃなくて
if(cnt > (int)NUMBER_ZERO){ } とかにしないといけない。
- 807 名前:仕様書無しさん mailto:sage [2007/10/08(月) 12:31:03 ]
- > NUMBER_ZERO
- 808 名前:仕様書無しさん [2007/10/08(月) 12:31:41 ]
- > if(cnt > (int)NUMBER_ZERO){
> } > とかにしないといけない。 まったく意味無しのウザイルールだな。 仕様が変わって 1 より大きくなったら、 if(cnt > (int)NUMBER_ONE){ } ってすべて書き直すんだな。 あほだ
- 809 名前:仕様書無しさん mailto:sage [2007/10/08(月) 12:33:12 ]
- 古典的な誤りだな
- 810 名前:仕様書無しさん [2007/10/08(月) 12:37:36 ]
- 別にいいんだけど、NUMBER_ONEとかってセンスないっていうか、
ちょっとウケるな。 そもそもそこを閾値として、THRESHOLDなんたらとかにしておけば、仕様が変わった場合、 その定数の定義を変えるだけでいいが、NUMBER_ZEROだったら、 結局全部探して直さなきゃならないから、全く意味ないと思うが。
- 811 名前:仕様書無しさん mailto:sage [2007/10/08(月) 13:22:51 ]
- > 仕様が変わって 1 より大きくなったら、
いやーこうじゃないか? #if 0 #define NUMBER_ZERO 0 #endif /* 2007/10/08 nanasi808 */ #define NUMBER_ZERO 1
- 812 名前:仕様書無しさん [2007/10/08(月) 13:34:14 ]
- #if 0
#define NUMBER_ZERO 0 #endif /* 2008/10/08 洋司 */ #define NUMBER_ZERO 1
- 813 名前:仕様書無しさん [2007/10/08(月) 13:35:56 ]
- >>811
定数名と内容が一致してないだろ。 ダメダメなコードの典型だと思うぞ。
|

|