クマのブログ

つまづいたところ、学びを書いていきます

【PHP】可読性の向上を目指して

前提

背景

  • 会社の研修中、PHPの基礎講座を受講

  • 今の会社に就職前に独学でPHPを学習していたが、初めて知ったことがあったので、アウトプット

事象(やりたいこと)

カリキュラムで書いてみたソースコードの可読性を向上したい

困ったこと

  • 実装当初は機能を実装することだけで精いっぱいで、可読性を気にする余裕がなかった

  • 見返した際に何をしているソースコードかよくわからず、ソースコードを読むのに困った

試したこと

ソースコードをレビューしてもらう

ある程度知識のある方によるセルフレビューは効果が高いとは思います。

ただ、自分は素人同然であるため、コードレビューを講師の方に依頼しました。

結果

↓レビュー前

// 関数定義(PHP部)
function countNumberOfStrikes($tmpPlayerArray,$tmpRandArray){
    $strikeCnt = 0;
    for ($i=0; $i < count($tmpPlayerArray); $i++) {
        if($tmpPlayerArray[$i] === $tmpRandArray[$i]){
            $strikeCnt++;
        }
    }
    return $strikeCnt;
}

// 関数呼び出し(HTML部)
    <?php echo countNumberOfStrikes($ansNums,$userNums) ."ストライク";?>
    <?php
        if(countNumberOfStrikes($ansNums,$userNums) === count($ansNums)){
        echo "<hr>";
        echo countNumberOfStrikes($ansNums,$userNums) . "ストライク!アウト!";
    }
    ?>

↓レビュー後

// 関数定義(PHP部)
function countNumberOfStrikes($tmpPlayerArray,$tmpRandArray){
    $strikeCnt = 0;
    for ($i=0; $i < count($tmpPlayerArray); $i++) {
        if($tmpPlayerArray[$i] === $tmpRandArray[$i]){
            $strikeCnt++;
        }
    }
    return $strikeCnt;
}

$totalStrikes = countNumberOfStrikes($ansNums,$userNums);

// 関数呼び出し(HTML部)
    <?= $totalStrikes ."ストライク";?>
    <?php
        if($totalStrikes === count($ansNums)){ ?>
        <?= "<hr>"; ?>
        <?= $totalStrikes . "ストライク!アウト!"; ?>
    <?php   } ?>

↓修正点

  • 関数の戻り値を変数$totalStrikesに代入し、関数呼び出し回数を減らした
  • 出力時は関数を呼び出さずに$totalStrikesを使い出力することで、コード数を減らした
  • 出力時に省略記法を使用

所感

  • 関数を呼び出す回数が増えると、可読性が悪くなるだけでなく、処理速度もわずかながら遅くなると初めて知った。

  • 今回は基礎学習用なので、短い関数だが実務に入った際はもっと長い関数、多くの関数をまたぎながら使うことになる。

そのため、最初の実装時になるべく可読性を意識した実装をすることで、後々のレビュー時の工数を省工数化できることを実感。