Що означає заглушка в програмуванні?


26

Я часто чую терміни «заглушка», «заглушка щось виходить», «заглушки» тощо.

Що означає заглушка в програмуванні і звідки походить це слово? У яких контекстах його можна використовувати?


також називається: заповнювач.
Пітер Б

Відповіді:


30

Метод заглушки - це метод, який просто повертає простий, але дійсний (хоча і не обов'язково правильний) результат.

Зазвичай вони виготовляються під час створення інфраструктури, і ви не хочете витрачати час на кожен необхідний метод. Натомість ви створюєте заглушки, щоб все компілювалось, і автоматичне завершення IDE знає про методи, які ви плануєте використовувати.

Ще одне місце, де використовуються заглушки, - це глузування під час тестування. Ви надаєте методи заглушки замість нормальної залежності через введення залежності, яка повертає фіксовані результати, а потім гарантуєте, що код робить з ними правильно. Це виокремлює тестування коду, який ви намагаєтеся протестувати, і означає, що вам не потрібно розкручувати базу даних лише для запуску цих тестів.


3
Нітпік: заглушки використовуються при заглушці, а не при глузуванні. Під час глузування ви використовуєте макети. martinfowler.com/articles/mocksArentStubs.html
Jörg W

+1 для вищесказаного, але я хочу додати, що якщо ви ще не очікуєте, що стерлі методи будуть використані, може бути корисним, щоб заглушки кинули виняток або інакше призвели до помилки. Приклад "NotImplementedException": msdn.microsoft.com/en-us/library/… commons.apache.org/proper/commons-lang/javadocs/api-release/org/…
Dan Armstrong

6

Можливо, це найкраще відповісти конкретним прикладом. Розглянемо випадок, коли ви створюєте настільний додаток. Ви вирішили мати функцію з ім'ям createMenubar, createToolbarі createMainтак , що ваш конструктор додатків доглянутий.

Ваш основний код буде виглядати приблизно так (цей приклад є в python):

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

Поки у вас все не працює, ваша основна функція буде виходити з ладу, тож як ви можете перевірити свій додаток під час розробки? Наприклад, якщо ви почнете працювати над createMenubar, ініціалізація не вдасться після створення меню, оскільки ви не реалізували панель інструментів або основну область графічного інтерфейсу.

Це де пні увійти. Ви можете створити функцію з ім'ям createToolbarі createMainякі задовольняють вимогу конструктора додатки (а саме, що ці функції існують), не маючи насправді їх реалізацію. Ці функції є заглушками:

def createToolbar():
    pass

def createMain():
    pass

За допомогою цих заглушок ви можете почати реалізовувати основну програму та меню, не турбуючись про деталі панелі інструментів чи основної частини програми. Згодом ви перейдете на панель інструментів і заміните заглушку на фактичну функцію. І нарешті, ви виймете заглушку createMainі дасте це справжнє втілення.

Зауважте, що заглушки не обов'язково нічого робити. Наприклад, ці заглушки можуть створити порожній віджет контейнера, який може викласти конструктор додатків. Справа в тому, що ви створюєте фіктивні функції або об’єкти, які роблять достатньо, щоб ваш інший код запускався, поки ви його розробляєте. З часом ви замінюєте заглушки один на один, поки ваша заявка не буде завершена.


2

"Заглушка" використовується в програмуванні "зверху вниз". Саме тоді ви будуєте свою заявку від загальної до конкретної. При цьому ви будете використовувати "заглушки" як "заповнювачі" для конкретних програм, які ви не встигли створити. Вони часто повертають речі, як манекени, або випадкові значення в більш загальну частину програми. Це все в порядку, заглушка подає достатньо значення, щоб зробити більш "старшою" частиною програми роботу. Поки не настане час замінити заглушку або встановити її справжнє обчислення або значення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.