2013年1月5日土曜日

2段以上のifを書いたら負け ( ウンコード )

ウンコ確定のコードを勝手にレビューして、勝ったつもりになる企画です。

しかし、ウンコはPHPが多いかと思ったけど、Javaも多いんだなー。
これで、「オレJavaプログラマだから単価高いぜー」とか粋がってる奴が多いんだよな。※主に2chだが

http://unkode-mania.net/view/50a1018a61fd523468000000
これは、完全に「真偽値を返す」が目的になってしまったケース。
小生の数少ないサンプリングでは、16bitの時代からやってる人は、checkって付けたがる。
そして、コメントも「○○をチェックする」とか書いちゃうんですよね。
「真偽値を返す」は手段であって、目的ではありません。

http://unkode-mania.net/view/503cf8bd81ce286163000001
かなりベテランでもこういう多段ifを書く人はいますね。
なんか、「大雑把なエラーケースは、大雑把なifで最初に括りたい」という俺ルールがあるらしい。
それ自体は判らんでもないが。

ただし、これをうまく折りたたむのはかなりコツが要ります。
正直、免許皆伝レベルでしょう。
それが出来る人なら、大抵の要件で、大概美しく書けることでしょう。

小生、「2段以上のifを書いたら負け」っていう独りルールを課して仕事してます。
え、だって、同じ条件式が何度も出てくるって、恥ずかしいでしょう?

出稼ぎ先の皆さんにも課してしまいたい。正直。

http://unkode-mania.net/view/5035b6194525595031000024
これも目的と手段が逆転してるタイプ。
「3日だから」という「手段」しか頭にない。
もしくはネーミングセンスが壊滅的な人。
多分UtilとかMiscとかvalueとかやるに違いない。
「「3日」が何なのか」を変数名にするべき。

http://unkode-mania.net/view/5033834e57c8e41736000004
これはどっちかというと、delete()が失敗した時に、例外を吐くべき。
Javaのお作法なら、そっちのほうが正当だと思うのだが。

http://unkode-mania.net/view/50326320383b806b09000000
怖!

http://unkode-mania.net/view/5060461ea753b5a970000000
一個の関数に処理を全部ねじ込んで、mode=1 とかやりたがる人は結構居ますね。
「処理の違いが、数行だけなんです」というなら、判る。それでも辞めて欲しいけど。

明らかに「複数系統の処理が同居」しちゃってるのは、「カプセル化」が判ってない。
「カプセル化」ってのは、オブジェクト指向云々の話ではありません。処理の粒度の話ね。
えてして、こういうコーディングする人は、非常に改造しにくい実装をやらかすので
仕様変更の毎にゴネます。