(provisional)

データサイエンティストになるためのあれこれ

【100回読み】リーダブルコード(#001)

どうも!
ryotaです!

最近読書に対する取り組み方を変えてまして、
今まで僕は
「100冊の本を1回読む」
という多読タイプでした。

でも色々と勉強法を研究してみると、
そういった多読もいいんですが特に新しいことを学ぶときは
「1冊の本を100回読む」
という勉強の仕方もあるということを知りました。

個人的にすごく斬新的な考え方やな~と思いまして、
その勉強法を取り入れてみることにしました!

ということで、
「同じ本を100回読む」
ということと、
「毎回学んだことや気づいたことを書く」
ということをやってみたいと思います!


なので、書評というよりは僕の学び・気づきの記録ですので、
そのつもりで読んでいただければと思います!


さて、記念すべき1冊目の本は
「リーダブルコード」
です!

これはプログラマーなら絶対読むべし!と言われている(らしい)本ですね。

僕は2018年7月からプログラマーになったばかりで、
しかも大学で勉強したりスクールで学んだり、といったことをせず、
基本的に本を読んで独学でやってきているので、
どうしても勉強する内容が偏ってしまったり、
基本がおろそかになって
「ひとまず動けばいいや」
みたいなことになりがちです。

もちろん自分なりにアンテナを広げているつもりではいるんですが、
やっぱり基本や王道が何なのか?ということは既に経験している人から聞いて、
そこから学ぶことが大切ですね!

この「リーダブルコード」も、色んなプログラマーの方が紹介してたり、
Twitterきっかけでやり取りすることもある、
さく@CF7期生(@fulong_yuri18)さんの紹介で読んでみることにしました!



この本で何度も繰り返し言われていることは、
「客観的に見て、最速で理解されやすいようなコードを書け!」
ということです。

その具体的な方法や考え方がひたすら書かれているな、
という印象です。

客観的に見て、って意外と難しいんですよね。
僕がコードを書いていてよくやってしまいがちな「客観的でない」コーディングは、

・「今」はわかる
 →「明日」もわかるかどうかは不明。

・「自分」はわかる
 →「他人」もわかるかどうかは不明。

というものです。

つまり、
「今の自分」はわかるけど、
「明日の自分」や「他人」はわからない、
というものです。

もちろん、自分一人で短期的に開発していればまだそれでもいいかもしれませんが、
中長期的に手掛けたり、複数人で開発するうえではそんなコードではダメですよね。

なので、
・数日ぶりにこのコードを自分が見ても理解しやすいのか?
・まったく内容を知らない他人が見ても理解しやすいのか?
といった視点で自分のコードを見ることで、
わかりやすいプログラムを書くことができるのです。


とくに変数やメソッド、クラス名などを自分で決めるときには、
誰がどう見ても解釈がずれないような書き方を意識してみましょう。

get()というメソッドは、何をgetするのかわかりにくい。
int numって、たぶん何らかの番号なんやろうけど…
return resultって、スコープが小さければそれでいいかもやけど、何度も出てくると感覚的にわかりにくいよな…

というように、
「ツッコミどころ」
をどんどんなくしていく感覚で自分のコードを見ていけばいいんじゃないかな、
と感じました!


あと、読み進んでいて気づいたんですが、
この本はプログラミング力を高める本というよりは、
国語力を高める本ですね。

文章の書き方、コピーライティングを学んだことがある人にとっては、
今まで学んだことのプログラミング版、といった印象を持つんじゃないでしょうか。

僕はもともと文章を書くことが好きですし、
コピーライティングをかじったこともあるので、
非常に読みやすかったです。

「プログラミングをするときもコピーライティングを意識すればいいのか!」
といった気づきもあったので、
どちらも経験がある人はぜひ意識してみてくださいね!

では今回のまとめはこの辺で。
明日も読んで学びや気づきをまとめていきます!