 |
(15.04.04 21:10)
In seinem Artikel Extreme Programming Considered Harmful for Reliable Software Development unterzieht Gerold Keefer XP einer kritischen Betrachtung. Obwohl dieses Papier bereits vor einiger Zeit veröffentlicht worden ist, wird darüber noch immer rege diskutiert. Keefer wirft in seinen Betrachtungen durchaus interessante Fragen auf, doch in einigen Punkten ist er schlicht auf dem Holzweg. Zum Beispiel wenn er auf Seite 5 im Kapitel Dubious Values and Practices schreibt:
The practice of refactoring: Hand in hand with the “embrace change”-value goes the practice of refactoring: After initial coding the code gets beautified and the design improved. Although it is a good idea to keep source code as readable as possible and the design sound, there is not much point in doing afterwards what can be done from the start. Considering the fact that Extreme Programming requires a functioning unit test suite all the time, refactoring will lead to considerable extra effort in adapting this test suite. Moreover, any code change is an opportunity for error injection.
Bei allem Wohlwollen, aber diese Einschätzung scheint mir aus mehreren Gründen falsch. Erstens, geht es bei Refactoring nicht darum, den Code um der Ästhetik Willen oder aus Gründen der Selbstverwirklichung zu überarbeiten, nur damit alles noch etwas schöner wird, wie Keefer mit der Formulierung "the code gets beautified" zu implizieren versucht. Es geht vielmehr darum, den Code in guter Form zu halten, damit nötige Änderungen und Erweiterungen nicht dazu führen, dass unsere Software zu einem Software-Slum wird. Zweitens, wächst das Verständnis für eine Problemstellung und seine Lösung (hoffentlich) im Verlaufe der Arbeit am Code; iterativ und inkrementell heisst die Devise, die dem menschlichen Problemlöseverhalten ideal Rechnung trägt. Keefers Aussage, es mache keinen Sinn, nachträglich zu tun, was man von Anfang tun könne, unterstellt, dass Refactoring nur nötig wird, weil man zuvor schludrig gearbeitet hat. Das ist Unsinn und verkennt die Idee von Refactoring, ja pervertiert sie gar. Drittens, fällt Keefers Bemerkung, dass XP zu jeder Zeit eine funktionierende Unit-Test-Suite verlange, was zu erheblichen Mehraufwänden aufgrund nötiger Anpassungen an den Tests führe, genau in jene Kategorie von Aussagen, die gerne dann ins Feld geführt werden, wenn es darum geht, das Fehlen von Tests zu rechtfertigen. Für einen, der wie Keefer von sich behauptet, systematisch zu testen, ist das eine recht seltsame Aussage. Ja, Testen ist mit Aufwand verbunden, aber wir schreiben unter anderm ja auch genau deshalb automatisierte Tests, um Fehler durch nachträgliche Änderungen sofort zu entdecken und damit die Qualität der Software im doppelten Sinne zu erhalten. Eben weil wir uns bewusst sind und damit umzugehen wissen, dass jede Änderung am Code auch eine Gelegenheit ist, Fehler einzuschleusen.
Leider gibt es zu Keefers Artikel noch mehr zu sagen, so dass an dieser Stelle noch das eine oder andere in dieser Sache zu lesen sein wird. Bis dahin: Happy Testing - Happy Refactoring!
-nemo :-)
Über diesen Artikel diskutieren.
|
 |