クラスタイプではなく、機能別にモジュールを整理する
束縛を機能別にまとめます。 理想は、モジュールをインストールするか否かで機能全体の有効化/無効化ができることです。
例えば、Filter を実装するすべてのクラスの束縛を含む FiltersModule や Graph を実装するすべてのクラスを含む GraphsModule などは作らないようにしましょう。
その代わりに例えば、サーバーへのリクエストを認証するAuthenticationModuleや、サーバーからFooバックエンドへのリクエストを可能にするFooBackendModuleのように機能でまとめまめられたモジュールを作りましょう。
この原則は、「モジュールを水平ではなく、垂直に配置する(organize modules vertically, not horizontally)」としても知られています。