[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 09/11 23:08 / Filesize : 95 KB / Number-of Response : 441
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

この会社辞めようと思ったソースコード#16



1 名前:仕様書無しさん mailto:sage [2007/04/02(月) 12:45:06 ]
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。

前スレ
この会社辞めようと思ったソースコード#15
pc11.2ch.net/test/read.cgi/prog/1167117526/

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
上の連中それをごっちゃにして噛み合わない議論してねぇ?

142 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:08:37 ]
>>134
むしろ、バグの温床になるのは
if (a==0)
とかの方なんだがな・・・
typo で
if (a=0)
になってしまうから。


143 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:12:33 ]
はいはいif(0==a)

144 名前:仕様書無しさん [2007/05/13(日) 19:28:00 ]
つか
if( a == b )を間違えないように定数比較したいなら
if( NULL == a)って書けばいいだろ。定数は必ず初項として記述すればいいだろ
仮にif( NULL = a)ってやればコンパイルエラー出る。

つうか2000年ぐらいまでのコーディング規約でいいものだけ取り入れて
かけよ。一般人ができる最低限度のコーディングの礼節だと思うがな。



145 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:34:08 ]
>>144 読んで
ふと思ったんだが、
fj って今でもあるの?


146 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:35:09 ]
確かにその書き方なら間違いが防げるけど、何故か普及してないな。



147 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:36:49 ]
if( NULL == a)
と書くのはお断りだ

148 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:38:54 ]
>>146
昔から議論はあるけど、警告が出るからそんなヘンな書き方をすることは無いってことで落ち着いてる。

149 名前:仕様書無しさん mailto:sage [2007/05/13(日) 19:40:09 ]
>>144
きもいくて古い書き方は捨てろ。恥だ 


150 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:18:41 ]
if(a)

が一番美しい。

151 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:25:30 ]
>>150
>>121

152 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:31:36 ]
>151
>127

153 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:36:17 ]
プログラムってのはデータと命令しかないわけよ。
そのデータが真偽値であるとか整数であるとかあるいは文字列であるとかの意味付けは
言語処理系上でのみ行われている文脈上のものでしかないの。
文法的に許されているなら>>150を支持する。実際、美しい。
キモイとか許せないと思うなら
if(a)
という記述を許さない言語を使えば良いでしょ。

154 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:37:43 ]
無限ループって怖くね?w

155 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:38:51 ]
最初の書き込みで、aに入ってるのがbool値(0かそれ以外)か、ただの数値(たとえば0〜100とか)とか何も
書いてないのに、いきなり

「if (a) と書く」とか言うのは変だって言ってるんだろ。

156 名前:仕様書無しさん [2007/05/13(日) 20:45:37 ]
個人的に
if(a)
で書ける状況でもこういう書き方はしないなぁ。
たまたま文法的に成立するってだけだから。
古い書き方だと思う。
今はベタに、ちゃんと==使わないとダメだと思う。



157 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:45:46 ]
ねえ、今は False =0, True = 1 であたりまえなの?
昔はそれぞれ 0, 0xff って実装もありだったと思うんで、
True のつもりで a == 1 なんて怖くて書けない。
せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?

158 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:46:32 ]
>>155
>「if (a) と書く」とか言うのは変だって言ってるんだろ。 

別に。

また、プログラムの読み手にとっても、
aに入ってるのがbool値か、ただの数値か
なんて考える必要はない。

a の評価値が 0 かそれ以外かさえ分かればよい。
こんな単純な話はない。


159 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:49:42 ]
>>158
でも, bool値以外のデータだったら、

if (a == 1) を

if (a) にしたら、動作が違ってくるだろ?



160 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:50:14 ]
a == 1 の比較だろ

a = 0 or 1 ならともかく
a = 2 のときは?
a = 100 のときは?

161 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:50:16 ]
>>158
その場合、if(a) は発端>>115  の if (a==1) と同一ではない。
発端の if (a==1) はあなたの「単純な話」にあてはまらない。
元の話わかってる?

162 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:52:26 ]
aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、

if (a == 1) を if(a) と書き直したらダメだろ。

163 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:53:39 ]
凡庸なプログラマってこうした思い込みしてコーディングしてんのかな…

