- 1 名前:仕様書無しさん mailto:sage [2007/04/02(月) 12:45:06 ]
- この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#15 pc11.2ch.net/test/read.cgi/prog/1167117526/
- 41 名前:仕様書無しさん mailto:sage [2007/04/21(土) 08:31:50 ]
- >>37
VBって、Option Explicitがあっても、 dim s as string ・・・ if s = 0 then ・・・ みたいなコードがコンパイルできるんだよな。 今、VB4からVB6にコンバートする仕事をやってて、エラーが起きたらその場で止まるオプションに変更して、 動作確認してるけど、けっこう頻繁にとまってる。 大昔に作られて、けっこう保守が入ってるのに、なんでこんなバグが残ってるんだよって感じ。
- 42 名前:仕様書無しさん [2007/04/21(土) 10:09:30 ]
- >>40
わりと同意かな・・・ つか、俺自身はブール型の引数というものが嫌いで不要だと思ってる。
- 43 名前:仕様書無しさん mailto:sage [2007/04/21(土) 10:17:07 ]
- 視点の高さがまるで違うんだな。
短いコードを書けばいいと思ってるような奴はCOBOLでもやってろって話
- 44 名前:仕様書無しさん mailto:sage [2007/04/21(土) 10:18:26 ]
- >>40
変数名がbというのは反対だが(ファイルの使用目的とそれの存在を示す意味のある名前にするべき)、俺は変数に入れてあるほうが読みやすいと感じるな。 無駄なブロックやネストはできるかぎり無いほうが読みやすいと思う。
- 45 名前:仕様書無しさん [2007/04/21(土) 10:19:21 ]
- 沖縄県の方へ(命に関わる注意事項です)
沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。 民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。 この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから… ※一国二制度 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。) さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。 今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。 自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。 発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
- 46 名前:仕様書無しさん mailto:sage [2007/04/21(土) 15:37:30 ]
- >>40
そりゃあ>40みたいな前提条件を勝手に組み込めばそういう解釈も可能だが シンプルな>31だけを見せられたら>33のような反応してしまうのが普通だろ。 ここで>40とは正反対の前提条件があったとして、>31のような書き方をされたら ありもしないニュアンスを醸しだしてかえって迷惑。
- 47 名前:仕様書無しさん mailto:sage [2007/04/21(土) 17:54:27 ]
- >>41
VBって暗黙の型変換が意味も無く強力過ぎ たしかVB5のときに型変換のルールが微妙に変わった様な飢餓するが 今となってはどうでもいい事だ
- 48 名前:仕様書無しさん mailto:sage [2007/04/21(土) 19:08:06 ]
- char* buf = new char[sizeof(Hoge)];
Hoge* hoge = (Hoge) buf; . . . delete[] buf; わかってねぇ〜〜〜〜〜。
- 49 名前:仕様書無しさん mailto:sage [2007/04/21(土) 19:27:18 ]
- なんかまずいの?
馬鹿にしたかったら馬鹿にしていいけど、その後でちゃんと何が分かってないのか説明してね。
- 50 名前:仕様書無しさん mailto:sage [2007/04/21(土) 19:32:28 ]
- キャストがおかしいってことか。
仮に typedef void *Hoge; だとしたらこれでOKって、いや違うC++だとアウトだ。 あれ?
- 51 名前:31 mailto:sage [2007/04/21(土) 19:37:43 ]
- >>40
>>31は、実際に見たものをココに書くために行った 抽象化の過程が悪かったと思います。 >>32及び>>40も、ごもっともだと思いますよ。 実際自分が見たコードは>>31で書いた風なものより"もっと"酷く、 貴方がされたような弁明の余地なんて無いだろう ってな感じのものでした。 実際の処理をfileの有無に替えて書くと、 if( [条件] ) { existFile = true; a.setExsitFile(true); b.setExistFile(true); } else { existFile = false; a.setExistFile(false); b.setExistFile(false); } こんな感じでした。 意味的にも書き分けるような部分ではないんです。 つまり、正に>>35の言う通りな感じかなーと思ってます。
- 52 名前:仕様書無しさん mailto:sage [2007/04/21(土) 20:34:41 ]
- パケットのデータを取り出すのによく>>48みたいなキャストするけどいかんのかね?
ま、確保したばかりの変数をキャストするのは珍しいと思うけどさ
- 53 名前:仕様書無しさん mailto:sage [2007/04/21(土) 21:27:33 ]
- >>52
普通は Hoge* hoge = new Hoge; だわな。 よくCから中途半端にC++へ移行した人がやってるのを見かける。 どうせnew=malloc程度に理解してんだろうね。
- 54 名前:仕様書無しさん mailto:sage [2007/04/21(土) 23:49:33 ]
- >>49
説明するまでもないだろ。
- 55 名前:仕様書無しさん mailto:sage [2007/04/22(日) 01:05:47 ]
- キャストは基本DQNでございます。
memcpyとか大好きなDQNがごろごろ。 大人しくCでもいじってろ。
- 56 名前:仕様書無しさん mailto:sage [2007/04/22(日) 01:30:29 ]
- 先日見たJavaコード
long hoge = 1; : Long page = Long.valueOf(String.toString(hoge)); 文字列にする意味ねぇ・・・
- 57 名前:仕様書無しさん mailto:sage [2007/04/22(日) 14:58:11 ]
- >>56
"valueOfがイイ、使え" とか言われた人間がそこで思考停止するとそうなるな...
- 58 名前:仕様書無しさん mailto:sage [2007/04/22(日) 16:21:19 ]
- >>56-57
もっと深刻な「コボラ上がり」だったんじゃないかな。 やつらは、数値="0"〜"9"の並び(=ゾーン形式)っていう観念から 離れらんないから。
- 59 名前:仕様書無しさん mailto:sage [2007/04/22(日) 23:10:42 ]
- >>48も基本がなってない。
(Hoge)じゃなく(Hoge *)だろ。
- 60 名前:仕様書無しさん mailto:sage [2007/04/23(月) 13:19:44 ]
- 主旨は違うんだけど、ここの
tp://d.hatena.ne.jp/nowokay/20070323 // null => 0, not null => 1 int p = Boolean.toString(data == null).length() - 4; ってのが好き。やられた。
- 61 名前:仕様書無しさん mailto:sage [2007/04/23(月) 15:03:51 ]
- ソースコードじゃないんだけど。
DBのDDLをバージョン管理システムに入れてまして。 外注さんが直接DBをいじっちゃったので、 リポジトリのDDLに変更を反映してくれって頼んだら。 hoge.sql(手付かず) hoge_日付.sql(新規) ってファイルがリポジトリにあって 面白かったです。
- 62 名前:仕様書無しさん mailto:sage [2007/04/23(月) 21:40:52 ]
- 最初、DLLと読んでしまったので、理解するのに時間がかかってしまった。
バージョン管理システムを、読み書きに手順が必要なファイルサーバだと 思ってる人、確かにいますね。
- 63 名前:仕様書無しさん mailto:sage [2007/04/23(月) 21:58:34 ]
- >バージョン管理システムを、読み書きに手順が必要なファイルサーバだと
>思ってる人、確かにいますね。 今のPRJリーダのことかーーーー CVSなのになぜか hoge hoge_2 hoge_3 とディレクトリを切っている。 旧ソースを全てコメントとして残したり、 日付と変更者をコメントに書いて変更箇所をサンドイッチしたり。 ストレージとしてしか使っていないよ・・・orz
- 64 名前:仕様書無しさん mailto:sage [2007/04/29(日) 14:33:46 ]
- 変更者が変質者に見えた・・・俺相当疲れてるな・・・
- 65 名前:仕様書無しさん [2007/04/30(月) 01:15:17 ]
- IF IsNumeric(Cint(value)) Then
End If orz ...
- 66 名前:仕様書無しさん mailto:sage [2007/05/01(火) 18:01:28 ]
- 元気出せ。
- 67 名前:仕様書無しさん mailto:sage [2007/05/05(土) 15:38:53 ]
- VBの類は、暗黙の型変換を禁止するオプションがほしいよぬ
- 68 名前:仕様書無しさん mailto:sage [2007/05/05(土) 16:36:40 ]
- >>67
vb.net にはあるぞ
- 69 名前:仕様書無しさん [2007/05/06(日) 14:05:22 ]
- 俺の会社ポインタ型は全部void *って全社共通で決まってるから
VBのキャストぐらいでは混乱しないよ。
- 70 名前:仕様書無しさん mailto:sage [2007/05/06(日) 14:14:37 ]
- 常に参照先の型について意識させることで社員の意識を高めようということか!
ごめん無理
- 71 名前:仕様書無しさん mailto:sage [2007/05/06(日) 15:12:53 ]
- 関数ポインタも?
- 72 名前:仕様書無しさん [2007/05/06(日) 15:33:12 ]
- 全部void *
型の意味がよくわからない使いかたしまくってるよ void hoge(int *val); こんな関数とか平気作るし
- 73 名前:仕様書無しさん [2007/05/06(日) 15:49:17 ]
- C++では関数ポインタはvoid *だとまずいんだよな
オーバーロードが解決できなくなるから こういうことやるならまだしも(できるんか?) int func(int) { ... } double func(double) { ... } void *p = reinterpret_cast<int (*)(int)> (func);
- 74 名前:仕様書無しさん [2007/05/06(日) 15:51:08 ]
- 呼び出し側書くの忘れてた
reinterpret_cast<int (*)(int)> (p)(10);
- 75 名前:仕様書無しさん mailto:sage [2007/05/06(日) 15:52:53 ]
- C++には、メンバ関数ポインタ、という鬼子もいるからね
- 76 名前:仕様書無しさん [2007/05/07(月) 11:14:57 ]
- reinterpret_cast
↑ なんでこれ導入したんだろうね。。。
- 77 名前:仕様書無しさん [2007/05/07(月) 11:58:25 ]
- いや、わりと低水準なことをするときには必要だろ。
static_castだと型変換がかかって値(メモリ上のビット列)が変化することがある。 reinterpret_castは型だけを変化させてビット列そのものは変化しない。
- 78 名前:仕様書無しさん [2007/05/07(月) 12:13:08 ]
- そんな場面あるか?
- 79 名前:仕様書無しさん mailto:sage [2007/05/07(月) 21:37:54 ]
- 組み込みとか
- 80 名前:仕様書無しさん [2007/05/08(火) 10:05:32 ]
- kwsk
- 81 名前:仕様書無しさん [2007/05/08(火) 14:28:58 ]
- ソースじゃないんだけど
あるSEがUML書きましたと言って提出してきた設計書が、 単なるフローチャートだったとき しかもパーツの意味を間違えまくっているとき
- 82 名前:仕様書無しさん mailto:sage [2007/05/08(火) 18:15:31 ]
- いいじゃんか。
全部アクティビティ図だと脳内で変換するんだ。 変換して現実から目をそむけると。 はっぴ?
- 83 名前:仕様書無しさん [2007/05/08(火) 18:54:42 ]
- フローチャートって実戦で使わないだろw
- 84 名前:仕様書無しさん [2007/05/08(火) 19:09:35 ]
- >>81
フローチャート通りに実装していいんじゃね?
- 85 名前:仕様書無しさん [2007/05/08(火) 22:07:33 ]
- 様式に神経質なぐらいこだわる奴はたいていろくでもない
要はしっかり設計できてりゃいいってのがわかってないんだよな・・・
- 86 名前:仕様書無しさん [2007/05/08(火) 22:24:16 ]
- UMLキチガイのことか
- 87 名前:仕様書無しさん mailto:sage [2007/05/08(火) 23:39:21 ]
- そうおもってさ。おぷそのつーるでグラフ化してみたわけよ、糞ソフト。
花火が見られた。 とりあえず生成結果を消した。
- 88 名前:仕様書無しさん mailto:sage [2007/05/09(水) 09:23:11 ]
- Happy99とは懐かしいな。
- 89 名前:仕様書無しさん [2007/05/09(水) 10:07:23 ]
- しあわせ99?
- 90 名前:仕様書無しさん mailto:sage [2007/05/09(水) 10:14:18 ]
- ウイルスだったよな?確か
- 91 名前:仕様書無しさん mailto:sage [2007/05/09(水) 19:20:16 ]
- 昔流行ったよな。確か花火が上がるやつだと記憶している。
- 92 名前:仕様書無しさん [2007/05/09(水) 21:54:00 ]
- >>80
たとえばnewとかで取得した領域のアライメント調整で使う #define AREASIZE 80 #define ALIGNSIZE 4 char* p; void* q; p = new char[AREASIZE+ALIGNSIZE-1]; q = reinterpret_cast<void*>((reinterpret_cast<int>(p)+ALIGNSIZE-1)&~(ALIGNSIZE-1)) // ... delete p;
- 93 名前:仕様書無しさん mailto:sage [2007/05/09(水) 22:19:23 ]
- Dim flgUmu As String = "nasi"
For Each ws In objBook.Worksheets If ws.Name = strName Then flgUmu = "ari" End If Next もうどこからツッコめばいいのかorz
- 94 名前:仕様書無しさん mailto:sage [2007/05/09(水) 22:58:11 ]
- 時々居るなぁ、Boolean使わない奴。
- 95 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:15:01 ]
- ポインタをintにキャストする香具師は、
LP64,LLP64環境で死亡で御座います
- 96 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:26:18 ]
- uintptr_tかchar*でないとマズいね。
ところで~(ALIGNSIZE-1)ってそのままで大丈夫?
- 97 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:36:30 ]
- ごめん、大丈夫そう。
- 98 名前:仕様書無しさん mailto:sage [2007/05/09(水) 23:57:03 ]
- >>96
ALIGNSIZEが2の冪乗値という条件付きだけどな 文末のセミコロンが抜けてるのは痛い>92
- 99 名前:仕様書無しさん [2007/05/10(木) 01:43:21 ]
- #define private public
#define protected public 本当にこれが書かれたコードがあった。 しかも俺のすぐ上の上司が書いたっぽい。 陰謀めいたものを感じて冷や汗が出たよ
- 100 名前:仕様書無しさん [2007/05/10(木) 09:36:17 ]
- private宣言してもリアルタイムデバッグではアクセス可能だろ?
意味なくね?
- 101 名前:仕様書無しさん mailto:sage [2007/05/10(木) 11:00:05 ]
- >>100
はあ?
- 102 名前:仕様書無しさん [2007/05/10(木) 11:49:46 ]
- 全然privateじゃないってこと
- 103 名前:仕様書無しさん mailto:sage [2007/05/10(木) 12:24:19 ]
- カプセル化の意味も判らないんなら口挟まない方がいいんじゃね?
- 104 名前:仕様書無しさん mailto:sage [2007/05/10(木) 12:31:25 ]
- そこで防御策として
#ifdef private #undef private #endif #ifdef protected #undef protected #endif と自分のヘッダの先頭に書く必要が出てくる。 もはや冷戦だな。
- 105 名前:仕様書無しさん [2007/05/10(木) 17:55:41 ]
- >>104
勘弁してください……
- 106 名前:仕様書無しさん [2007/05/10(木) 18:57:15 ]
- >>104
その後にインクルードされるヘッダファイルの中で #ifndef private #define private public #endif #ifndef protected #define protected public #endif と書かれてないか調べたか? w
- 107 名前:仕様書無しさん mailto:sage [2007/05/10(木) 19:19:40 ]
- 嫌な職場だなぁ
- 108 名前:仕様書無しさん mailto:sage [2007/05/10(木) 22:26:52 ]
- まさに冷戦。 誰が核のボタンを押すのか、押せるのか。 いやまて核は何なのか。
- 109 名前:仕様書無しさん mailto:sage [2007/05/10(木) 23:18:03 ]
- #define FIRE FILE なんての見て鬱になってたところだが、
ここ見てたらなんだか元気が出てきた。ウチはまだ大丈夫だ!
- 110 名前:仕様書無しさん mailto:sage [2007/05/10(木) 23:48:01 ]
- >>106
オワットルwww
- 111 名前:仕様書無しさん mailto:sage [2007/05/11(金) 00:48:52 ]
- >>109
知らぬ間に #define FILE FIRE になっているかもしれんぞ。
- 112 名前:仕様書無しさん mailto:sage [2007/05/11(金) 01:38:14 ]
- 大丈夫。
展開コードを参照すればw
- 113 名前:仕様書無しさん [2007/05/11(金) 10:34:47 ]
- 1つのプロジェクト内にファイルが1800個あったから、一体何かと思ったら
履歴を全部別ファイルにして残していて、わざわざコンパイルしない設定対象に1780個ぐらい加えているという・・・ バージョン管理ソフト使っていてこれかよ。出向先なので辞めるわけにはいかない、 明日から通勤時間に3年程かけようかとか本気で思った
- 114 名前:仕様書無しさん mailto:sage [2007/05/12(土) 01:22:44 ]
- >>111
sonyのバッテリーが発火した原因はそれか。
- 115 名前:仕様書無しさん mailto:sage [2007/05/13(日) 07:16:31 ]
- やめよう思うほどじゃないが
よく見るキモチワルイコード if (a == 1) { } else { なんかのしょり なんかのしょり }
- 116 名前:仕様書無しさん mailto:sage [2007/05/13(日) 08:38:20 ]
- >>115
俺、よくこういうコード書きかけてしまう… 具体的にはこんなんですが。 if (a == 1) { /* 〜ということやりたいけど後で考える */ } else { なんかのしょり なんかのしょり } (a == 1) の時の処理考えなくてよければ、こんなんかな。 if (a != 1) { なんかのしょり なんかのしょり }
- 117 名前:仕様書無しさん mailto:sage [2007/05/13(日) 14:21:06 ]
- >>116
コーディング中には俺もよくやる。 問題は納品後のソースにそれが残ってることだと思います。 //TODO:この機能いらなくね?? とか //TODO:うんこしたい とか //TODO:仕様はやくきめろやぼけ!!殺すぞ!! とか 他人にはとても見せられないようなコメント 入れといて実装漏れ、修正漏れは絶対起こさないようにすべき このコメントを納品した後のソースで、見たらその人は この会社やめようって思うんだろうなー でも、顧客の悪口は洒落にならないから書かないぜ!
- 118 名前:仕様書無しさん mailto:sage [2007/05/13(日) 14:26:10 ]
- んなコメント入れんなよ
- 119 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:13:43 ]
- 普通、if(a)って書かね?
- 120 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:20:56 ]
- >119
出た〜〜〜っ!
- 121 名前:仕様書無しさん [2007/05/13(日) 17:41:28 ]
- >>119
それキモい。 aはあくまでデータであり、真偽をあらわす値ではない。
- 122 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:44:10 ]
- ところでいつ a が boolean になったんだ?
- 123 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:44:34 ]
- C#とかだとコンパイルも出来ない。
- 124 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:47:02 ]
- ifは0かそうじゃないかだけしか見ないんだから>>119で何の問題もないだろ
C#はシラネ
- 125 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:51:42 ]
- ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから ifは0かそうじゃないかだけしか見ないんだから ifは0かそうじゃないかだけしか見ないんだから ifは0かそうじゃないかだけしか見ないんだから〜 お前とは組みたくない。
- 126 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:56:10 ]
- 組込みマイコンのコンパイラでは常識的手法。
if(a)なら JNZ命令一行ですむ。
- 127 名前:仕様書無しさん mailto:sage [2007/05/13(日) 17:59:30 ]
- >>121
まじすか。 ただ、適切な変数名をつけて問題領域で考えれば分かりやすいと思うんだけどなぁ int型でも俺はそうやってる
- 128 名前:仕様書無しさん [2007/05/13(日) 18:07:33 ]
- if (a) って書いたら a == 1 以外のケースでも真と判定されることに気づかないかね。
>>126 if (a != 0) を if (a) に最適化するのはコンパイラの仕事ですよ。 より効率の良く等価な記述に変換する最適化はコンパイラにさせて 人間は正しい意味論に則った保守しやすいコードの記述に努めるべき。
- 129 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:17:16 ]
- で、aの型は・・・?
- 130 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:19:03 ]
- お前ら、if (isdigit(c) == 1)って書くの?
- 131 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:23:03 ]
- >>121
何か変なことになった場合に if(a)の時点でa=0になっていると保証されてるなら それでいいと思うが。
- 132 名前:仕様書無しさん [2007/05/13(日) 18:25:26 ]
- >>130
isdigit関数の戻り値の意味は真偽値だとわかっているから if (isdigit(c)) で無問題。 ちなみに 真==1 とは限らないので、敢えて書くなら if (isdigit(c) != 0) が正解。
- 133 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:27:44 ]
- >>128
int型でもブール変数として使う場合は むしろ、a == 1 以外のケースでも真と判定されなきゃまずいと思うけど
- 134 名前:仕様書無しさん [2007/05/13(日) 18:32:31 ]
- if(a)って書くとバグの温床になるからやめろ
等号式書いても、今のコンパイラなら80年代と違って等価のコード出す。 今、最適化意識して各のはアルゴリズムの性能と無駄なシーケンス省くことだけ。 きもいくて古い書き方は捨てろ。恥だ
- 135 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:38:06 ]
- >>134
>if(a)って書くとバグの温床になるからやめろ まぁif((hFile = CreateFile()))とかやってハマってた奴とかいたし、気持ちはわかるw
- 136 名前:仕様書無しさん [2007/05/13(日) 18:38:38 ]
- isdigit
www
- 137 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:38:42 ]
- だーかーらー前提としてaの型を明らかにして話を進めろ
- 138 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:47:19 ]
- >135
じつはhFileの実体がスマートハンドルで、 operator boolみたいなのが定義されているとか
- 139 名前:仕様書無しさん mailto:sage [2007/05/13(日) 18:51:44 ]
- >137
新人はだまってROMしてなさい!
- 140 名前:仕様書無しさん [2007/05/13(日) 18:55:15 ]
- >>137
・aがブールを意味する値なら if (a) でおk ・そうでなければ比較の意図を明示的に表明すべし でFA
- 141 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:04:34 ]
- >140
上の連中それをごっちゃにして噛み合わない議論してねぇ?
|

|