Sven Rautenberg: Konfiguration, OOP² oder doch nur Rad² ?

Beitrag lesen

Moin!

Mal von Getter und Setter Methoden abgesehen sollte eine Klasse an die 7 Methoden haben. Eine Methode wiederum sollte an die 4 Parameter haben.

Wie kommst Du auf diese Zahlen?

Warum 7 als Zahl der Methoden ein anzustrebender Wert sein soll, entzieht sich meiner Kenntnis. Natürlich wäre es doof, wenn man fünf Klassen mit je einer Methode hat, wenn man auch fünf Methoden in einer Klasse haben könnte. Das kann aber keine grundsätzliche Regel sein, es hängt vielmehr von dem ab, was man damit erreichen will.

Die Anzahl von 4 Parametern pro Methode würde ich hingegen als absolut nicht empfehlenswert bezeichnen.

Eine gute Methode hat null Parameter.

Unumgänglich ist meist ein Parameter.

Bei zwei Parametern wird's schon kritisch, denn die Zahl der Testfälle steigt: Jeder mögliche Wert für den ersten Parameter kann mit jedem möglichen Wert für den zweiten Parameter kombiniert auftreten und muss getestet sein. Wobei "möglicher Wert" natürlich zusammenfassbar ist: Ein Username zerfällt vermutlich in die Bereiche "Leerstring bzw. zu kurz", "korrekt", "zu lang" und "ungültige Zeichen" - also vier Testfälle. Kombinier das mit einem zweiten Parameter, der auch "nur" vier Fälle hat, dann muss die Funktion mit zwei Parametern schon Tests für 16 Fälle kriegen.

Drei Parameter sind dementsprechend schon gar nicht mehr schön.

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.

Es gibt auch Unit-Test-Frameworks für Javascript. Aber da bin ich kein Experte.

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

Abgesehen davon hat T-Rex die Dependency Injection, die ich beschrieb, nicht korrekt in Javascript umgesetzt. Ich würde mir allerdings auch nicht anmaßen, zu OOP mit Javascript kritische Beiträge zu schreiben, ich kenne Javascript dazu nicht gut genug, um die mit dieser Sprache vernünftigen Ansätze anwenden zu können.

Mir würde aber auch nicht einfallen, warum man den Code von T-Rex so in PHP programmieren wollen würde, selbst wenn's im Browser ginge.

- Sven Rautenberg