コーディングをしていると、こんなシチュエーションありますよね。
- あの人の書いたコード、なんかちょっとイマイチ…
- でも、直接そういうと、なんか失礼…
そんなときは、「アンチパターン」の言葉を使って、さりげなく相手に伝えましょう。
スパゲティコード
このコード、なんかこう、ごちゃごちゃしてるよね…
こんがらがって、どこからどう見たらいいか分からない、意味不明コード。
「なに考えて書いたコードなの直そうよ!」と思いますよね。
このコード、とってもスパゲティコードね!
コードが絡まっているさまを、おいしいスパゲティに例えました。おいしいごはんのイメージで雰囲気もやわらぎますね。
コードはシンプルに保つのが一番です。
マジックナンバー
このコード、なんか、意味不明な数字がいっぱいあるけど…
flag = 3 とか if(mode==5) とか、なんの意味をもってるか、ぜんぜん分からない数字。
「コードを見るのはあんた一人だけじゃない! 」とつぶやきたくなりますね。
このコード、マジックナンバーがいっぱいだね!
摩訶不思議な様子をマジックに例えました。ときには本人でさえ由来が分からなくなるマジックです。
ちゃんとよい名前を付けて、定数として定義しましょう。
神クラス
このコード、メソッドとかいっぱいありすぎるんだけど…
なんでもかんでも詰め込んで、すべてをそのクラスを介して処理している。ありますよね。
「いちいちそのクラス直さないといけないじゃない!」と言いたくなっちゃいますね。
このクラス、まるで神クラスだね!
あまり神様に頼りすぎるのもよくないよ!
「すべてを知っている」唯一のクラスを、荘厳な神の姿で表現しました。でもプログラマーは神にすがってばかりじゃいけません。
クラスは、適切に責任分割して、メンテナンス性を保ちましょう。
魔法のボタン
ボタンイベントに、ロジックとかデータアクセスとか全部入ってる…
画面開発するとき、ボタン押したときのOnClickイベントに実施します。やる処理をそこに全部実装しちゃう。あるあるですよね。
「UIは今後どんどん変わるんだからロジックと分離しようよ!」と叫びそうになりますね。
あなたのボタンは魔法のボタンみたいね!
でも魔法の使いすぎには注意しようね!
魔法のようにすべてを片付けるボタン。でもボタンなどのユーザーインタフェースはよく変わるので、そのときに魔法が解けてしまいます。
依存性が疎になるように抽象化して、メンテナンスしやすいモジュール構成にしましょう。
まとめ
これらの用法が適切かは置いておいて、アンチパターンを知ることは、コードの品質向上にも役立ちます。
ぜひ身につけましょう。
コメント