「コードの読みやすさ」は時代に左右されるのか

 プログラマに立ちはだかる壁である「コードの読みやすさ」は、時代によって異なるかもしれません。

11年前の記事

 IT Mediaの記事のキミのコードが汚い理由を発掘して読んでみました。

 この筆者が、

同じ処理を繰り返すようなコードで初心者プログラマーがよく使う幼稚なスタイル

 と唾棄しているリスト1のコードは、課題はあるものの現代の感覚からすると読みやすいコードかと思います。

 適切に早期リターンされており、else文によってネストが深くなってもいない、上から順番に流れるように読めるコードです。

Javaを理解していれば、かなり読みやすい

 と述べているリスト2のコードは、リスト1のコードに比べて課題が多いことがわかると思います。

リスト1のコードの課題

  • Stringの出力部分など、共通化できる箇所がある
  • マジックナンバーを排除する
  • あえて言うなら、&&結合の部分は1つのif文として記述してもよい
  • あえて言うなら、判定部分に名前を付けることを検討してもよい

リスト2のコードの課題

  • leader変数に入っている数値の意味がわかりづらい
  • int opponentsGames = gamesWon[leader == 1 ? 1 : 0];
  • setScoreMessage変数を最初にnull初期化して用意しておく意味
  • else~ifが連続しすぎており、何度も条件式を読み直す必要がある
  • そもそもifの条件式の中身多すぎ

 いくつか挙げてみましたが、それを抜きにしても現代の感覚ではリスト1のほうが受け入れられやすいかと思います。

クリーン≠リーダブル?

 この筆者の述べている「クリーン」なコードと、現代プログラミングにおける「リーダブル」なコードは違うのかもしれない、と考え、更に読み進めてみます。すると、以下のような記述がありました。

コードのエレガンスと読みやすさ

 読みやすさって書いとるやんけ。

現代感覚とのズレ

 このように、たった10年前に書かれた記事ひとつとっても、現代の感覚とは大きくかけ離れていることがわかります。

 プログラマは生涯にわたって学習が必要なジョブであると言われていますが、学習というのはただ最新技術を追いかけるだけでなく、こういった変化に敏感なことも求められます。

まとめ

 プログラミングの常識は、数年も経てばまったく別のものになっている可能性が高いです。最近ではAIがもてはやされていますが、こういった基礎的な部分も日々進化を遂げています。

 過去の栄光に縋ることのないよう、常にアンテナを張っておきたいものです。