【YAGNI原則】必要になると思っているなら、それはいらない

yagni-principle
YAGNI原則

You Aren’t Going to Need It

それはいずれ必要にならない

初心者プログラマーにはピンとこない。意識高い系の中堅プログラマーに刺さる原則です。

目次

どんなときに使うの?

やりすぎ拡張性

イケイケくん

このクラス、モジュール構成見直してインタフェース化してアルゴリズム動的生成で依存性注入できるようコード書き直して、拡張性が爆上がりっすよウェーーイ!

リーダーさん

それ、いまいらないんだけど…

「拡張性」、あとで改造しやすくすること。

いちど作ったプログラムは、長い間使われます。あとでいろいろ改造するかもしれません、改造しやすさ(=拡張性)は、とても大事な要素です。

「いずれ直すんだったら、それを見込んで、あらかじめ直しやすいプログラムにすればいいじゃん?」と思うかもしれません。

YAGNI原則は、拡張性の作りこみを否定します。なぜでしょう?

いずれ必要にならない、とは?

この原則をもう少し詳しくいうと、

YAGNI原則
  • 実際に必要なときに、実装すること
  • 必要になると予測したときは、決して実装しないこと
  • 将来の案件/アプリケーションの設計に、最終的にプラスになることはめったにない

いまの時点で「将来はこうなるだろうな」と予測したところで、本当にそうなるか分からない。

どうなるか分からないことにコストをかけるより、いま必要なことだけをやるべきだ、ということです。

「拡張性」という快楽に立ち向かえ

「拡張性」を唄うとき、ちょっと立ち止まって考えましょう

「拡張性をプログラミングする」ことは、熟練プログラマーにはとても楽しい作業。

  • モジュール構成を見直し
  • インタフェース化し
  • アルゴリズムを動的生成できるようにし
  • 依存性注入できるようにして。。

もういくらでも、プログラミングを続けられます。

拡張性は悪いことではないです。重要なのは、そのコストに見合う対価があるか

コストをかけるなら、それはチームの仲間、リーダー、クライアントと相談して進めるべきことです。認識をあわせて進めましょう。

まとめ

要は、コストとのトレードオフです。いまやるべきことなのか?を考えましょう。

たいていの場合、拡張性のためにプログラムを追加するよりは、シンプルになるようにプログラムを削ぎ落すほうが有効です。

まず念頭に置くのは、KISS原則。シンプルに勝る拡張性はありません。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次