スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

共通認識としての「リーダブルコード」

ここ数年をプログラマとして過ごしてきた人で、「リーダブルコード」の名前を知らない人はあまりいないんじゃないかと思います。

 

 

その名の通り、プログラミングにおいていかに読みやすいコードを書くか(そしてそれがいかに重要であるか)ついて、とても具体的に記述されています。

今回の記事は、その内容以上に、著名であり多くのエンジニアが読んでいること自体が、リーダブルコードの重要性だという話です。

 

一貫性

プログラムの可読性において、特に重要なことの一つは「一貫性」だと考えています。

コーディング規約(例えばインデントサイズ、どこにスペースを入れ、どこに改行を入れるかなど)はソースコードの全体において共通しているべきです。

あるいは並列関係にあるロジック、例えば複数のWeb APIにおいて、あるものはControllerクラスに全てのロジックが記述され、あるものはControllerクラスからRepositoryクラスを呼び出すようなレイヤード構造になっている、などの差異がある状態は避けるべきです。

 

この一貫性が守られていることのメリットは、単純に整頓されることに留まりません。

一貫性が担保されていれば、一部分を読むだけでも同様の記述があるであろう多くのコードを読み飛ばせるようになるのです。

逆に一貫性がないと、記述時にもどのルールに合わせれば良いか混乱しますし、毎度毎度どういう書き方が良いか考え直さなくてはならなくなります。


共通認識

一貫したコードを書き続けるためには、開発メンバーが共通認識を持っている必要があります。

実際には、これは簡単なことではありません。

プログラムが「動くかどうか」には絶対的な判断ができますが、プログラムが「読みやすいかどうか」については、どうしても主観的な判断になりがちです。

エンジニアはそれぞれバックグラウンドが異なりますし、それによって、「読みやすさ」の判断にはどうしてもばらつきがあります。

各メンバーが読みやすさを目指すほど、時として意見が割れる事があります。

だからと言って、各人が自分の思う「読みやすさ」を目指せば「一貫性」が失われてしまいます。

 

開発が長く続くほどメンバーも入れ替わる、といった問題もあります。

 

有名書籍が共通認識を生む

ではどうやって共通認識を得るか。

そのために有用なのが、リーダブルコードのような有名書籍です。

すなわち、全メンバーがこの書籍を読むことで、共通認識を得ることができる、ということです。

こういった書籍は既に読んでいる人が多いですし、プロジェクト参加時に新たに読むとしても、その人のキャリアにおいて決して損になりません。

もちろん、リーダブルコードに全てが書かれているわけでもなく、より発展的な、または具体的な事柄において、意見が対立することはままあると思います。

しかしそんな場合でも、少なくとも全ての議論はリーダブルコードの内容をベースにして行うことができます。

リーダブルコードにの記述に従おう、という結論で、議論をスキップできることも多いと思います。

 

具体的な例としてリーダブルコードを挙げましたが、別にこれにこだわるわけではありません。

チームで課題図書が設定できていれば良いし、あるいはドキュメントが積みあげられていれば良いかもしれません。

またこの話は、プログラム以外において、一般的に、その分野における有名書籍を読むべきという結論に拡張できると思います。