本の紹介:『ルールズ・オブ・プログラミング』
本の概要
https://scrapbox.io/files/65da966612919f0025ec57da.png
2023年8月発売(原著は2022年12月)
Chris Zimmerman 著 / 久富木 隆一 訳
著者について
Chris Zimmerman
Sucker Punch ProductionsのCo-Founder / ゲームプログラマー歴20年
誰のために書かれているのか
ほぼすべての「もっといいコードを書きたい」プログラマー
特にチーム開発をしているプログラマー
特にチーム開発のスタイルを握っているテックリード
何が書かれているのか
より良いコードを書くための21のルール
Sucker Punchのコーディングチームで実践されているルール
「ルールに反対する方法」
読者が21個のルールをすんなり読み進めていくようなことがありませんように、ってのがぼくの願いだったりする。...
読者には、思索をめぐらせる対象になりうるような題材を与えたい。新しい知見の1つや2つも得られれば、理想的だ。...
でも、同意しない考え方に読者が出くわすことだって、一度や二度はありそうだ。 何かに関して著者のぼくが完全に間違っていて、ルールの中にもアドバイスとしてはろくでもないやつが混じってる、そんな風に読者が思ったりするかもしれない。
結構なことじゃないか! 読者にとって、自身が強く反対するルールが見つかるなら、そいつはむしろ好機だ。そういうルールを直ちに脊髄反射的に拒絶してしまうことこそ、間違いというものだろう。
疑義が呈されるルールがまるっきり間違いってわけじゃないことは、ぼくが保証する。でもそのルールは、ぼくらにとって正しかったとしても、同時にきみにとっては誤りであるかもしれない。何故そうなってるか理解すれば、読者が自身のプログラ ミング哲学を理解するとともにそれを強化することにつながるはずだ。
ルール1. できるだけ単純であるべきだが、単純化してはいけない
コードは単純である方がいいが、ある問題を解くことを意図して書かれたコード は、コードの単純さにかかわらず、常にその問題を解けなければならない。
コードの単純さは最も重要だが、コードを単純にするために解法を単純化してはならない
どれだけ単純なコードでも、想定される要件の一部だけしか解決できないのなら単純化しすぎている
例えば
レコード数が10000件オーダーになることがわかっているのに、指数的に計算量が増えるようなアルゴリズムの選択
件数が増えることがわかっているのにページングを想定していないAPI設計
スマートフォンで利用されることがわかっているのにラップトップ向けしかデザインしていないUI
問題に対して単純な解法を選択しよう
適切なアルゴリズムを選択しよう
短く簡潔なコードで実現しよう
単純な解法がない場合は、問題を単純化することを考えよう
要件を整理し、考慮しなくていいケースを増やそう
問題に単純な解法が存在しないんだったら、複雑な解法を受け入れる前に、問題に対し、問いを投げかけて検討してみるべきだ。解こうとしているその問題は、本当に解くべき問題なんだろうか。あるいは、解法を複雑にするような、問題に関する不要な仮定を設けてしまっていないだろうか。
読みたくなりましたか?
なぜかまだあまり読まれていないように見える
もっと読まれていいと思う
ぜひ読んでほしい