読者です 読者をやめる 読者になる 読者になる

プログラミングの一方向性関数:読みやすいコードを書くということ

以下、単なる思い付きであり、すでに世の中に山ほど議論があるはずだが、頭の体操として記す。
プログラマの目標とすべきは、ちゃんと動き、メンテナンスしやすいコードを書くことだろうが、そのための苦労・能力は半端ではない。でも、そんなコードを読むのは簡単。この「一方向性」を議論するには、定量化が必要だ(なんかとても本末転倒な話でスマン)
読みやすさの定量化の手掛かりとして、

  • 読み手のボキャブラリー(パターン)のストックから、実装されているコード、デザインとの距離

を設定してみてはどうかと思う。
つまり、いまあるコードと、プログラミング入門本のサンプルコードの構造の相違点の数(その前に正規化は必要だが、名前付けもなにげに重要だったりするだろう)を数えて「距離」とする。もしくは、tree上での検索を余儀なくされるのであれば、可能な選択肢の数で確率を割っていく考え方もできるだろう。暗号のbruteforce attackに対する強度などはこちらだ。
もうひとつは、問題領域から読むべきコードを同定するための検索性で、これも定量化ができないものかと思うが、これについては、問題領域と、コードについているタグ(名前)の構造(treeとか)を含めた距離(「なんのとっかかりもない」を距離無限大にしたいので、こちらも逆数を取ったりすることになるだろう)を考えられないかと思う。
そんなんでは、ありきたりの部品ストックからコーディングすべし、みたいな退屈なことになりはしないか?という意見も出そうだが、大抵の場合、「うまい!」というコードがやっていることは、これまで別分野にあった「ほとんど自明」というパターンを借りてくることで実現されている。それが自明であればあるほど「うまい」。
そういうコードを書いたなら、タグとして、新しい分野を参照すればいいだけのことなのだろう。