164 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:54:14 ]
なんかトンデモねぇ馬鹿が一匹迷い込んでないか
俺コイツと一緒に仕事すんのはマジで嫌
想定外の修正されてぶち壊されそう

165 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:54:56 ]
初心者の俺にはよく分からんのだが
aの型について触れずに論議が進められるのは何故なの?

166 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:55:46 ]
>165
何度か指摘してるんだが何故かまともに取り合ってくれないんだ(´・ω・`)



167 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:56:02 ]
aには、0か1が入ってるとか、
1,2,3のどれかが入ってるとか、なんら前提が示されてないのに、

if(a)をif (a == 1) と書き直したらダメだろ。

168 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:57:42 ]
>>167
>if(a)をif (a == 1) と書き直したらダメだろ。

それは誰もしてない。

169 名前:仕様書無しさん mailto:sage [2007/05/13(日) 20:59:43 ]
>>165
少なくともCにおいては、if()の中身は式であって、その型は無関係だから。

170 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:01:13 ]
>165
>166

>139


171 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:02:10 ]
>>157
>せめて a == True とするのが、他人が読む時も精神衛生的にいいんジャマイカ?

bool値のある言語でそれをやったら、ちょっとヘタクソっぽい。

Cだと、
#define TRUE 0
#define FALSE -1
とか、ありえるので、わからなくもない。



172 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:04:05 ]
キモイとか言える次元かよw
感覚上身についているかどうかのレベルの問題じゃね?
(センスというにはあまりに次元が低すぎる)
#include <stdio.h>
char* a;

int main(){
if (!a){
printf("a");
}
}
とかどうすんだよ。aが初期化されて無い判定は。
まさかbool型とか、コンパイラがうまくやってくれるからとか言っちゃって0で、==するのか?www
ショッペーーー


173 名前:仕様書無しさん [2007/05/13(日) 21:05:31 ]
今日はとくに変だな
このスレw

174 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:05:35 ]
この人なんで火病ってんの?

175 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:06:28 ]
でさー 115 がいつ C って決まったの?

176 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:08:32 ]
>>175
暗黙の前提。ああいう構文の言語は全部がCから派生しているからね。



177 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:09:17 ]
まあ細かいことはプログラム書く人の自由ということで、115の場合はひとつの例として、
if aが1のとき{何もしない} else {何かの処理}がキモチワルイコードと言っているだけだ。


178 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:14:59 ]
じゃあここは間とって三項演算子で書こうぜ

179 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:15:01 ]
>>115 の主張は
if (a == 1) { 
 /* 〜ということやりたいけど後で考える */ 
} else { 
で、「/* 〜ということやりたいけど後で考える */ を書くのが嫌だ」って話であって、
今の話題は >>119 が言う所の、
「if 文の括弧の中では、明示的に論理式を書く必要がない」か否か
って話だろ?


180 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:16:07 ]
>暗黙の前提。

こういう自分勝手な解釈をするヤツが一番手におえない

181 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:19:37 ]
>>180

>>115 ≠ >>176 というのも、暗黙の前提だな。


182 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:23:04 ]
それも勝手な解釈だな
その場合は前提を提示していないという意味で自分勝手な以下同文

183 名前:仕様書無しさん mailto:sage [2007/05/13(日) 21:23:42 ]
>>179
俺が
> /* 〜ということやりたいけど後で考える */
を追加した >>116 だけど、>>115 はそんなこと主張してないぞ。

>>115 の if (a == 1) {} else { ... } の解釈はいろいろありえるが、俺は
「if (a == 1) の時何もやらない」だと解釈した。
俺は別なつもりで同じようなコードを書いてしまうとコメントしたつもりだったんだが、

俺が余計なこと書いて議論を混乱させたのか? すまんかった。

184 名前:119 mailto:sage [2007/05/13(日) 21:28:36 ]
正直すまんかった。
俺が勝手に>>115のaをブール値を表現する変数だと勘違いして>>119を書いた。
でも、よく考えたら>>115は明示的にa == 1って書いてるんでブール値ではないわな。
ブール値なら少なくともa == TRUEとか書かなきゃいかんはずだし。

まぁ、俺が言うのもなんだが>>140->>141でFAで

185 名前:けーつえーき mailto:sage [2007/05/13(日) 21:58:00 ]
>>184
その辺って熟練のPGでも考え方に違いが出てくるので
PLの考えに合わせるのが無難と思う。

そういえば、MSの環境でBOOLって型があって
#define TRUE (1)
#define FALSE (0)
と定義されてるんだけど
APIで返す値に1以外の0じゃない値が返るものがあったりするねw

186 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:10:58 ]
>>185
Windows APIのBOOL型の戻り値は、だいたい「成功すると0以外の値を返す」と
ドキュメントに記されているわけで、特定の定数TRUEを返すとは書かれていないんで

if (HogeHoge() == TRUE)

は間違い。普通はこういう書き方しないだろうけど。

ところでその#defineの括弧は不要なんじゃ...



187 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:18:46 ]
どころか、GetMessageみたいな3値を返すBOOLもある

188 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:21:39 ]
> ところでその#defineの括弧は不要なんじゃ...
まあ括弧でくくるクセをつけてあるのは良いことだと思う。

189 名前:仕様書無しさん mailto:sage [2007/05/13(日) 22:26:24 ]
おう。そういう例があるから だいたい とさりげなく断っておいた。
俺はそれに嵌ったクチだし。
(ウィンドウの生成に失敗しているのにGetMessageして-1が返って無限ループorz)

190 名前:仕様書無しさん mailto:sage [2007/05/13(日) 23:17:00 ]
>>186
APIリファレンスにも普通に-1を返すと記述されてたりするw

>>189
他にも罠wがいろいろあるのがMS仕様という印象

191 名前:仕様書無しさん [2007/05/14(月) 05:41:07 ]
スレタイが「この会社辞めようと思ったソースコード」なのになんで素人が混じってんだ?

192 名前:仕様書無しさん [2007/05/14(月) 08:03:15 ]
>>191
プロはこんな板見てないからじゃないか?

193 名前:仕様書無しさん mailto:sage [2007/05/14(月) 08:26:50 ]
>>191
素人とプロの違いは技量の違いではない。
「それが生活基盤であるか否か」だけである。
だからいくら素人に見えても実態はプロである事は多い。

194 名前:仕様書無しさん [2007/05/14(月) 08:58:01 ]
>>193
てことは>>191もプロになるんだろうな。

195 名前:仕様書無しさん mailto:sage [2007/05/14(月) 11:30:47 ]
とりあえず最悪の事態を考えてaはValiant型を想定しておくか

196 名前:仕様書無しさん mailto:sage [2007/05/14(月) 11:44:27 ]
>>195
ちょっwwwww
SUGEEEEEEEEE

そんな先のことまで想定してコーディングするとはwww
俺絶対入社するわ
全部Variantで書いとくんで保守たのんますwww



197 名前:仕様書無しさん [2007/05/14(月) 12:29:41 ]
なんかスレが延びているとおもったら、またよくわからん話題で盛り上がってるのか


えーっと



ぬるぽ

198 名前:仕様書無しさん mailto:sage [2007/05/14(月) 12:35:31 ]
がっ

199 名前:仕様書無しさん mailto:sage [2007/05/14(月) 16:51:48 ]
// ここからそこまで何をしているのか不明




そこって何処よ…('A`)

