第39回
プログラミングの周辺事項(2)~きれいでわかりやすいソースとは?

きれいなソースコードとは?

「きれい」といった表現は感覚的に使われることが多いため、それが見た目の問題なのか、それとも論理的な命令体系に対する問題なのかが明確ではありません。言葉の問題を整理しておきましょう。

「きれい」の2つの意味

実は、「きれい(綺麗)」には2つの意味があります。

(1)美的である
(2)整然としている

(1)の「美的」とは「美しい」と言い換えることができます。綺麗な絵、綺麗な人――といった場合の「きれい」です。

(2)の「整然」とは「整っている」ということであり、「雑然」の対義語です。綺麗に片付けられた部屋、綺麗なお店――といった場合は「美しい」より「整然」という意味合いが強くなるでしょう。

「きれい」って何?!

プログラミング言語のソースで「きれい」という表現を目にした場合、それを受け取る側の経験や気分などによって上記のどちらの意味にも解釈できてしまいます。

(1)の意味なら「変数名や命令、演算子などの並びの美しさ」「1行ごとの長さの調整や字下げなどによる文字列としての美しさ」

であり、

(2)の意味なら「記号的で簡潔な美しさ」「役割や意味による区切り方の整合性」

といったところかもしれません。

「どちらも大切じゃないか」と思う人もいれば、「そんなことどっちでもいいや」と感じる人もいるでしょう。しかし、ソースコードに限らず、何事も(たとえば、PC周りに置かれた小物の配置などに関しても)きれいであるに越したことはありません。ここで「きれいなソース」という曖昧な表現を明確にしておきましょう。

感覚的な「きれい」と論理的な「きれい」

先に掲げた

(1)「美的」は「感覚的な美」

であり、

(2)「整然」は「論理的な美」

だと言えます。

つまり、「きれいなソース」とは、ソースコードを読んでそこに感覚的な美を感じるのがよいのか、論理的な美を感じる方がよいのか――ということです。

みなさんが他人の書いたソースコードを読まなければならないとき、以下のどちらがよいでしょうか?

(a)変数名などがaとかxなど簡潔だがわかりにくいけれど、字下げや適度な改行で見た目がすっきりしている。一見わかりやすそうだが、よく読んでみるとそれほどわかりやすいわけでもない。

(b)変なところで改行されていたり、改行せずにだらだらと長い1行があったり、変数名がやたらと長かったり……と、見た目には汚いけれど、機能や役割ごとに空白行で区切るなど、見た目はよくないが読み取りやすい。

「きれいなソース」も最低条件

上記の(a)と(b)、どちらも嫌だけれど、どちらにもそれぞれよいところがありますね。一長一短です。要するに、両者のよいところを合わせたソースが理想だと言えます。見た目にもきれいで、しかも意味を読み取りやすいことが理想なのです。

(a)のようなソースには、見た目のとっつきやすさというメリットがあります。どんなに論理的な整合性がとれていても、ぱっと見て「うわー、嫌だなぁ」と思われては真剣に読み取ってもらえません。

(b)のようなソースには、じっくりと読めばしっかりと理解できるというメリットがあります。しかし、じっくりと読んでもらうための魅力がありません。それを補うのが(a)のように見た目を意識した書き方です。

まとめると、きれいなソースコードの最低条件は以下の2点です。

・ぱっと見て何をしているかがわかりやすい → 動作を読み取りやすい
・論理的な構造が視覚的にも反映されている → バグを防ぎやすい

5つのポイント

具体的な書き方としては、以下のような点に注意すればよいでしょう。

1.1行の長さを適度にする
2.同じレベルの処理は字下げ位置を揃える
3.複数の処理をできるだけ1行にまとめる
4.シンボルを冗長に 意味をわかりやすくする
5.機能ごとに空白行を挿入する

この5つのポイントについて考えてみます。