(provisional)

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

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

どうも!
ryotaです!

「リーダブルコード」の100回読み、本日は3回目です!

今日はリーダブルコードの中にある
「鍵となる考え方」
「アドバイス
「まとめ」
を見てから仕事をしてみました。

で、今の仕事であるツールを作っているのですが、
ちょっと行き詰まってまして、
データの動きが把握できないぐらいコードが冗長になってしまっていたんですね。

自分がイメージした動きを全くしてくれなくなり、
どこをどう改善していいのかわからない…
改善してみても思ったような動きをしてくれない…

そんな繰り返しでドツボにハマってました。

しかし、リーダブルコードの中に書いてあったある考え方を取り入れてみると、
みるみるうちに問題が解決していったんです。

それは、

「巨大な式は飲み込みやすい大きさに分割する。」

というアドバイス


僕の中では、
「ちゃんとロジック通りなのであれば、多少は式が長くなっても問題ない」
とか、
「何行になっても理解できていれば大丈夫」
というような考え方になっていたんですね。

しかしその結果、みるみるうちにコードが積み重なり、
もはや自分で書いたにも関わらず

「あれ、ここって何でこんな書き方をしたんやっけ?」
「この動きってどう繋がってるんやっけ?」
と彷徨うことに。

それが原因でハマってたわけですね。


それを
「巨大な式は飲み込みやすい大きさに分割する。」
というアドバイスをもとに、小さく分解していく、
更には、式だけではなくコードのブロックも分解していく、
と決めました。

他の人はどれぐらいのボリュームで分解しているんやろか?
と気になったので、ちょっとGitHubを覗いてみることに。
(実はGitHubで人のソースを見る機会をあまり作れてなかった笑)

そこで、自分にとっては衝撃的な光景が…


それは、

「たった16行のために1つのファイルを作っている」

という事実だったんです。


僕はなぜか、
「できるだけ多くのコードを1つのファイルに盛り込む」
という考え方をしてました。

なのでコードが多くなりすぎてしまい、
データの流れが把握できなかったんですね。


で、

「たった16行のために1つのファイルを作ってもいいんや!」

と衝撃を受けたことで、自分の中の(勝手な)価値観が崩れて、
そこからは自分が書いたコードを分解することに没頭しました。


その16行のまとまりを見た印象としては、

「ある1つのタスクを実行する最小単位」

というイメージだったんですね。


なので、自分が書いたコードも、
1つのタスクごとに分けよう、
と考えたわけです。


で、ひたすら分解し続けた結果、
あれだけハマっていた問題があっさり解決しました。

全体の流れを把握しながら、
タスクごとの動きも把握できたので、

「何が原因で詰まっていたのか」

ということを理解した瞬間、
解決策も思い浮かんでくるんです。

そこをちょっと改善したら思った通りの動きをしてくれる。

そこからは非常にスムーズにコーディングが進みました。

感覚としては、
生産性が2倍になった!
という印象です。


かの有名な哲学者、デカルト
「困難を分割せよ」
と言いました。

今までこの言葉を知ってはいましたが、
今回ほど仕事に活かせたな、と思ったことはありません。

これからは困ってから分割するのではなく、
常に分割することを意識しながら取り組んでみようと思います!

みなさんも困ったときは問題を分割してみてください、
めちゃくちゃ捗りますので!