インタフェースと実装クラス名の"Impl"

私にとっての語源というか、発祥は"GoF本"。少なくともそれ以前に"Impl"という接尾詞を付けることは知らなかった。

元ネタに関しては完全に乗り遅れたんで、議論に参加する資格すらない。(なのでトラックバックも打たない)
そんな私はインタフェースの実装クラス名に接尾詞"Impl"を加える派。

理由は(上から優先度順に)

  • インタフェースを使わせたいのであって、実装クラスは直接使わせたくない
  • インタフェースは公開するが、クラスは必ずしも公開しないことを明示したい
  • クラスはインタフェースの実装の一つに過ぎない、ということを明示したい

ただし、これらはフレームワークやライブラリィを書くのを前提としているお話。アプリケーション内に閉じたケースでは、そもそもインタフェースも書かない。
あと、"Impl"を付けて起こしたクラスであっても、その後"Publish"なクラスとした場合は"Impl"を除去する。標識みたいもんか。