web-dev-qa-db-ja.com

プログラミングにおけるスタブとはどういう意味ですか?

「スタブ」、「何かをスタブする」、「スタブ」などの言葉をよく耳にします。

プログラミングにおけるスタブとは何を意味し、Wordはどこから来たのですか?どのような状況で使用できますか?

26
Wazery

スタブメソッドは、単純だが有効な(必ずしも正しいとは限りません)結果を返すだけのメソッドです。

これらは通常、インフラストラクチャの構築時に作成され、現在必要なすべての方法に時間を費やしたくありません。代わりにスタブを作成して、すべてがコンパイルされ、IDEのオートコンプリートが、使用する予定のメソッドを認識できるようにします。

スタブが使用される別の場所は、テスト時のモックです。依存関係の注入によって通常の依存関係の代わりにスタブメソッドを提供し、固定された結果を返し、コードがそれらで正しく動作することを確認します。これは、テストしようとしているコードからテストを分離し、それらのテストを実行するためだけにデータベースを起動する必要がないことを意味します。

31
ratchet freak

おそらくこれは具体的な例で最もよく答えられます。デスクトップアプリケーションを作成している場合を考えてみましょう。アプリケーションコンストラクターがきちんと整頓されるように、createMenubarcreateToolbarcreateMainという名前の関数を用意することにしました。

メインコードは次のようになります(この例はpythonです)。

class ExampleApp():
    def __init__(self):
        self.createMenubar()
        self.createToolbar()
        self.createMain()

すべてが機能するまで、メイン関数は失敗します。開発中にアプリをどのようにテストできますか?たとえば、createMenubarで作業を開始した場合、ツールバーまたはGUIのメイン領域を実装していないため、メニューバーの作成後に初期化は失敗します。

これがスタブの出番です。実際に実装することなく、アプリコンストラクターの要件を満たす(つまり、これらの関数が存在する)createToolbarおよびcreateMainという名前の関数を作成できます。これらの関数はスタブです:

def createToolbar():
    pass

def createMain():
    pass

これらのスタブを配置すると、ツールバーやプログラムの主要部分の詳細を気にすることなく、メインプログラムとメニューバーの実装を開始できます。最終的にはツールバーに移動し、スタブを実際の関数に置き換えます。そして最後に、createMainのスタブを削除し、実際の実装を提供します。

スタブは必ずしも何もする必要がないことに注意してください。これらのスタブは、たとえば、アプリのコンストラクターがレイアウトできる空のコンテナーウィジェットを作成できます。重要なのは、開発中に他のコードを実行できるようにする十分を行うダミーの関数またはオブジェクトを作成することです。アプリケーションが完了するまで、時間をかけてスタブを1つずつ交換します。

6
Bryan Oakley

「スタブ」は「トップダウン」プログラミングで使用されます。これは、一般的なものから具体的なものまで、アプリケーションを構築するときです。そうすることで、構築する時間がなかった特定のアプリケーションの「プレースホルダー」として「スタブ」を使用します。彼らはしばしばダミー値やランダム値のようなものをプログラムのより一般的な部分に返します。それで大丈夫です。スタブは、プログラムのより「上級」な部分を機能させるのに十分な値をフィードします。スタブを実際の計算または値に置き換えるか、当てはめる時が来るまで。

2
Tom Au