偶発的凝集

 偶発的凝集は、関連性のないタスクや処理を同じモジュールに組み込むことを指します。

 このコードでは、1 つのKitchenクラス内に、料理の準備(preparePasta)、メールの確認(checkEmail)、面積の計算(calculateArea)など、異なる目的を持つメソッドが組み込まれています。
各メソッドは異なるタスクに関連しており、同じクラス内に組み込まれていますが、それらの関連性は明確ではなく、コードの理解が難しくなり、保守性が低下します。

<?php

class Kitchen
{
    public function preparePasta()
    {
        // パスタを茹でる処理
    }

    public function checkEmail()
    {
        // メールを確認する処理
    }

    public function calculateArea()
    {
        // 面積を計算する処理
    }
}
                    

偶発的凝集の改善例

 偶発的凝集を高い凝集度に変えるために、クラスの責任を明確に定義し、関連するメソッドをグループ化することが重要です。
以下は、リファクタリングされたKitchenクラスの例です。
このクラスは異なる役割を持つ3つのメソッドに切り分けられています。

<?php

class PastaCooker
{
    public function preparePasta()
    {
        // パスタを茹でる処理
    }
}
                        
<?php

class EmailChecker
{
    public function checkEmail()
    {
        // メールを確認する処理
    }
}
                        
<?php

class AreaCalculator
{
    public function calculateArea()
    {
        // 面積を計算する処理
    }
}