Categories
リファクタリング

オープン・クローズドの原則

 この原則は、ソフトウェアのクラスやモジュールは拡張には開かれて(Open)、修正には閉じて(Closed)いるべきだと述べています。既存のクラスやモジュールを修正することなく、拡張が可能な設計にすべきということです。

 オープン・クローズドの原則を守ることで、既存のコードへの変更が最小限に抑えられ、新しい機能の追加が容易になります。これは、ソフトウェアの保守性や拡張性を向上させる助けとなります。

例として、異なる種類の報酬を計算するクラスを考えてみましょう。

オープン・クローズドの原則に従っていない例

報酬の種類を追加する場合、RewardCalculatorクラスを修正する必要があり、オープン・クローズドの原則に反していると言えます。

オープン・クローズドの原則に従っている例

新しい報酬の種類を追加する場合、既存のコードを修正することなく、新しいサブクラスをRewardCalculatorに追加することが出来ます。これにより、既存のクラスは修正に閉じられ、拡張には開かれていると言えます。