200 名前:仕様書無しさん mailto:sage [2007/05/14(月) 17:52:51 ]
' SOKOってラベルふってあんだろ

201 名前:仕様書無しさん mailto:sage [2007/05/14(月) 17:56:16 ]
底でしょ

202 名前:仕様書無しさん mailto:sage [2007/05/14(月) 17:58:54 ]
プロシージャ内と予測してみる

203 名前:仕様書無しさん [2007/05/14(月) 19:31:37 ]
ここってCの人が多いみたいね。
じゃあ、vb系を代表して:
Dim a, b As Integer
Cとは違います。多分正しくありませんよ〜

204 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:34:04 ]
>>203
普通にそう書いてる奴多いな
俺はメンテの時に困るから書いてないけど

205 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:37:00 ]
>>203 aはIntegerと見せかけて、バリバリのバリアントだな。
そういう紛らわしい書き方ができてしまうVBの言語仕様はどうみても糞だな。

206 名前:仕様書無しさん [2007/05/14(月) 19:37:30 ]
上の方でtrue=1, false=0とかあってけど、VBAではTrue=-1ね
多分VBも



207 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:44:45 ]
>>203
そーいや専門学校で教師がそのソース書いてたな。


208 名前:仕様書無しさん [2007/05/14(月) 19:45:10 ]
やめて〜(実話)
For i=1 To 10000
Cells(i,1) = "なんたらかんたら"
Next
ExcelVBA だが、行は何行あるか分からないらしい。動けばいいのかな?
上級SEさんのコードでした。

209 名前:仕様書無しさん mailto:sage [2007/05/14(月) 19:51:16 ]
>>205
更に、.NET 以降はあれで「どっちも Integer」という軽い罠。

>>208
まあSヨなら普通。

210 名前:仕様書無しさん [2007/05/14(月) 19:52:34 ]
>>209
そうなの?違うんじゃない?

211 名前:仕様書無しさん [2007/05/14(月) 20:01:01 ]
ソースじゃないけど聞いていい?
PL/SQLとTransact-SQLって同義なの?
前者はOracleで後者はSQLServerに使うものだと思っていたんだけど。
今日、面談で言われたよ〜

212 名前:仕様書無しさん mailto:sage [2007/05/14(月) 20:01:03 ]
>>209
セル1つ1つに値を入れる奴はヘタレ。

213 名前:仕様書無しさん mailto:sage [2007/05/14(月) 20:33:28 ]
>>210
…あのさ、君が前段と後段のどっちに疑問を呈しているのか解るのって君だけなんだが。
(7:3 で前段と踏んだ)

>>211
ここが質問スレじゃないことくらい理解してほしいところなんだが。
>PL/SQLとTransact-SQLって同義なの?
「ストアドプロシージャの記述に使用できる」という一点のみが共通項。

214 名前:仕様書無しさん [2007/05/14(月) 20:39:13 ]
>>213
>>210 どす。
前段どす。
Dim a, b As Integer
って.netでもaはVariantじゃないの?

215 名前:仕様書無しさん mailto:sage [2007/05/14(月) 20:41:35 ]
「VB.NET 変数宣言」でぐぐれかす

216 名前:仕様書無しさん [2007/05/14(月) 21:03:36 ]
ホントだ。知らんかった。



217 名前:仕様書無しさん mailto:sage [2007/05/14(月) 21:21:01 ]
Dimってさ、もともとDimensionの略で、配列の次元を宣言するための
ものだったのにどーしてVBは一般の変数宣言に使うようになっちゃった
んだろう。


218 名前:仕様書無しさん mailto:sage [2007/05/14(月) 21:30:23 ]
RubyとかLispとか動的型付けの言語でもコードが書かれてるんだから、
Variantでもいいじゃないか。

219 名前:仕様書無しさん mailto:sage [2007/05/14(月) 21:31:21 ]
>>218
底辺乙

220 名前:仕様書無しさん [2007/05/14(月) 21:55:27 ]
そもそもoption explicitにしない奴もいるわな。
いいんじゃない?最近のPCは性能がいいから。

221 名前:仕様書無しさん mailto:sage [2007/05/14(月) 22:00:50 ]
>195
Variant

222 名前:仕様書無しさん mailto:sage [2007/05/14(月) 23:14:36 ]
>220
ハードウェアの進化には楽天的であれ
ソフトウェアの進化には悲観的であれ
エンジニアの技術力の進化には絶望的であれ

# 上の2つは201の鉄則より

223 名前:仕様書無しさん mailto:sage [2007/05/14(月) 23:59:36 ]
pc11.2ch.net/test/read.cgi/prog/1129522233/711


224 名前:仕様書無しさん [2007/05/15(火) 10:31:23 ]
昨日を
today-1
と書くか
dateadd("d",-1,today)
と書くか

225 名前:仕様書無しさん mailto:sage [2007/05/15(火) 10:56:39 ]
普通下だと思ってた俺はどうなのよ?

226 名前:仕様書無しさん [2007/05/15(火) 10:59:04 ]
反省しろ



227 名前:仕様書無しさん mailto:sage [2007/05/15(火) 11:36:02 ]
ボリューム(D:)

      ↑
     このへんがやる気ナイ・・

228 名前:仕様書無しさん [2007/05/15(火) 11:43:17 ]
>>225
すまん。Date-1だった。最近、VBやってないから忘れてた。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<95KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef