PHP発展編: コードの順序を意識しよう

このページは独学エンジニアという学習サイトで学んだ内容をもとに、PHPコードを書く上で重要な「コードの順序」についてまとめた自分用の備忘録です。
コードの順序を意識することで、依存関係のミスを防ぎ、読みやすくメンテナンスしやすいプログラムを書くためのポイントを解説します。


https://dokugaku-engineer.com/course/serverside

---

## **1. コードの順序を意識するとは？**

PHPコードは基本的に**上から下へ順次実行**されます。しかし、コードの順序が適切でないと以下の問題が発生します。

1. **依存関係によるバグ**:
    - 処理の順番が重要な場合、順序を間違えると正しく動作しない可能性がある。
2. **可読性の低下**:
    - 順番が不適切だと、コードの流れが分かりづらく、他の開発者が理解しにくい。

そのため、コードを書く際には順序を意識し、**依存関係が分かりやすいコード**や**読みやすいコード**を目指す必要があります。

---

## **2. コードの順番と依存性**

### **(1) 順番に依存するコード**

- 処理が順番通りに実行される必要がある場合。
- **例: 利益計算のコード**
    
    ```php
    // 月次の利益を計算
    $monthlyRevenue = calculateMonthlyRevenue();
    
    // 四半期の利益を計算（依存性: 月次のデータが必要）
    $quarterlyRevenue = calculateQuarterlyRevenue($monthlyRevenue);
    
    // 年次の利益を計算（依存性: 四半期のデータが必要）
    $annualRevenue = calculateAnnualRevenue($quarterlyRevenue);
    
    ```
    
- **ポイント**:
    - **依存性を明確にする**ために、データが順に引き継がれる形でコードを書く。
    - 関数の引数や戻り値を活用し、**依存関係をコードから読み取れるようにする**。

---

### **(2) 順番に依存しないコード**

- ロジック上、どの順番で実行しても結果が変わらない場合。
- **例: 売上・費用・利益の計算**
    
    ```php
    $monthlyRevenue = calculateMonthlyRevenue();
    $monthlyCost = calculateMonthlyCost();
    $monthlyProfit = $monthlyRevenue - $monthlyCost;
    
    $quarterlyRevenue = calculateQuarterlyRevenue();
    $quarterlyCost = calculateQuarterlyCost();
    $quarterlyProfit = $quarterlyRevenue - $quarterlyCost;
    
    ```
    
- **ポイント**:
    - **関連するコードをまとめる**ことで、可読性を向上させる。
    - 売上、費用、利益ごとにコードをグループ化し、構造を明確にする。

---

## **3. 依存性がある場合の対処法**

- **依存性を明確化する**:
    - 処理の順番が重要である場合、関数の引数や戻り値で依存関係を表現する。
- **例: 利益計算のコード（改善版）**
    
    ```php
    $monthlyRevenue = calculateMonthlyRevenue();
    $quarterlyRevenue = calculateQuarterlyRevenue($monthlyRevenue);
    $annualRevenue = calculateAnnualRevenue($quarterlyRevenue);
    
    ```
    
- **ポイント**:
    - **順序を変えられないことが明示される**ように書く。
    - 引数や戻り値を活用して、データの流れを追いやすくする。

---

## **4. 依存性がない場合の対処法**

- **関連するコードをまとめる**:
    - 同じ種類の処理（売上、費用、利益など）を1箇所にまとめる。
- **例: 利益計算のコード（改善版）**
    
    ```php
    // 月次
    $monthlyRevenue = calculateMonthlyRevenue();
    $monthlyCost = calculateMonthlyCost();
    $monthlyProfit = $monthlyRevenue - $monthlyCost;
    
    // 四半期
    $quarterlyRevenue = calculateQuarterlyRevenue();
    $quarterlyCost = calculateQuarterlyCost();
    $quarterlyProfit = $quarterlyRevenue - $quarterlyCost;
    
    // 年次
    $annualRevenue = calculateAnnualRevenue();
    $annualCost = calculateAnnualCost();
    $annualProfit = $annualRevenue - $annualCost;
    
    ```
    
- **ポイント**:
    - 同じ処理（売上、費用、利益）をグループ化し、コードを整理。
    - 処理の流れを上から順に読みやすくする。

---

## **5. コード整理のためのヒント**

### **(1) 関数化する**

- 同じ種類の処理を関数にまとめることで、コードが整理される。
- **例: 利益計算を関数化**
    
    ```php
    function calculateProfit($revenue, $cost) {
        return $revenue - $cost;
    }
    
    // 月次
    $monthlyProfit = calculateProfit($monthlyRevenue, $monthlyCost);
    
    // 四半期
    $quarterlyProfit = calculateProfit($quarterlyRevenue, $quarterlyCost);
    
    // 年次
    $annualProfit = calculateProfit($annualRevenue, $annualCost);
    
    ```
    

---

### **(2) コメントを活用する**

- コードの意図や依存関係をコメントで明示すると、他の開発者にとっても分かりやすくなる。
- **例: コメントの活用**
    
    ```php
    // 利益計算: 月次
    $monthlyProfit = calculateProfit($monthlyRevenue, $monthlyCost);
    
    // 利益計算: 四半期
    $quarterlyProfit = calculateProfit($quarterlyRevenue, $quarterlyCost);
    
    // 利益計算: 年次
    $annualProfit = calculateProfit($annualRevenue, $annualCost);
    
    ```
    

---

## **6. 今回のまとめ**

1. **コードの順番を意識する理由**:
    - 順番が適切でないとバグが発生する。
    - 順番を意識して書くことで可読性が向上し、メンテナンスが容易になる。
2. **依存性がある場合の対処法**:
    - **関数の引数や戻り値**を活用し、データの流れを明確にする。
    - 順序に依存するコードは順番を守るように記述する。
3. **依存性がない場合の対処法**:
    - **関連するコードをまとめる**ことで、読みやすくする。
    - 処理ごとにグループ化し、整理する。
4. **コードを整理するためのヒント**:
    - **関数化**して重複を排除する。
    - **コメント**を活用し、意図や依存関係を明示する。

---

以上がまとめた内容になります。
コードの順序や依存関係を正しく理解し意識することは、バグを減らし品質の高いコードを書くために欠かせないと感じました。

この記事がPHPを学んでいる方の理解を助け、学習の一助になれば幸いです。