Co oznacza skrót w programowaniu?

Odpowiedzi:

30

Metoda stub to metoda, która zwraca prosty, ale prawidłowy (choć niekoniecznie poprawny) wynik.

Zazwyczaj są one tworzone podczas budowania infrastruktury i nie chcesz teraz tracić czasu na każdą potrzebną metodę. Zamiast tego tworzysz kody pośredniczące, aby wszystko się kompilowało, a automatyczne uzupełnianie IDE wie o metodach, których planujesz użyć.

Innym miejscem, w którym używane są kody pośredniczące, jest kpina podczas testowania. Dostarczasz metody pośredniczące zamiast normalnej zależności poprzez wstrzykiwanie zależności, które zwracają ustalone wyniki, a następnie upewniają się, że kod robi z nimi właściwą rzecz. Izoluje to testowanie od kodu, który próbujesz przetestować, i oznacza, że ​​nie musisz rozpędzać bazy danych, aby uruchomić te testy.

maniak zapadkowy
źródło
3
Nitpick: kody pośredniczące są używane podczas karczowania, a nie podczas kpin. Kpiąc używasz makiet. martinfowler.com/articles/mocksArentStubs.html
Jörg W Mittag
+1 za powyższe, ale chciałbym dodać, że jeśli nie spodziewasz się, że zostaną zastosowane metody pośredniczące, pomocne może być zgłoszenie wyjątków lub spowodowanie błędu. Przykład „NotImplementedException”: msdn.microsoft.com/en-us/library/… commons.apache.org/proper/commons-lang/javadocs/api-release/org/…
Dan Armstrong
6

Być może najlepiej na to odpowiedzieć konkretnym przykładem. Rozważmy przypadek, w którym tworzysz aplikację komputerową. Zdecydowałeś się mieć funkcję o nazwie createMenubar, createToolbara createMainwięc, że konstruktor aplikacja jest schludny i uporządkowany.

Twój główny kod będzie wyglądał mniej więcej tak (ten przykład jest w Pythonie):

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

Dopóki wszystko nie będzie działać, Twoja główna funkcja zawiedzie, więc jak możesz przetestować aplikację podczas programowania? Na przykład, jeśli zaczniesz pracę createMenubar, inicjalizacja zakończy się niepowodzeniem po utworzeniu paska menu, ponieważ nie zaimplementowałeś paska narzędzi ani głównego obszaru GUI.

To gdzie odcinki wejść. Można utworzyć funkcję o nazwie createToolbari createMainktóre spełniają wymóg konstruktora app (mianowicie, że te funkcje istnieją), bez konieczności faktycznie je realizować. Te funkcje to kody pośredniczące:

def createToolbar():
    pass

def createMain():
    pass

Za pomocą tych kodów pośredniczących możesz rozpocząć wdrażanie programu głównego i paska menu, bez martwienia się o szczegóły paska narzędzi lub głównej części programu. W końcu przejdziesz do paska narzędzi i zastąpisz kodeks aktualną funkcją. Na koniec usuniesz kod pośredniczący createMaini zapewnisz mu prawdziwą implementację.

Zauważ, że kody pośredniczące niekoniecznie nie muszą nic robić. Te kody pośredniczące mogą na przykład utworzyć pusty widget kontenera, który konstruktor aplikacji może utworzyć. Chodzi o to, że tworzysz fałszywe funkcje lub obiekty, które wystarczają, aby umożliwić uruchomienie drugiego kodu podczas jego opracowywania. Z czasem zamieniasz kody pośredniczące jeden po drugim, aż aplikacja zostanie zakończona.

Bryan Oakley
źródło
2

„Stub” jest używany w programowaniu „z góry na dół”. Wtedy budujesz swoją aplikację od ogólnej do szczegółowej. W ten sposób użyjesz „kodów pośredniczących” jako „symboli zastępczych” dla konkretnych aplikacji, których nie miałeś czasu zbudować. Często zwracają rzeczy takie jak wartości pozorowane lub losowe do bardziej ogólnej części programu. W porządku, odgałęzienie podaje wystarczającą wartość, aby bardziej „starsza” część programu działała. Dopóki nie nadejdzie czas, aby odcinek został wymieniony lub dopasowany do jego prawdziwych obliczeń lub wartości.

Tom Au
źródło