アフィリエイト広告を利用しています
プロフィール
DIMNさんの画像
DIMN
普通の会社員 IT企業で働いています。底辺エンジニアなりにJavaやらC#を駆使して頑張ってます。 某youtubeチャンネルの影響ですが、少ない賃金で投資にも手を出してます。
記事ランキング
    最新記事
    カテゴリーアーカイブ
    検索

    広告

    posted by fanblog

    2021年04月08日

    オブジェクト指向言語におけるインターフェースのメリット







    Javaとかのオブジェクト指向の言語で「インターフェース」ってご存知でしょうか?



    // インタフェースの作成
    interface ITest {
    void hoge();
    }

    // インタフェースを実装し、足し算するクラスを作成
    class Test implements ITest {
    public void hoge() {
    // 何かする
    }
    }




    文法としては知ってる、という人もいると思います。
    例では、hoge()メソッドを必ず実装しなければならないという感じです。


    私はメリットを「実装を強制できる」くらいに思ってました。
    例だと、hogeというのを必ず実装しなければならず、利用者は気にせずにhogeを使えるみたいな感じです。


    もう一つの大きなメリットで「テストがしやすい」というのが出てきます。
    ・・・が、メリットを全く感じておりませんでした。「どうテストしやすいの?」って感じです。


    最近知ったのですが、テストを自動化するときに大いに役に立つらしいです。
    テスト用のモジュールに(スタブ)に差し替えるのにインターフェースは必要ということです。




    class Main {
    public void testmethod(ITest test) {
    // 何かする



    // 何かする
    }
    }





    よくあるのが、hoge()がまだ出来てないからテストができん!hoge()を今動かすと怒られる!
    とかの時に、インターフェースを継承したテスト用のクラスを作り、差し替えられるそうです。


    hoge()の中身は、とりあえず成功したことにする、みたいなテスト実装で良いみたいです。


    テスト自動化の文化が無いと、インターフェースの大きな恩恵って受けられないのだと思いました。
    テスト自動化はメリットもデメリットもあるので、みんな理解してやるやらないを決定したいですね。


    ・・・ということで、インターフェースの使い方の理解が深まったので記事にしました。

    テスト駆動開発 [ Kent Beck ]

    価格: 3,080円
    (2021/4/8 19:56時点)
    感想(0件)



    テスト駆動Python [ Brian Okken ]

    価格: 3,080円
    (2021/4/8 19:56時点)
    感想(0件)


    この記事へのコメント
    コメントを書く

    お名前:

    メールアドレス:


    ホームページアドレス:

    コメント:

    ※ブログオーナーが承認したコメントのみ表示されます。

    この記事へのトラックバックURL
    https://fanblogs.jp/tb/10650211
    ※ブログオーナーが承認したトラックバックのみ表示されます。

    この記事へのトラックバック
    ×

    この広告は30日以上新しい記事の更新がないブログに表示されております。

    Mobilize your Site
    スマートフォン版を閲覧 | PC版を閲覧
    Share by: