Version 4 · Refactoring-Erweiterung

Komplexe Refactoring-Beispiele: Vorher / Nachher

Dieses Kapitel zeigt reale Legacy-Schnittmuster: Monster-EJB, PL/SQL-Regeln, JMS-Duplikate, fette UI-Controller und Batch-Wiederanlauf. Jedes Beispiel enthält Ausgangscode, Zielcode, Zwischenabsicherung, Entwurfsmuster und fachliche Wirkung.

Startseite
Refactoring Lebenszyklus
Grundregel: Erst Verhalten sichern, dann Naht setzen, dann Struktur verbessern.

Refactoring-Praxisfälle

Java EE / WebSphere MonolithPrio 10

Monster-EJB: Rechnung anlegen

Eine zentrale Stateless Session Bean mischt Validierung, JPA, JDBC, SOAP, JMS, Audit, Rabatte, Fehlerbehandlung und Transaktionssteuerung in einer Methode.

FacadeApplication ServiceRepositoryPolicy/Specification
Öffnen
Oracle / Stored ProceduresPrio 9

Stored Procedure: Mahnlauf-Regeln herauslösen

Ein PL/SQL-Package entscheidet Mahnstufe, Gebühren, Sperren und Historie in einem datenbanknahen Block. Das Refactoring extrahiert Regeln kontrolliert in einen Domain Service.

Golden Master TestSpecificationRepositoryDomain Service
Öffnen
JMS / IBM MQPrio 9

JMS Consumer: doppelte Verarbeitung verhindern

Ein Message Driven Bean verarbeitet Rechnungsereignisse nicht idempotent. Nach dem Refactoring gibt es Idempotency-Key, Retry-Klassifikation und Outbox/Inbox-Nachweis.

Idempotent ConsumerInbox PatternRetry PolicyDead Letter Channel
Öffnen
JSP / JSF / StrutsPrio 8

Legacy UI: Struts Action entkoppeln

Eine Action-Klasse enthält Session-State, Validierung, Berechtigungen, EJB-Aufruf und JSP-Modellaufbereitung. Das Refactoring trennt Controller, Form Validator, Presenter und Use Case.

MVCPresenterForm ObjectFacade
Öffnen
Batch / Scheduler / NachtverarbeitungPrio 9

Batch: restartfähige Verarbeitung schneiden

Ein Shell/JCL-ähnlicher Nachtjob verarbeitet Dateien, Datenbankupdates und Reports in einem Lauf. Nach dem Refactoring gibt es Steps, Kontrolltabelle, Checkpoints und klare Wiederanlaufpunkte.

PipelineCheckpointTemplate MethodRepository
Öffnen
Wie diese Beispiele gelesen werden sollten
  1. Zuerst den Schmerz verstehen: Warum ist der Vorher-Code gefährlich?
  2. Dann das Sicherheitsnetz betrachten: Characterization Test, Golden Master, Inbox, Kontrolltabelle.
  3. Erst danach den Nachher-Code lesen: Welche Verantwortlichkeit wurde wohin verschoben?
  4. Zum Schluss prüfen: Welche Patterns sind wirklich eingesetzt und welcher Teil bleibt absichtlich legacy-nah?
⌂ Cockpit