コーディングをしていると、こんなシチュエーションありますよね。
- あの人の書いたコード、なんかちょっとイマイチ…
- でも、直接そういうと、なんか失礼…
そんなときは、「アンチパターン」の言葉を使って、さりげなく相手に伝えましょう。
車輪の再発明
既にあるものを使わず、一から作ること
車輪-人類の歴史で古代から存在する、創意工夫の原型です。これを今さらになって「発明した」と主張することは、全くもってナンセンスです。
世の中には、便利なライブラリ、先人のノウハウ、たくさんあります。それらを使わず、コードやプログラミング技法を再び一から作ることは、時間と労力の浪費にしかなりません。
過去を振り返らず、独自に考えたアーキテクチャ。それはたいてい思慮に欠けた陳腐なものとなり、利用者を困惑させます。
世の中の技術を知り、できるだけそれを活用し尽くしましょう。
銀の弾丸/黄金のハンマー
お気に入りの方法が、問題の大半を解決できると思いこむこと
「銀の弾丸」。狼男や悪魔を一発で撃退できる最強の武器です。
「黄金のハンマー」。どんなものでも打ち崩す万能の道具です。
過去のプロジェクトで適用し大成功した技術。それはあたかも、あらゆる問題を解決できる「銀の弾丸」や「黄金のハンマー」であると思い込みがちです。
しかしそのような、どんな問題でも解決できる万能の技術は存在しません。適用できる技術はそのときの状況により変わります。
そして技術の流れは速いです。過去の栄光も時代遅れになってしまうことがよくあります。
よく起こりがちなのがWebアーキテクチャ。ServerSideRendering→Ajax→jQuery→SPA…。技術は目まぐるしく変化します。
全ての問題に通用する万能な解決策などないと考え、適切な技術を学び続けて適用しましょう。
カーゴ・カルト・プログラミング
パターンや方法論を、その理由を理解せずに用いること
カーゴ・カルト:元々は第二次世界大戦後の南太平洋で見られた先住民の宗教に由来。これらの人々は、戦時中素晴らしい積荷をもたらしてくれた神のような飛行機を呼び出そうと、一心不乱に精巧な飛行機の模型や滑走路を作り上げた。
デザインパターンやコーディングスタイルを、その背景を理解せぬまま、過剰に適用してしまうことは危険です。それがなにを解決するのか、理解していなければ、まったくその効果が得られない結果となります。
特に「オブジェクト指向」に関する技術は、一時期は我も我もと、盲目的に適用された時期があり、混乱を招きました。
その技術が生み出された理由や、設計の原理原則を理解して使いましょう。
テスター駆動開発
新しい要求がバグ報告書で記述されるようなプロジェクト
「テスト駆動開発」や「ビヘイビア駆動開発」などと比較した皮肉的な言い方です。
テストは、本来は要求が満たされているかを確認する工程です。
しかしそれまでの設計が不十分であると、テスト工程で始めて仕様不備が発覚し、仕様が追加されるといった事態になります。これが頻発するとテスト工程はひっ迫し、品質も低下します。
網羅性を持った設計を行ってから、テストに臨みましょう。
まとめ
アンチパターンを知ることは、コードの品質向上にも役立ちます。
ぜひ身につけましょう。
コメント