Moin!
Im Gegenteil zu T-Rex möchte ich Dir für Deine ausführlichen und für mich teilweise inspieriend aufschlussreichen Ausführungen danken.
Zwei Fragen hätte ich:
- In einem anderen Posting hast Du den Erfahrungswert erwähnt, dass meist zu viele Methoden in einer Klasse wohnen. Darf ich das pauschal auf die Lösung mehr Klassen mit weniger Methoden münzen?
Wenn eine Klasse viele Methoden hat, dann besteht zumindest der Verdacht, dass sie zuviele verschiedene Sachen tut. Es wäre dann zu untersuchen, ob diese Menge an Methoden gerechtfertigt ist, oder ob sich die Klasse nach thematischen bzw. funktionalen Aspekten aufteilen lässt.
Es gibt ein PHP-Tool, welches eine statische Codeanalyse vornimmt und anhand von (anpassbaren) Regeln gewisse Konstrukte anmeckert: PHP Mess Detector
Der Grenzwert für die Anzahl von Methoden einer Klasse liegt bei 10.
- Gehen wir mal von einer hinreichend komplexen JavaScript-GUI aus. Die Situation scheint mir hier wg. der Benutzerinteraktion / Events / Browserunterschieden zunächst schwieriger. Zentrale Bestandteile lassen sich dann nur über Fernsteuerungen wie z.B. Selenium automatisiert testen?
Selenium setzt an der kompletten Applikation an und kann an dieser Stelle das korrekte Funktionieren testen. Solche Tests sind allerdings aufwendig zu pflegen, weil schon simple Veränderungen an der Oberfläche die Tests zum Scheitern bringen können. Das kann man über Abstraktionen etwas abpuffern, erzeugt sich damit allerdings wieder eine Schicht, deren korrektes Funktionieren man testen muss.
Unit-Tests testen im Idealfall nur exakt eine PHP-Klasse. Es ist allerdings schwierig, in ein bestehendes System nachträglich Unit-Tests zu integrieren, ohne dabei heftige Widerstände durch suboptimale Strukturen überwinden zu müssen. Das notwendige Setup für einen Test kann dabei durchaus so komplex werden, wie die gesamte Applikation - und das dann pro Klasse!
Wenn das Testen von Anbeginn berücksichtigt wird, hat man es viel einfacher. Und in der Regel programmiert man dann auch bessere Interfaces - und vor allem kann man schlechte Klassenstrukturen ohne große Bedenken, etwas unbemerkt kaputtzumachen, umbauen.
- Sven Rautenberg