Go言語100Tips ありがちなミスを把握し、実装を最適化する の No.4 〜 No.10 まで読んだ。(No.1 - No.3 はすでに読んでいた)
この本は、発売されてすぐに購入してすぐに読み始めたが、気がつくと読みかけの本がキャパシティーを超えていることに気づいて一旦バックログに戻した。そして、今、いくつか読了したのであたらめて、読み始めた。
Javaで開発していた時は、まずインターフェースを定義して、そのあと実装に入ることが多かったが、Goではインターフェースは必要になるまでは作らない。なぜなら、インターフェースを作るということは、抽象化をするということで、早すぎる抽象化、不必要な抽象化はコードを読みにくくするから。
また、抽象化をする場合、使う側が抽象化を見つけて、必要な分だけをインターフェースにする。
Javaでインターフェースを使いまくっていた時、確かに、使わないメソッドも実装しないといけなくて、つらい気持ちになることも多かったので、これはなるほどという気持ち。つい、インターフェースを作りたくなるが、本当に必要なのか、今一度考える。レビューする時も同様だ。
ジェネリクスや埋め込みも同様。つい、使った方がシュッとしてて良さそうと思ってしまうが、乱用しないよう、本当にそれは必要なのか、よく考えて使うようにしたい。