まっつーのブログ

本の感想や振り返りなど雑多に書いてます

【感想】プリンシプルオブプログラミングを読んだ

新米プログラマーが読むべき本として、「リーダブルコード」や「Webを支える技術」などと共に名前を上げられている1冊。 特定のプログラミング言語に依存しない普遍的な101個の原理原則について書かれたものです。

用語の解説にとどまらず、なぜそうするのか、具体的にどのように取り組めばいいのかが書かれているため、プログラマとしての重要な考え方を網羅的に学ぶことができました。

今回は、その中でも特に印象的だった3つのTipsについて感想と共にまとめてみました。

名前は短いコメントとして考えること

変数や関数、クラスなど、名前を考える場面は多々あります。 適切な名前付けを行うにはどうすればよいのでしょうか。

考え方の一つとして、名前は短いコメントとして考えることが挙げられていました。

コメントといっても詳細まで書く必要はありません。 効果目的だけを説明して、手段には言及しないようにします。 そうすることで、コードを読む人は詳細を理解する手間を省くことができるのです。

具体例を考えてみましょう。例えば、チャットアプリで、メッセージが送信可能かを判定する関数を作るとします。

// 手段についての説明
bool isNotBannedAndNotMutedAndNotBlocked();

// 目的についての説明
bool canSendMessage();

以下の条件を満たしているかを判定するというロジックです。

  • BANされていないこと
  • ミュートされていないこと
  • ブロックされていないこと

手段についての説明では、コードを読むだけでは何を伝えたいのかが分かりませんね。 ロジックの追加や変更時にも名前の修正が必要になってしまいます。 関連したコードの修正を行うにも、周りのコードから意図を汲み取らないといけないので時間がかかってしまいそうですね。

それに対し、目的を名前で説明している方は、明確に意図が伝わりますね。 関連したコードの修正も容易に行うことができそうです。

一度書いたコードは、多くの人から何度も読まれることになります。
長期的な視点を持ち、コメントのように伝わりやすい名前付けを行うことを意識していきたいと思いました。

エゴを捨て去ること

積極的に自分の書いたコードを見てもらい、改善点を指摘してもらうことは重要です。

とはいえ、自分が書いたコードに愛着が湧いてしまい、不具合を指摘されるのが嫌になるという気持ちもあります。 また、攻撃的な言葉で指摘をされると、素直に受け入れづらいということもあると思います。

その対策として、うぬぼれやプライド、自分の方が優れているといったエゴを捨て去ることが必要だと述べられていました。 コードを見る側も見せる側も、お互いに敬意を持って、真摯にコードレビューと向き合う気持ちが大事なのだと学びました。

もちろん、自分の仕事と自我を切り離すのは簡単なことではありません。 それでも、日常的に意識することで、自分自身とコードを切り離して考えられるようになるのだと思います。

名前がないものは見えない

名前がないものは、身近に存在しても見えないが名前を知った途端に見えてくる。 これはジョシュアツリーの法則という法則です。

例えば、デザインパターンは名前があることで、様々な設計方法が再利用可能になっています。 名前がついていなかったら、仮に共通点を見出すことができたとしても、チーム全員が同じ実装方針で進めることは難しそうです。

ジョシュアツリーの法則は、この書籍で学んだ数多くの概念にも通ずるところがあると思います。 用語と要点を知っただけでは意味がないと思う方もいるかもしれません。 しかし、その概念を知らないことには、身近に存在していても気がつくことは困難です。

重要な概念のニュアンスだけでも抑えておくことで、今後の学びや気づきにつながるのだと思います。 もちろん名前を知っているだけでは、不十分なところもあるので、各トピックで紹介されている関連書籍を読んで深堀りするのもよいでしょう。

まとめ

以下の3点がこの書籍の中で特に印象的なトピックでした。

  • 名前は短いコメントとして考えること。
  • エゴを捨て去ること。
  • 名前がないものは見えない。

他にも数多くの原理原則が紹介されており、今後のプログラマー人生に役立つ書籍だと思いました。 要点を掴んでおくことで、今後の取り組みに役立てていきたいです。

興味がある方はぜひ読んでみてくださいね。