結論
interfaceは便利だからどんどん使え。
そもそもなぜ書こうと思ったのか
interface、正直作るのめんどくさいし、こんなの必要ないやんって思ってた。
特に研修の頃は死ぬほど思ってた。
案件に入ってからもレガシーであんまりオブジェクト指向チックなことをしていないコードだとinterfaceなんて実装されていないし、いらんと思ってた。
でもデザインパターンとかアーキテクチャの話は好きでいろいろ書籍を漁っているうちに必要だと思えるようになった。
フルスクラッチで開発するってなったとき、便利さにめちゃくちゃ気付いた。
ほな、なにがええのか
型が担保されます。
実装時にinterfaceをもとに自動でコード生成してくれます。
DIとかできます。
そもそもinterfaceとは
ユーザーインターフェース(UI)とかのインターフェースです。つまりINとOUTをつなぐものです。
そのため、各関数の引数のかたちと返り値のかたちのみ記載したクラスです。
型の担保のなにがいいのか
何よりも、「この型を受け入れられて、この型で返します」ということがわかります。
type errorとかを未然に防ぐことができます。
また、interfaceを参照したクラスを実装する際、IDEが勝手に骨組みを作ってくれたり、静的解析を行ってくれます。
この静的解析はjavaなどのコンパイラ言語の場合はコンパイラがしてくれるので未然にバグを防げますが、PHPなどインタプリタ言語の場合、そこのソースを動かさないと例外を吐かないので、とても便利です。
つまり、プログラミングしている段階でバグに気付くことができます。
自動でコードを生成することのなにがいいのか
基本的に人間はミスをします。バグが実はタイポだったりするのはよくあることです。それを機械が勝手にしてくれるので、タイポを減らせます。また一瞬で骨組みを作ってくれるのでその分生産性も向上します。
プログラミングはあくまで手段であることを忘れてはいけません。正直AIに任せて生産性が上がるなら、任せたほうが楽です。
DIとかができると何がいいのか
DI、依存注入と呼ばれるものですが、要は疎結合になるんですね。コンポーネントの独立性が高まるので影響範囲が狭いんです。
その結果、保守性が高まります。
終わりに
酔っ払いが酒の勢いで書いた記事です。
要はinterfaceを使うことで、生産性と保守性が高くなりまっせ。という話でした。
そのシステム、何年使いますか?最初の数時間を犠牲にして後々の何年を大切にしませんか?