2026年2月8日日曜日

【Java進化史 第4回】switch文と設計思想 ― 分岐の向こう側にあるもの

【Java進化史 第4回】switch文と設計思想 ― 分岐の向こう側にあるもの

そういえば、最近あまりswitch文を書いていない。

書けなくなったわけではない。 むしろ、書こうと思えばすぐ書ける。

だが設計を考え始めると、 どこかで立ち止まる自分がいる。


■ 手続き的思考の安心感

switchは安心だ。

条件を並べれば、 処理の流れは一目で追える。

どこで何が起きるのか、 すべてが自分の視界の中にある。

長く手続き的なコードを書いてきた身には、 この感覚は心地よい。

分岐を書く。 処理を書く。 上から順に読む。

世界が、整然と並んでいる。


■ ふと浮かぶ違和感

だがあるとき、ふと思った。

オブジェクト指向言語で、 switchをあまり見ないのはなぜだろう。

書けるのに、 あまり使われない。

それは構文の問題ではない。 設計思想の違いだ。


■ 責務という考え方

オブジェクト指向では、 振る舞いはクラスに持たせる。

条件で分けるのではなく、 責務で分ける。

「どの種類か」で分岐するのではなく、 「誰が責任を持つのか」を考える。

その結果、 分岐はオブジェクトの内部に吸収される。

外側から見えるのは、 ただの振る舞いだけになる。


■ 変更点の局所化

switchを書き始めると、 同じ条件分岐が別の場所にも現れることがある。

仕様変更が入るたびに、 その条件を探して回る。

変更点が、散らばる。

一方で、責務を適切に分けた設計では、 変更は一か所に閉じ込められる。

変更点の局所化。

それは地味だが、 長く保守する現場では大きな意味を持つ。


■ 拡張に開き、修正に閉じる

新しい種類が増えたとき、 switchはcaseを増やす。

既存のコードを修正する。

だが理想とされる設計は、 拡張に開き、修正に閉じる。

既存部分に手を入れず、 新しい要素を追加することで対応する。

それがOCP(Open/Closed Principle)と呼ばれる考え方だ。

理屈は理解している。

だが、実践は簡単ではない。


■ 設計の重さ

責務を分ける。

将来の変更を想像する。

インターフェースを定義する。

switch一つで済む場面でも、 設計は少し重くなる。

正直に言えば、 急いでいるときほど、 switchの安心感に戻りたくなる。

条件を書けば、すぐに動く。

目の前の問題は、すぐ解決する。


■ 未来の自分への負債

だが安易な分岐は、 未来の自分への負債になることがある。

仕様が増え、 条件が増え、 分岐が増え、 修正箇所が増える。

そのとき向き合うのは、 過去の自分の判断だ。

設計とは、 未来の自分との対話なのかもしれない。


■ 分岐の向こう側

switchを書かなくなったのは、 構文の問題ではない。

分岐よりも、 責務を考える時間が増えただけだ。

それが成長なのか、 ただ慎重になっただけなのかはわからない。

だが少なくとも、 設計という重みを意識するようにはなった。

分岐の向こう側にあるもの。

それを考えることが、 オブジェクト指向という思想なのだと思う。





0 件のコメント:

コメントを投稿

【Java進化史 第4回】switch文と設計思想 ― 分岐の向こう側にあるもの

【Java進化史 第4回】switch文と設計思想 ― 分岐の向こう側にあるもの そういえば、最近あまりswitch文を書いていない。 書けなくなったわけではない。 むしろ、書こうと思えばすぐ書ける。 だが設計を考え始めると、 どこかで立ち止まる自分がいる。 ...