「読みやすいコード」についてチームで議論しました

こんにちは、YOUTRUSTでWebエンジニアをしている今井(YOUTRUST / X)です。6月に入社してから、もう少しで3ヶ月経過するのですが、徐々にできることも増えてきて、成長を実感できる日々を過ごしています。

そしていきなりの告知で申し訳ないのですが、昨日(8月21日)YOUTRUSTは最強人事桃太郎の新CMを開始しました!(書かずにはいられなかったです笑)

新CM開始を、事業部関係なく会社全員で盛り上げるところを、手前味噌ですが良い文化だなぁと改めて感じた1日でした。 (新CM動画はこちらです!)

youtu.be

白熱した議論が巻き起こったLT

記事の本題に戻るのですが、今回のテーマは「読みやすいコード」についてです。

皆さん以下の2つのコードはどちらが読みやすいでしょうか?

if ( length > 10 )

if ( 10 < length )

先日弊社のエンジニアの中で、白熱(?)した議論が巻き起こったので今回のブログでも取り上げてみようと思いました。週次のエンジニアのMTGの中で、週ごとの担当者がLTを実施するのですが、私がLTを担当した際に「リーダブルコード」を議題に取り上げたことがきっかけでした。

そして上記で取り上げた2つのコードについて、社内エンジニアメンバーの意見は真っ二つに分かれました(笑)。

色んな意見があったのですが、①のコードが読みやすい人は「lengthは10より大きい」のように文章で条件文を捉える傾向にあり、②のコードが読みやすい人は「数直線」で条件文を捉える傾向にありました。個人的には①が読みやすいと感じたのですが、数直線で条件文を見る捉え方も納得感がありました。

実際のホワイトボードの写真です

リーダブルコードの議題

私が行ったLTでは、「リーダブルコード」の「7章 制御フローを読みやすくする」を取り上げ、条件式の並び順以外にも以下のような観点について説明がありました。

  • 条件式の引数の並び順
  • if/elseブロックの並び順
  • 三項演算子の使い方
  • 関数から早く返す
  • ネストを浅くする
  • 実行が流れを追えるように

それぞれの観点について弊社エンジニアメンバーの考えを聞きながらLTを進めたのですが、全員の考えが一致する観点の方が少なかったです。 各自の考え方や捉え方をホワイトボードも使いながら話し合い、想像以上に議論が盛り上がったので、LT担当の自分としては何故か嬉しかったです(笑)。

読みやすいコードとは?

結論「読みやすいコード」は人によって変わり、(チームとしての最低限のルールは定めつつ)無理に基準を統一する必要はないということを学んだLTになりました。そして以前のブログ( YOUTRUSTのエンジニアが心掛けているプルリクエストの要点 - YOUTRUST Tech Blog)でも同じようなことを取り上げたのですが、コードを読む人の立場を想像して、少しでも他の方が読みやすいコードを書く努力をすることが大事なのかなと感じました。

社内メンバーだけでも多様な考えがあったので、「人によって変わる」という曖昧な結論になってしまいましたが、1つのテーマについて活発に議論する様子から、弊社エンジニアチームの雰囲気が少しでも伝わるといいなと思っております!

ちなみに最初に取り上げた条件式の順番については、② if ( 10 < length ) の書き方でコードを書くと、弊社ではRuboCopで警告されるようになっていました(笑)。

最後に

引き続きYOUTRUSTでは絶賛採用強化中です! 今回はLTでの様子をご紹介したのですが、普段からオフィスでの会話や、リモートの場合もテキストでの意見交換が活発なエンジニアチームになっております!

そんな弊社に少しでも興味のある方は、是非ご連絡ください!

youtrust.jp