偶発的凝集は、関連性のないタスクや処理を同じモジュールに組み込むことを指します。
このコードでは、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()
{
// 面積を計算する処理
}
}