AW: Rein rhetorische/informative Frage über Variablennamen in PHP
@alterneuling: ja - rischtisch, Variablennamen. (4-10 Fehler auf 100 Zeilen, nicht nur beim Coden, und auch wenn man's weiß ...)
@duddle:
Nach meiner Erfahrung haben Unit-Tests den größten Hebel, solange es um Funktionalität geht (wenn es um Oberflächen/GUI geht, dann natürlich Usability-Tests mit Testpersonen).
Da ist der Stand der Technik heute, dass man eigentlich nicht wettbewerbsfähig ist, wenn man bei neuen Projekten nicht auf diesem Niveau anfängt. Ich kenne natürlich Firmen, bei denen das nicht der Fall oder die Uralt-Legacy-Umgebung kein gescheites Testing-Framework hat (PowerBuilder zum Beispiel ist da bis heute nicht richtig unterstützt). Und das merkt man dann eben alle fünf Klicks lang, dass das mit den Überraschungen so ist wie in den 90ern - heute aber eben nicht mehr akzeptiert. Wer sowas hat, nutzt es weiter, gut. Wenn allerdings jemand etwas auf dem Niveau neu verkaufen will, endet das Vertrauen nach einigen Tagen mit Testversionen schnell, wenn die Fehlerdichte so hoch ist. Wenn dann eben auch Berater als Gutachter/Unterstützer dabei sind, sinken da die Daumen wegen der uneinschätzbaren aber sich andeutendne Risiken schnell (Eisberg-Gleichnis: wenn das hier auch nur 10 Prozent von Ärger sind, den wir jetzt schon sehen ...)
Viele Firmen machen damit so gute Erfahrungen, dass sie in wichtigen Projekten festlegen, dass am Besten zuerst die Testfälle geschrieben werden und dann erst der Soll-Code dazu. Das ist dann das sog. Test-Driven Development (TDD).
Code-Audits - also automatische Bewertungen wie z.B. Einhaltung von Konventionen, max. Zeilenanzahl je Methode, defensives Exception-Handling (nicht alles gleich zur Wurzel durchreichen) - sollte man aktivieren, wenn eine Umgebung wie etwa Visual Studio gleich im Karton hat. Für andere Welten auch verfügbar, da muss man aber wieder mehr Zeit investieren (f. Java etwa: Findbugs oder PMD oder CheckStyle oder alle drei, aber mit welchen Regelsets ...). Und: man muss es managen. Die Regeln müssen für alle Entwickler gleich sein. Das erfordert Meetings, einen Verantwortlichen, Moderation etc. Ist etwas fortgeschrittener. Für Projekte bzw. eigentlich Organisationen, die z.B. höhere CMMI-Level zertifiziert bekommen möchten, aber ab einem bestimmten Grad Pflicht.
Code-Reviews: Für kritischere Codes, bei denen Fehler sehr teuer oder sogar strafrechtlich enden können, sind dann Code-Reviews entweder gut oder wiederum sowieso Pflicht. Hierbei führt der Entwickler in Meetings durch seinen Code, die fachlich kompetenten Teilnehmer haben ihn ebenfalls vorher gelesen/studiert. Und gemeinsam wird entschieden, ob das reif ist oder zuviele Denkfehler oder Wartungsfallen drin sind. Denn: auch wenn z.B. ein Code jetzt gut läuft, ist es ja auch übel, wenn man schon sieht, dass ein Kollege in der Wartung in x Jahrren etwas recht sicher missverstehen wird und z.B. eine Bremssteuerung danach zur Todesfalle mutieren könnte. Das Beispiel zeigt auch für welche Codes man sowas macht: Bankensoftware, an denen Unsummen hängen oder Steuerungssoftware, deren Fehlfunktionen Sicherheitsrisiken realisieren würden. Das macht man selten für die Steuerung eines M-P-3-Players.