Gibt es einen Begriff für nicht implementierten Code, der geschrieben wurde, damit jemand anderes ihn ausfüllt?


91

Manchmal wird dem Programmierer in einer Programmierübung, bei der Erstellung von Boilerplates, bei der Implementierung von Führungsschienen für die Aufgaben eines Junior-Programmierers usw. nicht implementierter Code angezeigt, und er wird aufgefordert, "die Lücke auszufüllen". Zum Beispiel ein Komponententest, der kompiliert werden kann, aber fehlschlägt, oder eine Klassendeklaration mit leeren Methoden.

Gibt es einen gemeinsamen Begriff für diese Praxis?


Nicht genau das, wonach Sie fragen, aber verwandt. Wenn es auch Testskripte gibt, die zeigen, was von Ihrem Code erwartet wird, wird dies als Test Driven Development bezeichnet.
AJFaraday

32
Für wen auch immer das Votum lautete: Sicher, "nenne dieses Ding" könnte keine besonders interessante Frage sein. Diese Frage hat jedoch eine objektive Antwort, die nicht in erster Linie auf Meinungen beruht. Als Beweis präsentiere ich meine Antwort unten.

3
Ich würde sagen "Schreckliche Codierungspraxis."
Euphorischer


3
"Übung für den Leser" scheint der Lehrbuchansatz zu sein, wenn es um die Fehlerbehandlung geht.
Phil Lello

Antworten:


177

Sie beziehen sich auf einen Stummel oder ein Skelett :

Stub

Dies ist normalerweise eine Methode oder Funktion mit einem größtenteils leeren Text, der einfach einen Dummy-Wert zurückgibt, damit der Code kompiliert wird.

Skelett

Dies ist eine Methode, bei der ein allgemeiner Algorithmus implementiert ist, einzelne Teile jedoch nicht implementiert werden. Dies können leere Codeblöcke oder Referenz-Stub-Methoden (siehe oben) sein, die eventuell Unteraufgaben ausführen. Dies ist ein guter Weg, um ein Software-Design für einen Junior-Programmierer auszudrücken, der möglicherweise mit dem größeren Entwicklungsaufwand zu kämpfen hat, oder um sicherzustellen, dass der Algorithmus korrekt ist, bevor zu viel Zeit in die Details auf niedriger Ebene investiert wird.


Die Praxis der Verwendung dieser Codeelemente würde als Stubbing oder Erstellen eines Code-Skeletts bezeichnet .


3
Obwohl mir Ihre Begriffe besser gefallen, denke ich, dass der Begriff "Gerüst" in Ruby on Rails dasselbe Konzept hat.
Dcorking

Ich dachte auch, Stub sei das richtige Wort dafür, war mir aber nicht sicher, weil ich bei meiner Arbeit von anderen zurückgeschubst wurde. Danke.
Brandon Arnold

Es ist ein "Stummel", wenn es in einem akademischen Kontext gemacht wird. In einem professionellen / kommerziellen Kontext handelt es sich um "technische Schulden".
Donnerstag,

10
@aroth es ist keine technische Schuld, wenn der Code nicht funktioniert - es muss implementiert werden. Technische Schulden implizieren schlecht geschriebenen Code, der letztendlich in einer Produktionsumgebung verwendet wird, was bedeutet, dass erhebliche Anstrengungen erforderlich sind, um eine korrekte Umgestaltung vorzunehmen. Ein Stub hätte idealerweise einen fehlerhaften Testfall, daher muss er implementiert und getestet werden, bevor er in Produktion geht.

2
@BrandonArnold: Wenn Sie mit Ihren Colleges sprechen, sollten Sie Wörter verwenden, die sie verstehen. Es sei denn, Sie sind der Chef.
Stig Hemmer

42

Ich habe gesehen, wie der Begriff " Stummel " verwendet wurde.

Ich glaube zum Beispiel, dass Eclipse automatisch einen Kommentar einfügt

String getName() {
    // TODO: Auto-generated method stub
    return null;
}

in seine berüchtigten automatisch erzeugten, gut, Stubs.

Beachten Sie auch die Verwendung des Begriffs „Stub“ im Zusammenhang mit Unit-Tests .


2
"// TODO: Automatisch generierter Methodenstub", denke ich.
immibis

Auf jeden Fall nützlich, um das zu wissen. . .
Brandon Arnold

17

In Visual Studio haben Sie beim Schreiben von Code Intellisense die Option "Neuen Methodenstub generieren". Wenn Sie diese Option auswählen, generiert Visual Studio einen Code-Stub bzw. ein Code-Skelett genau so, wie Sie es beschrieben haben.

Microsoft bezeichnet dies als Stub, daher würde ich diese Stubs auch als Stub bezeichnen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.