この会社辞めようと思 ..
49:仕様書無しさん
07/04/21 19:27:18
なんかまずいの?
馬鹿にしたかったら馬鹿にしていいけど、その後でちゃんと何が分かってないのか説明してね。
50:仕様書無しさん
07/04/21 19:32:28
キャストがおかしいってことか。
仮に typedef void *Hoge; だとしたらこれでOKって、いや違うC++だとアウトだ。
あれ?
51:31
07/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:仕様書無しさん
07/04/21 20:34:41
パケットのデータを取り出すのによく>>48みたいなキャストするけどいかんのかね?
ま、確保したばかりの変数をキャストするのは珍しいと思うけどさ
53:仕様書無しさん
07/04/21 21:27:33
>>52
普通は
Hoge* hoge = new Hoge;
だわな。
よくCから中途半端にC++へ移行した人がやってるのを見かける。
どうせnew=malloc程度に理解してんだろうね。
54:仕様書無しさん
07/04/21 23:49:33
>>49
説明するまでもないだろ。
55:仕様書無しさん
07/04/22 01:05:47
キャストは基本DQNでございます。
memcpyとか大好きなDQNがごろごろ。
大人しくCでもいじってろ。
56:仕様書無しさん
07/04/22 01:30:29
先日見たJavaコード
long hoge = 1;
:
Long page = Long.valueOf(String.toString(hoge));
文字列にする意味ねぇ・・・
57:仕様書無しさん
07/04/22 14:58:11
>>56
"valueOfがイイ、使え"
とか言われた人間がそこで思考停止するとそうなるな...
58:仕様書無しさん
07/04/22 16:21:19
>>56-57
もっと深刻な「コボラ上がり」だったんじゃないかな。
やつらは、数値="0"〜"9"の並び(=ゾーン形式)っていう観念から
離れらんないから。
59:仕様書無しさん
07/04/22 23:10:42
>>48も基本がなってない。
(Hoge)じゃなく(Hoge *)だろ。
60:仕様書無しさん
07/04/23 13:19:44
主旨は違うんだけど、ここの
URLリンク(d.hatena.ne.jp)
// null => 0, not null => 1
int p = Boolean.toString(data == null).length() - 4;
ってのが好き。やられた。
61:仕様書無しさん
07/04/23 15:03:51
ソースコードじゃないんだけど。
DBのDDLをバージョン管理システムに入れてまして。
外注さんが直接DBをいじっちゃったので、
リポジトリのDDLに変更を反映してくれって頼んだら。
hoge.sql(手付かず)
hoge_日付.sql(新規)
ってファイルがリポジトリにあって
面白かったです。
62:仕様書無しさん
07/04/23 21:40:52
最初、DLLと読んでしまったので、理解するのに時間がかかってしまった。
バージョン管理システムを、読み書きに手順が必要なファイルサーバだと
思ってる人、確かにいますね。
63:仕様書無しさん
07/04/23 21:58:34
>バージョン管理システムを、読み書きに手順が必要なファイルサーバだと
>思ってる人、確かにいますね。
今のPRJリーダのことかーーーー
CVSなのになぜか
hoge
hoge_2
hoge_3
とディレクトリを切っている。
旧ソースを全てコメントとして残したり、
日付と変更者をコメントに書いて変更箇所をサンドイッチしたり。
ストレージとしてしか使っていないよ・・・orz
64:仕様書無しさん
07/04/29 14:33:46
変更者が変質者に見えた・・・俺相当疲れてるな・・・
65:仕様書無しさん
07/04/30 01:15:17
IF IsNumeric(Cint(value)) Then
End If
orz ...
66:仕様書無しさん
07/05/01 18:01:28
元気出せ。
67:仕様書無しさん
07/05/05 15:38:53
VBの類は、暗黙の型変換を禁止するオプションがほしいよぬ
68:仕様書無しさん
07/05/05 16:36:40
>>67
vb.net にはあるぞ
69:仕様書無しさん
07/05/06 14:05:22
俺の会社ポインタ型は全部void *って全社共通で決まってるから
VBのキャストぐらいでは混乱しないよ。
70:仕様書無しさん
07/05/06 14:14:37
常に参照先の型について意識させることで社員の意識を高めようということか!
ごめん無理
71:仕様書無しさん
07/05/06 15:12:53
関数ポインタも?
72:仕様書無しさん
07/05/06 15:33:12
全部void *
型の意味がよくわからない使いかたしまくってるよ
void hoge(int *val);
こんな関数とか平気作るし
73:仕様書無しさん
07/05/06 15:49:17
C++では関数ポインタはvoid *だとまずいんだよな
オーバーロードが解決できなくなるから
こういうことやるならまだしも(できるんか?)
int func(int) { ... }
double func(double) { ... }
void *p = reinterpret_cast<int (*)(int)> (func);
74:仕様書無しさん
07/05/06 15:51:08
呼び出し側書くの忘れてた
reinterpret_cast<int (*)(int)> (p)(10);
75:仕様書無しさん
07/05/06 15:52:53
C++には、メンバ関数ポインタ、という鬼子もいるからね
76:仕様書無しさん
07/05/07 11:14:57
reinterpret_cast
↑
なんでこれ導入したんだろうね。。。
77:仕様書無しさん
07/05/07 11:58:25
いや、わりと低水準なことをするときには必要だろ。
static_castだと型変換がかかって値(メモリ上のビット列)が変化することがある。
reinterpret_castは型だけを変化させてビット列そのものは変化しない。
78:仕様書無しさん
07/05/07 12:13:08
そんな場面あるか?
79:仕様書無しさん
07/05/07 21:37:54
組み込みとか
80:仕様書無しさん
07/05/08 10:05:32
kwsk
81:仕様書無しさん
07/05/08 14:28:58
ソースじゃないんだけど
あるSEがUML書きましたと言って提出してきた設計書が、
単なるフローチャートだったとき
しかもパーツの意味を間違えまくっているとき
82:仕様書無しさん
07/05/08 18:15:31
いいじゃんか。
全部アクティビティ図だと脳内で変換するんだ。
変換して現実から目をそむけると。
はっぴ?
83:仕様書無しさん
07/05/08 18:54:42
フローチャートって実戦で使わないだろw
84:仕様書無しさん
07/05/08 19:09:35
>>81
フローチャート通りに実装していいんじゃね?
85:仕様書無しさん
07/05/08 22:07:33
様式に神経質なぐらいこだわる奴はたいていろくでもない
要はしっかり設計できてりゃいいってのがわかってないんだよな・・・
86:仕様書無しさん
07/05/08 22:24:16
UMLキチガイのことか
87:仕様書無しさん
07/05/08 23:39:21
そうおもってさ。おぷそのつーるでグラフ化してみたわけよ、糞ソフト。
花火が見られた。
とりあえず生成結果を消した。
88:仕様書無しさん
07/05/09 09:23:11
Happy99とは懐かしいな。
89:仕様書無しさん
07/05/09 10:07:23
しあわせ99?
90:仕様書無しさん
07/05/09 10:14:18
ウイルスだったよな?確か
91:仕様書無しさん
07/05/09 19:20:16
昔流行ったよな。確か花火が上がるやつだと記憶している。
92:仕様書無しさん
07/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:仕様書無しさん
07/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:仕様書無しさん
07/05/09 22:58:11
時々居るなぁ、Boolean使わない奴。
95:仕様書無しさん
07/05/09 23:15:01
ポインタをintにキャストする香具師は、
LP64,LLP64環境で死亡で御座います
96:仕様書無しさん
07/05/09 23:26:18
uintptr_tかchar*でないとマズいね。
ところで~(ALIGNSIZE-1)ってそのままで大丈夫?
97:仕様書無しさん
07/05/09 23:36:30
ごめん、大丈夫そう。
98:仕様書無しさん
07/05/09 23:57:03
>>96
ALIGNSIZEが2の冪乗値という条件付きだけどな
文末のセミコロンが抜けてるのは痛い>92
99:仕様書無しさん
07/05/10 01:43:21
#define private public
#define protected public
本当にこれが書かれたコードがあった。
しかも俺のすぐ上の上司が書いたっぽい。
陰謀めいたものを感じて冷や汗が出たよ
100:仕様書無しさん
07/05/10 09:36:17
private宣言してもリアルタイムデバッグではアクセス可能だろ?
意味なくね?
101:仕様書無しさん
07/05/10 11:00:05
>>100
はあ?
102:仕様書無しさん
07/05/10 11:49:46
全然privateじゃないってこと
103:仕様書無しさん
07/05/10 12:24:19
カプセル化の意味も判らないんなら口挟まない方がいいんじゃね?
104:仕様書無しさん
07/05/10 12:31:25
そこで防御策として
#ifdef private
#undef private
#endif
#ifdef protected
#undef protected
#endif
と自分のヘッダの先頭に書く必要が出てくる。
もはや冷戦だな。
105:仕様書無しさん
07/05/10 17:55:41
>>104
勘弁してください……
106:仕様書無しさん
07/05/10 18:57:15
>>104
その後にインクルードされるヘッダファイルの中で
#ifndef private
#define private public
#endif
#ifndef protected
#define protected public
#endif
と書かれてないか調べたか?
w
107:仕様書無しさん
07/05/10 19:19:40
嫌な職場だなぁ
108:仕様書無しさん
07/05/10 22:26:52
まさに冷戦。 誰が核のボタンを押すのか、押せるのか。 いやまて核は何なのか。
109:仕様書無しさん
07/05/10 23:18:03
#define FIRE FILE なんての見て鬱になってたところだが、
ここ見てたらなんだか元気が出てきた。ウチはまだ大丈夫だ!
110:仕様書無しさん
07/05/10 23:48:01
>>106
オワットルwww
111:仕様書無しさん
07/05/11 00:48:52
>>109
知らぬ間に
#define FILE FIRE
になっているかもしれんぞ。
112:仕様書無しさん
07/05/11 01:38:14
大丈夫。
展開コードを参照すればw
113:仕様書無しさん
07/05/11 10:34:47
1つのプロジェクト内にファイルが1800個あったから、一体何かと思ったら
履歴を全部別ファイルにして残していて、わざわざコンパイルしない設定対象に1780個ぐらい加えているという・・・
バージョン管理ソフト使っていてこれかよ。出向先なので辞めるわけにはいかない、
明日から通勤時間に3年程かけようかとか本気で思った
114:仕様書無しさん
07/05/12 01:22:44
>>111
sonyのバッテリーが発火した原因はそれか。
115:仕様書無しさん
07/05/13 07:16:31
やめよう思うほどじゃないが
よく見るキモチワルイコード
if (a == 1) {
} else {
なんかのしょり
なんかのしょり
}
116:仕様書無しさん
07/05/13 08:38:20
>>115
俺、よくこういうコード書きかけてしまう…
具体的にはこんなんですが。
if (a == 1) {
/* 〜ということやりたいけど後で考える */
} else {
なんかのしょり
なんかのしょり
}
(a == 1) の時の処理考えなくてよければ、こんなんかな。
if (a != 1) {
なんかのしょり
なんかのしょり
}
117:仕様書無しさん
07/05/13 14:21:06
>>116
コーディング中には俺もよくやる。
問題は納品後のソースにそれが残ってることだと思います。
//TODO:この機能いらなくね??
とか
//TODO:うんこしたい
とか
//TODO:仕様はやくきめろやぼけ!!殺すぞ!!
とか
他人にはとても見せられないようなコメント
入れといて実装漏れ、修正漏れは絶対起こさないようにすべき
このコメントを納品した後のソースで、見たらその人は
この会社やめようって思うんだろうなー
でも、顧客の悪口は洒落にならないから書かないぜ!
118:仕様書無しさん
07/05/13 14:26:10
んなコメント入れんなよ
119:仕様書無しさん
07/05/13 17:13:43
普通、if(a)って書かね?
120:仕様書無しさん
07/05/13 17:20:56
>119
出た〜〜〜っ!
121:仕様書無しさん
07/05/13 17:41:28
>>119
それキモい。
aはあくまでデータであり、真偽をあらわす値ではない。
122:仕様書無しさん
07/05/13 17:44:10
ところでいつ a が boolean になったんだ?
123:仕様書無しさん
07/05/13 17:44:34
C#とかだとコンパイルも出来ない。
124:仕様書無しさん
07/05/13 17:47:02
ifは0かそうじゃないかだけしか見ないんだから>>119で何の問題もないだろ
C#はシラネ
125:仕様書無しさん
07/05/13 17:51:42
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから
ifは0かそうじゃないかだけしか見ないんだから〜
お前とは組みたくない。
126:仕様書無しさん
07/05/13 17:56:10
組込みマイコンのコンパイラでは常識的手法。
if(a)なら JNZ命令一行ですむ。
127:仕様書無しさん
07/05/13 17:59:30
>>121
まじすか。
ただ、適切な変数名をつけて問題領域で考えれば分かりやすいと思うんだけどなぁ
int型でも俺はそうやってる
128:仕様書無しさん
07/05/13 18:07:33
if (a) って書いたら a == 1 以外のケースでも真と判定されることに気づかないかね。
>>126
if (a != 0) を if (a) に最適化するのはコンパイラの仕事ですよ。
より効率の良く等価な記述に変換する最適化はコンパイラにさせて
人間は正しい意味論に則った保守しやすいコードの記述に努めるべき。
129:仕様書無しさん
07/05/13 18:17:16
で、aの型は・・・?
130:仕様書無しさん
07/05/13 18:19:03
お前ら、if (isdigit(c) == 1)って書くの?
131:仕様書無しさん
07/05/13 18:23:03
>>121
何か変なことになった場合に
if(a)の時点でa=0になっていると保証されてるなら
それでいいと思うが。
132:仕様書無しさん
07/05/13 18:25:26
>>130
isdigit関数の戻り値の意味は真偽値だとわかっているから if (isdigit(c)) で無問題。
ちなみに 真==1 とは限らないので、敢えて書くなら if (isdigit(c) != 0) が正解。
133:仕様書無しさん
07/05/13 18:27:44
>>128
int型でもブール変数として使う場合は
むしろ、a == 1 以外のケースでも真と判定されなきゃまずいと思うけど
134:仕様書無しさん
07/05/13 18:32:31
if(a)って書くとバグの温床になるからやめろ
等号式書いても、今のコンパイラなら80年代と違って等価のコード出す。
今、最適化意識して各のはアルゴリズムの性能と無駄なシーケンス省くことだけ。
きもいくて古い書き方は捨てろ。恥だ
135:仕様書無しさん
07/05/13 18:38:06
>>134
>if(a)って書くとバグの温床になるからやめろ
まぁif((hFile = CreateFile()))とかやってハマってた奴とかいたし、気持ちはわかるw
136:仕様書無しさん
07/05/13 18:38:38
isdigit
www
137:仕様書無しさん
07/05/13 18:38:42
だーかーらー前提としてaの型を明らかにして話を進めろ
138:仕様書無しさん
07/05/13 18:47:19
>135
じつはhFileの実体がスマートハンドルで、
operator boolみたいなのが定義されているとか
139:仕様書無しさん
07/05/13 18:51:44
>137
新人はだまってROMしてなさい!
140:仕様書無しさん
07/05/13 18:55:15
>>137
・aがブールを意味する値なら if (a) でおk
・そうでなければ比較の意図を明示的に表明すべし
でFA
141:仕様書無しさん
07/05/13 19:04:34
>140
上の連中それをごっちゃにして噛み合わない議論してねぇ?
142:仕様書無しさん
07/05/13 19:08:37
>>134
むしろ、バグの温床になるのは
if (a==0)
とかの方なんだがな・・・
typo で
if (a=0)
になってしまうから。
143:仕様書無しさん
07/05/13 19:12:33
はいはいif(0==a)
144:仕様書無しさん
07/05/13 19:28:00
つか
if( a == b )を間違えないように定数比較したいなら
if( NULL == a)って書けばいいだろ。定数は必ず初項として記述すればいいだろ
仮にif( NULL = a)ってやればコンパイルエラー出る。
つうか2000年ぐらいまでのコーディング規約でいいものだけ取り入れて
かけよ。一般人ができる最低限度のコーディングの礼節だと思うがな。
145:仕様書無しさん
07/05/13 19:34:08
>>144 読んで
ふと思ったんだが、
fj って今でもあるの?
146:仕様書無しさん
07/05/13 19:35:09
確かにその書き方なら間違いが防げるけど、何故か普及してないな。
147:仕様書無しさん
07/05/13 19:36:49
if( NULL == a)
と書くのはお断りだ
148:仕様書無しさん
07/05/13 19:38:54
>>146
昔から議論はあるけど、警告が出るからそんなヘンな書き方をすることは無いってことで落ち着いてる。
149:仕様書無しさん
07/05/13 19:40:09
>>144
きもいくて古い書き方は捨てろ。恥だ
150:仕様書無しさん
07/05/13 20:18:41
if(a)
が一番美しい。
151:仕様書無しさん
07/05/13 20:25:30
>>150
>>121
152:仕様書無しさん
07/05/13 20:31:36
>151
>127
153:仕様書無しさん
07/05/13 20:36:17
プログラムってのはデータと命令しかないわけよ。
そのデータが真偽値であるとか整数であるとかあるいは文字列であるとかの意味付けは
言語処理系上でのみ行われている文脈上のものでしかないの。
文法的に許されているなら>>150を支持する。実際、美しい。
キモイとか許せないと思うなら
if(a)
という記述を許さない言語を使えば良いでしょ。
154:仕様書無しさん
07/05/13 20:37:43
無限ループって怖くね?w
155:仕様書無しさん
07/05/13 20:38:51
最初の書き込みで、aに入ってるのがbool値(0かそれ以外)か、ただの数値(たとえば0〜100とか)とか何も
書いてないのに、いきなり
「if (a) と書く」とか言うのは変だって言ってるんだろ。
156:仕様書無しさん
07/05/13 20:45:37
個人的に
if(a)
で書ける状況でもこういう書き方はしないなぁ。
たまたま文法的に成立するってだけだから。
古い書き方だと思う。
今はベタに、ちゃんと==使わないとダメだと思う。
157:仕様書無しさん
07/05/13 20:45:46
ねえ、今は False =0, True = 1 であたりまえなの?
昔はそれぞれ 0, 0xff って実装もありだったと思うんで、
True のつもりで a == 1 なんて怖くて書けない。
せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?
158:仕様書無しさん
07/05/13 20:46:32
>>155
>「if (a) と書く」とか言うのは変だって言ってるんだろ。
別に。
また、プログラムの読み手にとっても、
aに入ってるのがbool値か、ただの数値か
なんて考える必要はない。
a の評価値が 0 かそれ以外かさえ分かればよい。
こんな単純な話はない。
159:仕様書無しさん
07/05/13 20:49:42
>>158
でも, bool値以外のデータだったら、
if (a == 1) を
if (a) にしたら、動作が違ってくるだろ?
160:仕様書無しさん
07/05/13 20:50:14
a == 1 の比較だろ
a = 0 or 1 ならともかく
a = 2 のときは?
a = 100 のときは?
161:仕様書無しさん
07/05/13 20:50:16
>>158
その場合、if(a) は発端>>115 の if (a==1) と同一ではない。
発端の if (a==1) はあなたの「単純な話」にあてはまらない。
元の話わかってる?
162:仕様書無しさん
07/05/13 20:52:26
aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、
if (a == 1) を if(a) と書き直したらダメだろ。
163:仕様書無しさん
07/05/13 20:53:39
凡庸なプログラマってこうした思い込みしてコーディングしてんのかな…
164:仕様書無しさん
07/05/13 20:54:14
なんかトンデモねぇ馬鹿が一匹迷い込んでないか
俺コイツと一緒に仕事すんのはマジで嫌
想定外の修正されてぶち壊されそう
165:仕様書無しさん
07/05/13 20:54:56
初心者の俺にはよく分からんのだが
aの型について触れずに論議が進められるのは何故なの?
166:仕様書無しさん
07/05/13 20:55:46
>165
何度か指摘してるんだが何故かまともに取り合ってくれないんだ(´・ω・`)
167:仕様書無しさん
07/05/13 20:56:02
aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、
if(a)をif (a == 1) と書き直したらダメだろ。
168:仕様書無しさん
07/05/13 20:57:42
>>167
>if(a)をif (a == 1) と書き直したらダメだろ。
それは誰もしてない。
169:仕様書無しさん
07/05/13 20:59:43
>>165
少なくともCにおいては、if()の中身は式であって、その型は無関係だから。
170:仕様書無しさん
07/05/13 21:01:13
>165
>166
>139
171:仕様書無しさん
07/05/13 21:02:10
>>157
>せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?
bool値のある言語でそれをやったら、ちょっとヘタクソっぽい。
Cだと、
#define TRUE 0
#define FALSE -1
とか、ありえるので、わからなくもない。
172:仕様書無しさん
07/05/13 21:04:05
キモイとか言える次元かよw
感覚上身についているかどうかのレベルの問題じゃね?
(センスというにはあまりに次元が低すぎる)
#include <stdio.h>
char* a;
int main(){
if (!a){
printf("a");
}
}
とかどうすんだよ。aが初期化されて無い判定は。
まさかbool型とか、コンパイラがうまくやってくれるからとか言っちゃって0で、==するのか?www
ショッペーーー
173:仕様書無しさん
07/05/13 21:05:31
今日はとくに変だな
このスレw
174:仕様書無しさん
07/05/13 21:05:35
この人なんで火病ってんの?
175:仕様書無しさん
07/05/13 21:06:28
でさー 115 がいつ C って決まったの?
176:仕様書無しさん
07/05/13 21:08:32
>>175
暗黙の前提。ああいう構文の言語は全部がCから派生しているからね。
177:仕様書無しさん
07/05/13 21:09:17
まあ細かいことはプログラム書く人の自由ということで、115の場合はひとつの例として、
if aが1のとき{何もしない} else {何かの処理}がキモチワルイコードと言っているだけだ。
178:仕様書無しさん
07/05/13 21:14:59
じゃあここは間とって三項演算子で書こうぜ
179:仕様書無しさん
07/05/13 21:15:01
>>115 の主張は
if (a == 1) {
/* 〜ということやりたいけど後で考える */
} else {
で、「/* 〜ということやりたいけど後で考える */ を書くのが嫌だ」って話であって、
今の話題は >>119 が言う所の、
「if 文の括弧の中では、明示的に論理式を書く必要がない」か否か
って話だろ?
180:仕様書無しさん
07/05/13 21:16:07
>暗黙の前提。
こういう自分勝手な解釈をするヤツが一番手におえない
181:仕様書無しさん
07/05/13 21:19:37
>>180
>>115 ≠ >>176 というのも、暗黙の前提だな。
182:仕様書無しさん
07/05/13 21:23:04
それも勝手な解釈だな
その場合は前提を提示していないという意味で自分勝手な以下同文
183:仕様書無しさん
07/05/13 21:23:42
>>179
俺が
> /* 〜ということやりたいけど後で考える */
を追加した >>116 だけど、>>115 はそんなこと主張してないぞ。
>>115 の if (a == 1) {} else { ... } の解釈はいろいろありえるが、俺は
「if (a == 1) の時何もやらない」だと解釈した。
俺は別なつもりで同じようなコードを書いてしまうとコメントしたつもりだったんだが、
俺が余計なこと書いて議論を混乱させたのか? すまんかった。
184:119
07/05/13 21:28:36
正直すまんかった。
俺が勝手に>>115のaをブール値を表現する変数だと勘違いして>>119を書いた。
でも、よく考えたら>>115は明示的にa == 1って書いてるんでブール値ではないわな。
ブール値なら少なくともa == TRUEとか書かなきゃいかんはずだし。
まぁ、俺が言うのもなんだが>>140->>141でFAで
185:けーつえーき
07/05/13 21:58:00
>>184
その辺って熟練のPGでも考え方に違いが出てくるので
PLの考えに合わせるのが無難と思う。
そういえば、MSの環境でBOOLって型があって
#define TRUE (1)
#define FALSE (0)
と定義されてるんだけど
APIで返す値に1以外の0じゃない値が返るものがあったりするねw
186:仕様書無しさん
07/05/13 22:10:58
>>185
Windows APIのBOOL型の戻り値は、だいたい「成功すると0以外の値を返す」と
ドキュメントに記されているわけで、特定の定数TRUEを返すとは書かれていないんで
if (HogeHoge() == TRUE)
は間違い。普通はこういう書き方しないだろうけど。
ところでその#defineの括弧は不要なんじゃ...
187:仕様書無しさん
07/05/13 22:18:46
どころか、GetMessageみたいな3値を返すBOOLもある
188:仕様書無しさん
07/05/13 22:21:39
> ところでその#defineの括弧は不要なんじゃ...
まあ括弧でくくるクセをつけてあるのは良いことだと思う。
189:仕様書無しさん
07/05/13 22:26:24
おう。そういう例があるから だいたい とさりげなく断っておいた。
俺はそれに嵌ったクチだし。
(ウィンドウの生成に失敗しているのにGetMessageして-1が返って無限ループorz)
190:仕様書無しさん
07/05/13 23:17:00
>>186
APIリファレンスにも普通に-1を返すと記述されてたりするw
>>189
他にも罠wがいろいろあるのがMS仕様という印象
191:仕様書無しさん
07/05/14 05:41:07
スレタイが「この会社辞めようと思ったソースコード」なのになんで素人が混じってんだ?
192:仕様書無しさん
07/05/14 08:03:15
>>191
プロはこんな板見てないからじゃないか?
193:仕様書無しさん
07/05/14 08:26:50
>>191
素人とプロの違いは技量の違いではない。
「それが生活基盤であるか否か」だけである。
だからいくら素人に見えても実態はプロである事は多い。
194:仕様書無しさん
07/05/14 08:58:01
>>193
てことは>>191もプロになるんだろうな。
195:仕様書無しさん
07/05/14 11:30:47
とりあえず最悪の事態を考えてaはValiant型を想定しておくか
196:仕様書無しさん
07/05/14 11:44:27
>>195
ちょっwwwww
SUGEEEEEEEEE
そんな先のことまで想定してコーディングするとはwww
俺絶対入社するわ
全部Variantで書いとくんで保守たのんますwww
197:仕様書無しさん
07/05/14 12:29:41
なんかスレが延びているとおもったら、またよくわからん話題で盛り上がってるのか
えーっと
ぬるぽ
198:仕様書無しさん
07/05/14 12:35:31
がっ
199:仕様書無しさん
07/05/14 16:51:48
// ここからそこまで何をしているのか不明
そこって何処よ…('A`)
200:仕様書無しさん
07/05/14 17:52:51
' SOKOってラベルふってあんだろ
201:仕様書無しさん
07/05/14 17:56:16
底でしょ
202:仕様書無しさん
07/05/14 17:58:54
プロシージャ内と予測してみる
203:仕様書無しさん
07/05/14 19:31:37
ここってCの人が多いみたいね。
じゃあ、vb系を代表して:
Dim a, b As Integer
Cとは違います。多分正しくありませんよ〜
204:仕様書無しさん
07/05/14 19:34:04
>>203
普通にそう書いてる奴多いな
俺はメンテの時に困るから書いてないけど
205:仕様書無しさん
07/05/14 19:37:00
>>203 aはIntegerと見せかけて、バリバリのバリアントだな。
そういう紛らわしい書き方ができてしまうVBの言語仕様はどうみても糞だな。
206:仕様書無しさん
07/05/14 19:37:30
上の方でtrue=1, false=0とかあってけど、VBAではTrue=-1ね
多分VBも
207:仕様書無しさん
07/05/14 19:44:45
>>203
そーいや専門学校で教師がそのソース書いてたな。
208:仕様書無しさん
07/05/14 19:45:10
やめて〜(実話)
For i=1 To 10000
Cells(i,1) = "なんたらかんたら"
Next
ExcelVBA だが、行は何行あるか分からないらしい。動けばいいのかな?
上級SEさんのコードでした。
209:仕様書無しさん
07/05/14 19:51:16
>>205
更に、.NET 以降はあれで「どっちも Integer」という軽い罠。
>>208
まあSヨなら普通。
210:仕様書無しさん
07/05/14 19:52:34
>>209
そうなの?違うんじゃない?
211:仕様書無しさん
07/05/14 20:01:01
ソースじゃないけど聞いていい?
PL/SQLとTransact-SQLって同義なの?
前者はOracleで後者はSQLServerに使うものだと思っていたんだけど。
今日、面談で言われたよ〜
212:仕様書無しさん
07/05/14 20:01:03
>>209
セル1つ1つに値を入れる奴はヘタレ。
213:仕様書無しさん
07/05/14 20:33:28
>>210
…あのさ、君が前段と後段のどっちに疑問を呈しているのか解るのって君だけなんだが。
(7:3 で前段と踏んだ)
>>211
ここが質問スレじゃないことくらい理解してほしいところなんだが。
>PL/SQLとTransact-SQLって同義なの?
「ストアドプロシージャの記述に使用できる」という一点のみが共通項。
214:仕様書無しさん
07/05/14 20:39:13
>>213
>>210 どす。
前段どす。
Dim a, b As Integer
って.netでもaはVariantじゃないの?
215:仕様書無しさん
07/05/14 20:41:35
「VB.NET 変数宣言」でぐぐれかす
216:仕様書無しさん
07/05/14 21:03:36
ホントだ。知らんかった。
217:仕様書無しさん
07/05/14 21:21:01
Dimってさ、もともとDimensionの略で、配列の次元を宣言するための
ものだったのにどーしてVBは一般の変数宣言に使うようになっちゃった
んだろう。
218:仕様書無しさん
07/05/14 21:30:23
RubyとかLispとか動的型付けの言語でもコードが書かれてるんだから、
Variantでもいいじゃないか。
219:仕様書無しさん
07/05/14 21:31:21
>>218
底辺乙
220:仕様書無しさん
07/05/14 21:55:27
そもそもoption explicitにしない奴もいるわな。
いいんじゃない?最近のPCは性能がいいから。
221:仕様書無しさん
07/05/14 22:00:50
>195
Variant
222:仕様書無しさん
07/05/14 23:14:36
>220
ハードウェアの進化には楽天的であれ
ソフトウェアの進化には悲観的であれ
エンジニアの技術力の進化には絶望的であれ
# 上の2つは201の鉄則より
223:仕様書無しさん
07/05/14 23:59:36
スレリンク(prog板:711番)
224:仕様書無しさん
07/05/15 10:31:23
昨日を
today-1
と書くか
dateadd("d",-1,today)
と書くか
225:仕様書無しさん
07/05/15 10:56:39
普通下だと思ってた俺はどうなのよ?
226:仕様書無しさん
07/05/15 10:59:04
反省しろ
227:仕様書無しさん
07/05/15 11:36:02
ボリューム(D:)
↑
このへんがやる気ナイ・・
228:仕様書無しさん
07/05/15 11:43:17
>>225
すまん。Date-1だった。最近、VBやってないから忘れてた。
229:仕様書無しさん
07/05/15 12:07:08
>>203
あれ? 確かVB4か5までは a = variant, b = integerになるが、
VB5か6からは両方ともintegerになるような解釈になってなかったっけ
ま、毎回1つ1つきっちり書いている俺には関係ないが
230:仕様書無しさん
07/05/15 12:17:15
ならん
231:仕様書無しさん
07/05/15 12:23:57
今確認したけど
dim a,b as integer
ってVB6SP6でやると
a=Empty
b=0
になってたからaの型はVariantになってるね
232:仕様書無しさん
07/05/15 12:27:45
バージョンで仕様が変わったら、やってられないだろ〜
.netはいいチャンスだと思ったんじゃない?
233:仕様書無しさん
07/05/15 13:35:50
>206
その解釈は微妙。(VB(A)でもCでも)
どちらも、0が偽でそれ以外が真。
ただし、比較式などが返す値が、Cでは1、VB系は-1てこと。
>206自身はわかってるならそれはいいんだけど、
わかってない人が>206みたいな記述を読むと勘違いしたりする('A`)
234:229
07/05/15 16:09:20
>>231
ああ、.NETからの間違いだったかも
すまそ、ちょっとunicode変換されてくるは
235:仕様書無しさん
07/05/15 22:23:41
>>228
そんなの書けたか?
236:仕様書無しさん
07/05/15 22:37:00
>>235
今ちょっと試してみたけど、Excel VBA で Date 型だと書けてしまうな。気持ち悪い。
整数が日付、小数点以下が時刻ってことか…
俺はDateAddの方がどんな変数を操作してるかわかりやすいので安心できる。
237:仕様書無しさん
07/05/16 00:22:54
真値を数値として扱うと-1になることを利用した演算式が
昔のBASICにゃたんまりあってのう……
a = a + (h > 3) * 1
とか
238:仕様書無しさん
07/05/16 00:44:08
Oracle とかもDate型は数値扱いだろ
よくあるよくある
239:仕様書無しさん
07/05/16 07:10:34
>>237
むしろ条件式を使うことがコード量を節約する手法の一つだったのさ。
240:仕様書無しさん
07/05/16 09:46:11
>>237
の動作ってどうなるんだ?
こんな書き方しらねぇ・・・・
(h > 3)
この部分の解釈
241:仕様書無しさん
07/05/16 10:15:20
>>240
真なら -1 で偽なら 0 になる。
つまり C で書きなおせば
if (h > 3) a += 1;
ってこと。
この例だとコード量節約にもならないような。
242:仕様書無しさん
07/05/16 10:35:26
BASICならIF文使うと遅いからじゃね?
243:仕様書無しさん
07/05/16 10:41:02
サンクス
なるほど そういう解釈になるのか!
しかし・・・可読性が落ちるな(;´Д`)
昔は遅かったからその辺のテクなんだろうなぁ・・・
244:仕様書無しさん
07/05/16 12:02:18
最近のCPUで当時のBASICコードが動かせるとすると
ループで時間稼いだりしてた部分が瞬時に終わったり
笑える動作になるんだろうな
245:仕様書無しさん
07/05/16 12:03:41
>>238 は何を言ってるんだ…?
246:仕様書無しさん
07/05/16 12:06:52
>>244
ウチは実際にそれで問題が出てたwwww
247:仕様書無しさん
07/05/16 12:47:25
>>244
昔でもあったぞ。
ゲームでPC-9801VM(V30)でスピード最適化したシューティングゲームを
PC-9801RA(i386)で動作させてみたらレーシングゲームになった、とか
248:仕様書無しさん
07/05/16 13:30:20
MSXturboRの通常モード(8ビットモード)で普通に出来たゲームが
高速モード(16ビットモード)では早すぎてゲームにならなかったり。
249:仕様書無しさん
07/05/16 19:37:21
>>237
俺は Pascal(Delphi) で似たようなコードをよく書く。
Salary := BaseSalary + 1500 * OverHours * Ord(chkOvertimePaid.Checked);
Pascal では Ord(False) = 0、Ord(True) = 1 と言語で定義されている。
でも確かに 8 ビット時代の悪しき習慣のような感じもするな。
250:仕様書無しさん
07/05/16 20:39:53
俺は同じ書き方やって言語で動作が違うような書き方はしないように心がけてる
251:仕様書無しさん
07/05/16 20:44:09
じゃあ、Cで短絡評価は使わないってこと?
252:仕様書無しさん
07/05/16 20:50:09
>>251
C・C++は別格
253:仕様書無しさん
07/05/16 20:51:54
>>251
短絡的な発想だな
254:仕様書無しさん
07/05/16 20:57:30
>>253
だれがうまいこと言えとwww
255:仕様書無しさん
07/05/17 11:43:10
>>250
言語が変わったら、同じ書き方は出来ないと思うんだが。
256:仕様書無しさん
07/05/17 12:56:49
>>255
なにその柔軟すぎる発想
お前PGとかこの業界やめたほうがいいよ
それとも釣りですか?
257:仕様書無しさん
07/05/17 14:00:51
>>256
「同じ言語で、同じ書き方をして、違う動作をするような書き方」
であれば、しないのが当たり前。素人じゃあるまいし。
258:仕様書無しさん
07/05/17 14:17:15
>>257
日本語嫁よwwwwww
259:仕様書無しさん
07/05/17 14:53:11
おいおい
COBOLでかちゅーしゃ作れねーだろ
260:仕様書無しさん
07/05/17 15:32:20
.netコボルならできるんじゃね?
261:仕様書無しさん
07/05/17 15:42:57
COBOLでJavaのVM作ればOK。
262:仕様書無しさん
07/05/17 16:12:45
Valiantをブリリアントと読んでいた。
そんな時期もありました。
263:仕様書無しさん
07/05/17 17:02:51
━ a. 勇敢な.
ひょっとして: variant valiantly Valerian
264:仕様書無しさん
07/05/17 17:58:31
今年入社した会社のコード
if(《BOOL型変数》!= TRUE)
{
}else
{
処理;
}
もっと簡潔に書いてくれ・・・
265:仕様書無しさん
07/05/17 18:14:47
BOOLというのが実は独自定義の真偽値型で、
TRUE==0でそれ以外がFALSEだとか?
266:仕様書無しさん
07/05/17 18:15:54
>>264
既出のものかと思いきや応用編か……。
267:仕様書無しさん
07/05/17 18:48:13
>>265
それにしたってブロックからっぽにするんだったら
条件ひっくりかえしてelse削除でしょう。
268:仕様書無しさん
07/05/17 18:52:06
>>267
ご指摘の通りだけど。else部分は省略禁止という規約も実在するしw
269:仕様書無しさん
07/05/17 19:07:26
いや、条件に一致した場合の処理も後で書き加える可能性があるとか。
コメント残せよって話だけど。
270:仕様書無しさん
07/05/17 19:39:21
Dim bFlag As Boolean = False
If bHoge Then bFlag = True
If bMoge Then bFlag = True
If bNuge Then bFlag = True
If bHage Then bFlag = True
:
:
If bFlag = False Then CB.Checked = True
なんつーか、下っ手くそなコードだなあ…
271:仕様書無しさん
07/05/17 22:03:48
真偽定数と比較する奴ウザイ。
272:仕様書無しさん
07/05/17 22:30:17
おれ明示的に描くようにしてるわ
273:仕様書無しさん
07/05/17 22:50:57
真偽値と比較するのならなぜその結果をさらに真偽値と比較しないのか。
そしてその結果をさらに……
274:仕様書無しさん
07/05/18 00:13:13
>>270
こういう、似たような処理をひたすら羅列して、ウォーリーを探せみたいな
ソース書いてる人って、どんな気持ちで書いてるんだろう?
275:仕様書無しさん
07/05/18 00:14:06
あーめんどくせー
276:仕様書無しさん
07/05/18 01:57:47
>275
きっと本気でそう思ってるんだろうなぁ……
恐らく「コピペでガンガンコードが書けて俺様ってば超Cool!!」とは思ってない気がする
277:仕様書無しさん
07/05/18 07:36:40
コピペでコード書くのは全くCoolでない件
278:仕様書無しさん
07/05/18 08:12:42
>>277
おまけにバグまでコピッてるのを見ると殴り殺したくなる。
こういう時はgrepするとワラワラと湧いてくるんだよな。orz
279:仕様書無しさん
07/05/18 09:16:43
>>276
しかしどこぞの馬鹿に言わせると
馬鹿でも理解できるため良質なコードということになる。
良質なコードを生み出すことが超Coolでないわけなかろう。
280:仕様書無しさん
07/05/18 09:26:30
正しくは「馬鹿だけ」が最小コストで理解できるコードだろ
281:仕様書無しさん
07/05/18 09:31:22
>280
何か問題でも?
282:仕様書無しさん
07/05/18 09:41:40
>>281
一般人には理解できないコードなのだが。
283:仕様書無しさん
07/05/18 09:46:16
自分が一般人に含まれると勘違いしているのはイタさ倍増
284:仕様書無しさん
07/05/18 10:26:37
多分、板住民同士でレビューしたら自称一般人だらけだろうなw
自分の知識が普通とか一般だと思うのは非常に危険だぞ。
285:仕様書無しさん
07/05/18 11:19:51
>>274
ステップ単価だったりして。
ステップ単価の文化に浸った人はコピペ多いよなぁ。
286:仕様書無しさん
07/05/18 17:23:52
人月の狼
287:仕様書無しさん
07/05/18 17:25:39
ほら吹き狼
288:仕様書無しさん
07/05/18 19:41:19
>>270
こういうふうに書き換えるのは、上手普通下手で言えばどれですかね?
Dim bFlag As Boolean = False
If (bHoge Or bMoge Or bNuge Or bHage Or ...) Then
bFlag = True
End if
If Not bFlag Then CB.Checked = True
他の人のコード見て勉強する機会があまりないので。
270は、どれか1つのフラグがいらなくなったら1行削ればいいので、
案外上手なのかもしれんと思いました
289:仕様書無しさん
07/05/18 19:56:25
Dim bFlag As Boolean = False
If (False _
Or bHoge _
Or bMoge _
Or bNuge _
Or bHage _
Or ..._
) Then
bFlag = True
End if
290:288
07/05/18 20:11:38
>>289
ナルホド、これなら1行で消せますね。
他のコードで同じ書き方してました。
If 条件式でやるのはためらいますが。
291:仕様書無しさん
07/05/18 20:52:54
hogeとかmageをセットしてるコードのほうが気になる。
292:仕様書無しさん
07/05/18 23:47:38
自分はVB(でしょ?)知らないんだけど
bFlag = bHoge Or bMoge Or bNuge Or bHage Or ...
とは書けないの?
293:仕様書無しさん
07/05/19 00:04:03
そこまで分岐するならビット演算とかどうよ?
294:仕様書無しさん
07/05/19 01:06:41
VBScript環境やまして.netはよー知らんが、レガシVBとかVBAでは
s = "hogehoge" _
'& "piyopiyo" _
& "fugafuga"
は文法エラーということを忘れてる人はおらんか。
いや忘れていいなら忘れてしまいたい貴方♪だが。
>292
書けるお。
295:仕様書無しさん
07/05/19 02:05:39
>>288
cb.checked = cb.checked Or ( Not ( _
bHoge _
Or bHage _
Or bHuge _
:
) )
296:仕様書無しさん
07/05/19 02:28:24
C言語で。
typedef void (*func)(void);
・
・中略
・
func pFunc = (func)0x00010000;
pFunc();
辞めよう、とまでは思わないが、組み込みってこえぇ、と思った。
他には
void free(struct Data *pstData){
struct Memory *pstMemory;
if(pstData==NULL)return;
pstMemory = (struct Memory *)(((char *)pstData) - sizeof(struct Header));
pstMemory->stHeader.nUsed = 0;
}
とか
value = array[-2];
とか
自分が今まで覚えてきたことを色々否定された気分になった。
297:仕様書無しさん
07/05/19 02:49:14
>>296
俺も怖い。組み込みは鬼門と考えるようにする。
298:仕様書無しさん
07/05/19 02:56:53
>>296
スマン。
2つ目のやつの問題点を教えてくれ。
これよくあったよ・・・@携帯電話の網の中の人
299:仕様書無しさん
07/05/19 03:10:34
というか普通のfreeも大雑把に見ると>>296の二つ目みたいなもんだ。
300:仕様書無しさん
07/05/19 03:15:26
せめて
(uintptr_t)pstData - (unsigned)(&(((Memory*)0)->データ));
にできないかねぇ。
301:仕様書無しさん
07/05/19 03:20:18
>>298
プログラム全体で見ると整合性が取れてるんだけど、
free関数単体で見ると、引数pstDataからさらに前のアドレスってことは
一見アクセス出来る範囲外のアドレスを叩いてるように見える。
極端な話すると
int main(int argc, char *argv[])
{
char *str = argv[-1];
printf("%s\n",str);
return 0;
}
みたいなコトをしてるように見えるわけだ。
302:仕様書無しさん
07/05/19 03:29:37
>>300
うは・・・。
構造体のアライメントを運用で気ぃつけるとかはあったけど、
そういう発想は無かったな・・・。
さんきぅ。参考になります。
303:仕様書無しさん
07/05/19 08:47:17
>>296
value = array[-2];
これの動作は未定義なのでは?
304:仕様書無しさん
07/05/19 08:56:50
バグ、それも謎の挙動が多いと評判最悪のシステムのメンテを担当する事になった。
普通に順繰りに実行すればいい処理1〜3をわざわざ
for(i=1; i<=3; i++){
switch (i){
case 1 : 処理1
case 2 : 処理2
case 3 : 処理3
}
}
みたいな謎のロジックで実行していたりしてアタマ痛い…他にも
char *hoge(char *s, const char *ct, int n){
if n==0{
strcpy(s, ct);
} else {
strcat(s, ct);
}
retuen s;
}
を遥かに大規模にしたような、標準関数を1つに纏めて、引数で実行する関数を
選択するようなのもあって、作った本人はかなり自慢げに
「これで標準関数を覚える必要が無くなり、ソースの可読性も増した」と
94年当時の日付入りでコメントを残しているんだが、
その問題の関数の前後で情け容赦なく素でstrcpyとか使われていて、
もう何が何だが・・・
リファインして良いか責任者に聞いたら、結構重要な部分だから、
汚いソースでも動いている以上手直し不可だって。
305:仕様書無しさん
07/05/19 09:11:22
>>304
上はよく見る。
下もよく見・・・るわけねえええええ
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5205日前に更新/95 KB
担当:undef