T-Rex: Konfiguration, OOP² oder doch nur Rad² ?

Beitrag lesen

Wie kommst Du auf diese Zahlen?

Die Zahlen sind lediglich Richtwerte die ich immer wieder in Büchern gelesen hab. Außerdem kann ich aus eigener Erfahrung sprechen das 7 Methoden das maximale ist was man noch warten kann. Erhält die Klasse mehr Methoden wird es zunehmend unübersichtlicher. Aber wie gesagt es sind nur Richtwerte.

Auch die Zahl mit Parametern ist nur ein Richtwert. Im Idealfall hat eine Methode keine Parameter. 4 ist das maximum. Ich denke jeder hatte schon Methoden oder funktionen mit > 7 Parametern. In der Methode selbst ist alles mit if vollgepumpt und es gibt massive Probleme beim testen. Außerdem sind solche Fälle auch ein Indiz für ein fehlerhaftes OOP Design. Aber auch hier gibt es natürlich Ausnahmen.

Den Fall den Sven angesprochen hat ist dagegen wieder ein Sonderfall. Wenn du zwei Parameter mit jeweils 4 Testfällen hast, hast du nur 16 Testfälle wenn die Parameter direkten Einfluss aufeinander haben. Wenn du in eine Methode z.B. einen Namen und einen Nachnamen gibts und beide haben jeweils 4 Testfälle, dann hast du 8 Testfälle. Den für die Behandlung des Nachnamen ist es wahrscheinlich unerheblich ob der Name leer ist oder Sonderzeichen enthält. Hast du jedoch z.B. eine Rechnung (parameterA * parameterB) welche nicht 0 sein darf, so haben beide Parameter direkten Einfluss aufeinander und du hast tatsächlich 16 Testfälle.

Ob Javascript, PHP, C++ oder Java das vorgehen ist immer das selbe.

Bei PHP, C++ oder Java kann man sich für gewöhnlich beim Bestehen der Tests auf einem System entspannen, das ist ein großer Unterschied zu JavaScript. Schau Dir z.B. mal an, was jQuery mit Test Swarm hier für einen immensen Aufwand betreibt.

Falsch. Bei Java und C++ muss man für Desktopanwendungen die verschiedenen Systeme auf denen das Ding laufen soll selbstverständlich auch testen. Allein um die verschiedenen Betriebsysteme unter kontrolle zu haben brauchst du schon verschiedene Tests. Aber genau deshalb greift man ja zur OOP. Es gibt eine Schicht die Regelt alle System spezifischen Fälle (sofern von der Programmiersprache nicht selbst übernommen) z.B. Arbeitsspeicher zugriff oder im Fall von Javascript eben Mauszeigerposition. Diese Schnittstellen bekommen "gesonderte" Unittests. Dann hast du pro System was du unterstützen willst einen extra Unittest. Für das eigentliche System brauchst du nur noch einen Unittest und musst es nur noch auf einem System testen.
Deshalb greifen ja viele zu JQuery oder YUI. Die bieten dir eine Funktion die Mauszeigerposition zu bekommen. Du musst dich nicht mehr um die verschiedenen Browser kümmern (zumindest nicht in dem Fall).

Im Falle einer Browserweiche würde das ganze vielleicht so aussehen...

Mit JavaScript hast Du wenig am Hut, oder? Browserweichen sind eine ganz schlechte Idee, das Stichwort lautet Feature Detection

Mein Stichwort lautet "Zweckentfremdung der Sprache". Nenn es wie du willst. Mach es wie du willst. Am Ende hast du eine BROWSERWEICHE!! Und nein Fachwörter entscheiden nicht über Kompetenzen, Kompetenz entscheidet über Kompetenz.

Gruß
Mensch mit Menschenverstand
T-Rex