コーディングにも推敲が必要

リスト1は、同じ処理を繰り返すようなコードで初心者プログラマーがよく使う幼稚なスタイルで書かれている。必ずしも複雑ではないが、筆者には散らかっていて効率が悪く見える。リスト2の方が複雑な条件になっているが、Javaを理解していれば、かなり読みやすい。唯一疑問を抱くかもしれないとしたら、最後の「else if」の中にある条件の最初の部分だけだ。このクローズに来るということは、どちらかのプレーヤーが勝ったことを意味する。

いずれのインプリメンテーションも間違ってはいない。実際、これらはどちらも非常に小さく、つまらない例にすぎないので、これらのリストでコードがいかにクリーンか論ずるのはあまり有益ではない。ただ、何をもってインプリメンテーションがクリーンなのかについて読者の興味を深めることはできるだろう。

キミのコードが汚い理由

クリーンなコードに関する議論がなかなか進まないのは、クリーンなコードに関する価値観が多様であり、ややもすると宗教論争になってしまうから、だと思います。上の例だけを見ても、個人的には、少し過激な言い方をするならば「カッコつけないでリスト 1 みたいに素直に書いておけ」という印象を受けます。「Java を理解していれば」がサンプルコードのどこにかかるのかは分かりませんが(3 項演算子を理解しているかどうか、かな?)、それを考慮しても、リスト 2 の方は条件式が複雑で分かりにくいと感じます。直感的な分かりやすさを求める私と効率を求める記事の筆者。さらに言うならば、直感的な分かりやすさも人それぞれであるし、その 2 つ(分かりやすさと効率)のどちらかが大事かも時と場合による。それだけでも、ひとつの議論になってしまいそうです。クリーンなコードが何かについては、結局のところコーディングする個人が決めるしかないと思います。

そうは言っても、ウンザリするようなコードが世の中に多いのもまた事実です。そこで、クリーンなコードになるように個人的に何か言えることはないかと少し考えたところ「推敲することの大切さ」を伝えることかなと思いました。

私は書いたものは必ず一晩寝かせることにしている。というのは、長文のため書くのにけっこうな時間がかかる。すると書き終えたときには頭の中がその内容一色になっており、その状態で推敲しようとしても不具合が目に留まらないからだ。窓を開けて部屋からタバコの煙を追い出すように、眠っている間に頭の中の空気を澄ませる。そして、「えーと、昨日なに書いたんだっけ」くらいまで内容を忘れてから再読する。そうしてはじめてテキストのいびつさに気づく、文章を削ったり語尾を直したりすべき部分が見えてくる。見違えるようになるとは言わない。でもたったこれだけのことで、書き上げた直後のテキストと比べたら出来栄えは三割増しになるのである。

この“手直し”をあなどれないと感じているので、私はサイト開設当初からそのプロセスを踏んできた。結果、自分の満足度が上がり、五年間楽しく書き続けてこられたのだろうとも思っている。半日置いて読み返してから更新する、これは誰にでも簡単に、今日からできることである。しかも確実に効果が期待できる。テキストをいまよりよくしたいと思っている人がいらしたら、ぜひお試しあれ。

われ思ふ、ゆえに・・・:テキストを確実によくする方法

以前、「レポートなどについても、日本語がなってないと言われるものの多くは、時間がなくて推敲を行わなかったために起こっているのではないのか」ということを書きましたが、コーディングについても同様のことが言えるのではないか、と思います。多くの人は、バグが存在する箇所は修正するけれでも、それ以外の箇所は書きなぐったままになっています。個人差はあれど、書きなぐったままのコードにはいびつさが残ってしまい、それが積もり積もって“汚いコード”になってしまうのでは、と思います。なので、1日置いて自分のコードを読み直し、いびつだなと思った箇所だけでも直す。それだけでも、そのコードの出来栄えは三割増しになるのでは、と思います。

後は、それが出来るだけの時間と熱意があるかどうか。この辺りは、記事で指摘されている通りかな、と思いました。