コードの読みやすさの話

読みやすいコードの書き方について、次の記事が話題になっていた。

これについて、 twitterで@koriym氏から問いかけがあった。

 「put B+C into A」と「a = b + c」のどちらが読みやすいコードといえるのか。現時点での私の考えでは、後者の方が読みやすいという考えだ。こう考えるのはなぜか、書いてみる。

 

まず、コードの読みやすさと一括りにしているが、最初に挙げた記事や私のtwitterでの返答で想定しているのは、何らかのアプリケーションのソースコードとしての読みやすさだ。この類のソフトウェアでは、アプリケーションが扱っている問題(What)とそれをどのように解決しようとしているのかといった意図(How)を、コードを読んだ開発者が正しく認知するのに必要なコストが低ければ、概ねそのコードは読みやすいとされるだろう。このように、アプリケーションコードの読みやすさの基準は、どちらかというと問題の側にある。

@koriym氏が挙げた「put B+C into A」と「a = b + c」との違いは、このような目線で評価しうるだろうか? いくつか意見はありそうだが、同じ目線では評価不可能だと私は考える。この比較においては扱っている変数の部分がABC、abcのようなパラメータに置き換えられており、扱っている問題そのものに由来するような表現を見いだせないからだ。したがって、問われているのは、構文としての読みやすさということになる。表している意味が同じだが、形式が異なっている2つの文の、どちらが良いのかという話だ。

この点で、私の考えでは「a = b + c」の方が読みやすい。

「put B+C into A」は、そのコードが行う操作を自然言語的に表していて、読めば操作をイメージできるのだが、そのイメージはコンピュータのCPUで計算した結果をメモリの何処かのアドレスに書き込むような、限定されたイメージだ。putやintoという単語は、読み手の最初の認識を誘導してすばやく意味を連想させるのに役立つ反面、意味の応用力がないのだ。=や+も、同じようなメリットデメリットを持つが、英単語を使ってしまうよりも、その場での意味に馴染ませやすい。

また、構文自身が意味を連想させまた限定もするということは、アプリケーションコードの記述においては、とても邪魔になってしまう。アプリケーションコードを記述するときには、表現したい問題などに由来する言葉や意味が際立っていた方が読みやすい。putやintoなど構文側の単語がいろいろ出てくると、そちらに読み手の意識が引きづられてしまうだろう。

また、順序の点でも「a = b + c」の方が読みやすい。左辺に結果が書いてあることで、そこから右に書いてあることの目的を最初につかめるからだ。