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

広告

posted by fanblog

2021年04月08日

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




こんばんは。DIMN(だいもん)と申します。


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



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

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




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


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


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


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




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

test.hoge();

// 何かする
}
}





よくあるのが、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日以上新しい記事の更新がないブログに表示されております。