[表示 : 全て 最新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/

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やってないから忘れてた。

229 名前:仕様書無しさん [2007/05/15(火) 12:07:08 ]
>>203
あれ? 確かVB4か5までは a = variant, b = integerになるが、
VB5か6からは両方ともintegerになるような解釈になってなかったっけ

ま、毎回1つ1つきっちり書いている俺には関係ないが

230 名前:仕様書無しさん mailto:sage [2007/05/15(火) 12:17:15 ]
ならん

231 名前:仕様書無しさん [2007/05/15(火) 12:23:57 ]
今確認したけど
dim a,b as integer
ってVB6SP6でやると

a=Empty
b=0
になってたからaの型はVariantになってるね

232 名前:仕様書無しさん [2007/05/15(火) 12:27:45 ]
バージョンで仕様が変わったら、やってられないだろ〜
.netはいいチャンスだと思ったんじゃない?

233 名前:仕様書無しさん mailto:sage [2007/05/15(火) 13:35:50 ]
>206
その解釈は微妙。(VB(A)でもCでも)
どちらも、0が偽でそれ以外が真。
ただし、比較式などが返す値が、Cでは1、VB系は-1てこと。

>206自身はわかってるならそれはいいんだけど、
わかってない人が>206みたいな記述を読むと勘違いしたりする('A`)

234 名前:229 [2007/05/15(火) 16:09:20 ]
>>231
ああ、.NETからの間違いだったかも

すまそ、ちょっとunicode変換されてくるは




235 名前:仕様書無しさん mailto:sage [2007/05/15(火) 22:23:41 ]
>>228
そんなの書けたか?

236 名前:仕様書無しさん mailto:sage [2007/05/15(火) 22:37:00 ]
>>235
今ちょっと試してみたけど、Excel VBA で Date 型だと書けてしまうな。気持ち悪い。
整数が日付、小数点以下が時刻ってことか…
俺はDateAddの方がどんな変数を操作してるかわかりやすいので安心できる。


237 名前:仕様書無しさん mailto:sage [2007/05/16(水) 00:22:54 ]
真値を数値として扱うと-1になることを利用した演算式が
昔のBASICにゃたんまりあってのう……
a = a + (h > 3) * 1
とか

238 名前:仕様書無しさん mailto:sage [2007/05/16(水) 00:44:08 ]
Oracle とかもDate型は数値扱いだろ
よくあるよくある

239 名前:仕様書無しさん mailto:sage [2007/05/16(水) 07:10:34 ]
>>237
むしろ条件式を使うことがコード量を節約する手法の一つだったのさ。

240 名前:仕様書無しさん mailto:sage [2007/05/16(水) 09:46:11 ]
>>237
の動作ってどうなるんだ?
こんな書き方しらねぇ・・・・

(h > 3)
この部分の解釈

241 名前:仕様書無しさん mailto:sage [2007/05/16(水) 10:15:20 ]
>>240
真なら -1 で偽なら 0 になる。

つまり C で書きなおせば
if (h > 3) a += 1;
ってこと。

この例だとコード量節約にもならないような。

242 名前:仕様書無しさん mailto:sage [2007/05/16(水) 10:35:26 ]
BASICならIF文使うと遅いからじゃね?

243 名前:仕様書無しさん mailto:sage [2007/05/16(水) 10:41:02 ]
サンクス
なるほど そういう解釈になるのか!
しかし・・・可読性が落ちるな(;´Д`)

昔は遅かったからその辺のテクなんだろうなぁ・・・


244 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:02:18 ]
最近のCPUで当時のBASICコードが動かせるとすると
ループで時間稼いだりしてた部分が瞬時に終わったり
笑える動作になるんだろうな



245 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:03:41 ]
>>238 は何を言ってるんだ…?

246 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:06:52 ]
>>244
ウチは実際にそれで問題が出てたwwww

247 名前:仕様書無しさん mailto:sage [2007/05/16(水) 12:47:25 ]
>>244
昔でもあったぞ。
ゲームでPC-9801VM(V30)でスピード最適化したシューティングゲームを
PC-9801RA(i386)で動作させてみたらレーシングゲームになった、とか


248 名前:仕様書無しさん mailto:sage [2007/05/16(水) 13:30:20 ]
MSXturboRの通常モード(8ビットモード)で普通に出来たゲームが
高速モード(16ビットモード)では早すぎてゲームにならなかったり。

249 名前:仕様書無しさん mailto:sage [2007/05/16(水) 19:37:21 ]
>>237
俺は Pascal(Delphi) で似たようなコードをよく書く。

Salary := BaseSalary + 1500 * OverHours * Ord(chkOvertimePaid.Checked);

Pascal では Ord(False) = 0、Ord(True) = 1 と言語で定義されている。
でも確かに 8 ビット時代の悪しき習慣のような感じもするな。

250 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:39:53 ]
俺は同じ書き方やって言語で動作が違うような書き方はしないように心がけてる


251 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:44:09 ]
じゃあ、Cで短絡評価は使わないってこと?

252 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:50:09 ]
>>251
C・C++は別格

253 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:51:54 ]
>>251
短絡的な発想だな

254 名前:仕様書無しさん mailto:sage [2007/05/16(水) 20:57:30 ]
>>253
だれがうまいこと言えとwww




255 名前:仕様書無しさん mailto:sage [2007/05/17(木) 11:43:10 ]
>>250
言語が変わったら、同じ書き方は出来ないと思うんだが。

256 名前:仕様書無しさん mailto:sage [2007/05/17(木) 12:56:49 ]
>>255
なにその柔軟すぎる発想
お前PGとかこの業界やめたほうがいいよ
それとも釣りですか?

257 名前:仕様書無しさん mailto:sage [2007/05/17(木) 14:00:51 ]
>>256
「同じ言語で、同じ書き方をして、違う動作をするような書き方」
であれば、しないのが当たり前。素人じゃあるまいし。

258 名前:仕様書無しさん [2007/05/17(木) 14:17:15 ]
>>257
日本語嫁よwwwwww

259 名前:仕様書無しさん mailto:sage [2007/05/17(木) 14:53:11 ]
おいおい
COBOLでかちゅーしゃ作れねーだろ

260 名前:仕様書無しさん mailto:sage [2007/05/17(木) 15:32:20 ]
.netコボルならできるんじゃね?

261 名前:仕様書無しさん [2007/05/17(木) 15:42:57 ]
COBOLでJavaのVM作ればOK。

262 名前:仕様書無しさん [2007/05/17(木) 16:12:45 ]
Valiantをブリリアントと読んでいた。
そんな時期もありました。

263 名前:仕様書無しさん mailto:sage [2007/05/17(木) 17:02:51 ]
━━ a. 勇敢な.
ひょっとして: variant valiantly Valerian

264 名前:仕様書無しさん mailto:sage [2007/05/17(木) 17:58:31 ]
今年入社した会社のコード

if(《BOOL型変数》!= TRUE)
{
}else
{
処理;
}

もっと簡潔に書いてくれ・・・



265 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:14:47 ]
BOOLというのが実は独自定義の真偽値型で、
TRUE==0でそれ以外がFALSEだとか?

266 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:15:54 ]
>>264
既出のものかと思いきや応用編か……。

267 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:48:13 ]
>>265
それにしたってブロックからっぽにするんだったら
条件ひっくりかえしてelse削除でしょう。

268 名前:仕様書無しさん mailto:sage [2007/05/17(木) 18:52:06 ]
>>267
ご指摘の通りだけど。else部分は省略禁止という規約も実在するしw

269 名前:仕様書無しさん mailto:sage [2007/05/17(木) 19:07:26 ]
いや、条件に一致した場合の処理も後で書き加える可能性があるとか。
コメント残せよって話だけど。

270 名前:仕様書無しさん mailto:sage [2007/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 名前:仕様書無しさん mailto:sage [2007/05/17(木) 22:03:48 ]
真偽定数と比較する奴ウザイ。

272 名前:仕様書無しさん mailto:sage [2007/05/17(木) 22:30:17 ]
おれ明示的に描くようにしてるわ


273 名前:仕様書無しさん mailto:sage [2007/05/17(木) 22:50:57 ]
真偽値と比較するのならなぜその結果をさらに真偽値と比較しないのか。
そしてその結果をさらに……

274 名前:仕様書無しさん mailto:sage [2007/05/18(金) 00:13:13 ]
>>270
こういう、似たような処理をひたすら羅列して、ウォーリーを探せみたいな
ソース書いてる人って、どんな気持ちで書いてるんだろう?




275 名前:仕様書無しさん mailto:sage [2007/05/18(金) 00:14:06 ]
あーめんどくせー

276 名前:仕様書無しさん mailto:sage [2007/05/18(金) 01:57:47 ]
>275
きっと本気でそう思ってるんだろうなぁ……
恐らく「コピペでガンガンコードが書けて俺様ってば超Cool!!」とは思ってない気がする






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

前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