- 167 名前:デフォルトの名無しさん mailto:sage [2016/05/15(日) 20:45:26.55 ID:u/cc/woI.net]
- >>158
> 動的言語で型を一生懸命「事前にチェックする」のは良くないという持論を持っている。 流儀があるのなら好きなようにすればいいし、コーディングルールに引っかからなければいいとは思うが、 それは一般的にはトリッキーだと言われると思うぞ。 null と '' を弾きたいのなら、普通はチェック部分に纏めて以下にする。 do{ n = prompt('自然数'); } while(!n || n <= 0) 知ってないといけないことは、null は偽(常識), '' は偽(JavaScript特有)だ。 前者は他言語でもそうなので、後者だけ知っていれば済む。 それに対して、君のコードは 1. null | 0 の結果がどうなるか(JavaScript特有) 2. '' | 0 の結果がどうなるか(JavaScript特有) を知っていなければならない。自動型変換後のビット演算だ。かなり仕様の隅っこ。 そしてそれは制御論理とは本質的に関係ない。 つまり「JavaScript知ってる俺カッケー」でしかないんだよ。 しかも、論理構造に無駄があるだろ。 俺のコードは、弾く部分で弾いているだけ。 弾かれる対象を確認するためには、whileの1行を見れば済む。 君のコードは、不正入力は後で弾かれる入力に変換して、結果的に後から弾く構造になっている。 だから弾かれる対象を確認するためには、2行見ないといけない。 記述が分散している分、バグも含みやすい。 だから無駄に難しいコードになっているんだよ。 それで速度等のメリットがあればいいんだけど、今回については無いと思う。したがって、糞コード扱いされる。 君は無駄に3倍難しいコードを書いている。 それは、俺のような単純明快なコードを書くように勤めれば、同じ労力で3倍の規模のコードを扱えることを意味する。 君のやり方だと能力の2/3をみすみす捨てているようなものなんだよ。勿体無いだろ?
|

|