67-コードを読む

プログラマが知るべき97のこと」の67個目のエピソードは、コードリーディングに関する話です。プログラマソースコードを読む場面は多くあります。開発中は期待通りに動作しないソフトウェアのソースコードを読み、不具合を探します。ソフトウェアの機能拡張が行われるのであれば、既存のソースコードを読んでどこを修正するとよいかを検討します。利用しているライブラリやフレームワークの知識を深めるため、一部をカスタマイズするためにソースコードを入手して読む事もあります。ソフトウェアの品質を計るためソースコードレビューとして読む事もあります。つまり、プログラマにとって、ソースコードを読む事は、ソースコードを書くことよりも多いのです。
しかし、自分の書いたコードもそうですが、他人の書いたコードは非常に読みにくいと感じる事があります。このエピソードでは、その原因が思考や問題解決の方法が自分と異なる事にあると書かれています。この傾向は柔軟なコードを記述できる性質のプログラミング言語で特に強いと感じます。
例えば、Rubyは柔軟な言語であり、「考えていることがそのままコードに記述できる」と言われた事があります。他の人がどう考えてコードを書いたが解り、人によってコードが全く異なるそうです。これはRubyのメリットでしょう。プログラマが書いた時の思考が多く残るようなコードであれば、それを読み取りながらコードを読むことが出来ます。しかし、自分はそこまでRubyを使えるわけではないため、他人のコードは非常に読みにくいと感じます。つまり、ホーム言語がRubyであると言えるほど慣れていれば楽なのですが、そうでない人にはかえって難しく感じる原因となる気がします。
一方、Pythonは「1つの事をコードに変換するならば同じコードになるべき」という思想で設計された言語です。プログラマ個人の考え方や解決方法に関してなるべく排除し、同じようなコードが生成される事を期待しています。言い換えれば、コードを書いたときの意図はコードに残りにくい事が欠点です。しかし、コードの型は同じような形になっていくため、形式的な読みやすさという点では大きなメリットになります。Javaも似た傾向があると思います。
このように言語の特徴によってコーディング時の意図が残りやすい言語も残りにくい言語もありますが、この辺は好みかと思います。自分はコーディング時の意図はコメントとして残すべきと考えていますので、Javaでもそのようにコーディングしています。また、それ以外にもコードを読みやすくするように常に工夫しています。
読みやすいコードを書けるようになる為にはコードを読むことです。世の中には多くのオープンなソースコードがありますが、綺麗で読みやすいコードもあれば、酷く読みにくいコードもあります。前者はお手本とし、後者は「どうして読みにくいのか?」と考える事が重要です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと