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

山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

読めるプログラムを書く人とそうでない人の違い

ブログ
読めないプログラムを書いてしまう人の傾向が見えてきました。
・プログラムを命令の集まりとデータととらえている
・プログラムはコンピュータが理解するもので人が読めるものでない
といったことがあるのではないかと思います。誰でも最初はそうなので仕方のないことだとは思いますが。

例えばテーブル設計。「カード」というテーブルがあったら普通は1レコードが1枚のカードを表していると思うでしょう。しかし1枚のカードでステータスが変わるごとに新しいレコードを作るような設計をする人もいます。こういうのは上のような考え方でやっていると思われます。順に命令を実行していって後でデータが必要になるからここで保存しておくと。そういう発想だと思います。

読めるプログラムにするにはいったんそういうふうに設計または作ってからワンクッション置く必要があります。

例えば一冊の本で、全部の文が段落分けもなく区切りなく続いていたらどうでしょう。とても読めたものではないですね。命令の羅列はそういうものです。本だったらいくつかの文は段落というまとまりになり、いくつかの段落で節というまとまりになり、いくつかの節で章というまとまりになります。節と章にはタイトルもついています。そういうふうに整理されるから読んで理解できるものになります。目次を見れば大きくどういう話の流れになっているか理解できます。プログラムも同じです。

一連の命令の連なりの中で、どういう物や人が出てくるか考えます。そして処理とデータを物、人に割り当てて行って整理します。これが設計です。

その前提として理解しておきたいのが、プログラムは人間が読むためのものだということです。このへんはプログラム言語の進化の歴史を知っておきたいですね。機械語アセンブラCOBOL、C、BASICC#JavaRubySwiftといった具合に。

BDDは特にソースを読めるように工夫していると思いますが、RSpecの紹介をしている記事だと全くそれを無視して書いているのも多々見受けられます。このへんの本来の書き方を理解すると読めるソースというものがわかってくるのではないかと思います。