入社前実技試験の修正を終えて

初めまして、2022年5月にエンジニア育成枠として入社しました北村 邦彦と申します。

現在はPHPチームに配属され、GitHubのチームでの運用方法やPHPの基礎学習等をおこなっております。

今回 『リーダブルコード(Dustin Boswell、Trevor Foucher著)』 を読み終え、それを踏まえて入社前に実施した実技試験のコードの修正をしましたので、学んだこと・感じたことについて記述していきます。
 

修正後に感じたこと

コードの可読性を上げる事を目的に修正をしましたが、知識量や慣れにより変数名の読み取り方やコードの読みやすさは異なると感じました。
そのため、「主観的なコードの見やすさ」と「客観的なコードの見やすさ」の現状の差を理解することが大切だと感じました。
 

結論

結論から書き出すと、 「誰が読んでも読みやすいコードを書こうとすることも大切だが、読みやすいコードの記述方法/ルールを理解しその表現に慣れるのが近道」 だと私は感じました。
前提として読みやすいコードを考えて書くことは大切だと思いますが、読みやすいコードのルールを理解しその表現を取り入れていくことが、今の段階では可読性の高いコードにつながると感じました。
 

理由

修正をしていく上で、私の知識・経験値不足が原因ですが、自分が読みやすいコードが必ずしも他の人が読みやすいコードとは違うと感じたためです。
 

具体例

文字列の配列を、整数の昇順配列に並び替えるsortNumbers関数(ユーザー定義関数)を例に挙げると、

  • 私にとって読みやすいコード
    //文字列の配列を、整数の昇順配列に並び替える
    function sortNumbers($str_array) {
      //配列(string)を、昇順配列(string)へ変換
      sort($str_array);
      //結果格納用の配列を用意
      $integral_array = [];
      //要素を一つずつ取り出し、文字(string)から整数(int)へ変換
      foreach ($str_array as $value) {
          $value = intval($value);
          //$integral_arrayに$value(整数)を追加
          array_push($integral_array, $value);
      }
      return $integral_array;
    }
    

    経験が浅い私はこのコードなら動作の詳細が記載してあり読みやすく感じましたが、ある程度経験を積んでいるエンジニアの方からみると、動作に対するコメントが多くコード自体とコメントでの説明で二重で書いてあり可読性の悪いコードになっていると思います。
     

  • 多くの人が読みやすいコード
    //文字列の配列を昇順に並び替え、整数の配列へ変換
    function sortNumbers($str_array) {
      sort($str_array);
      $integral_array = [];
      foreach ($str_array as $value) {
          $value = intval($value);
          array_push($integral_array, $value);
      }
      return $integral_array;
    }
    

    経験値にもよると思いますが、詳細までわからないビルトイン関数が出てきたとしても関数名からある程度の予想を立て理解ができると思います。
     

    まとめ

    現在の自分が思うコードの読みやすさではなく、主観的なコードの可読性と客観的なコードの可読性の差を理解し、未来の自分が読みやすいコードを書いて表現に慣れることが大事だと感じました。 1年後にこの記事を読み返して、自分の書いていたコードが読みづらいと気がつけるように頑張ります!