Avatar von miranto
  • miranto

255 Beiträge seit 02.04.2009

Scheinalternativen

Das Beispiel überzeugt mich nicht, weil die konventionelle Variante mit Fehlerbehandlung (absichtlich?) sinnlos kompliziert ausprogrammiert wurde.

Meine Alternative wäre (nicht ausprobiert):

public @NonNull User changePassword(@NonNull Username username, @NonNull Password oldPassword, @NonNull Password newPassword) { User user = userRepository.find(username); if (user != null && user.isCorrectPassword(oldPassword)) { try { user.changePassword(newPassword); userRepository.update(user); return user; catch (DatabaseException e) { throw new ServerException("Password could not be changed", e); } } else { throw new InputException("ungültiger Benutzername oder falsches Kennwort"); } }

Die Verantwortung für die Übergabe korrekter Parameterwerte trägt hier der Aufrufer; jeweils ein Run-Time-Exceptiontyp reicht für Eingabe- und Serverfehler; und Fehler protokolieren darf grundsätzlich nur der, der die Exceptions schlussendlich fängt und behandelt.

Jetzt ist mir schon klar, dass ein „einfaches“ Beispiel gewählt wurde, um die neue Methode verständlich beschreiben zu können. Aber vor so einer Beschreibung müssten dann überzeugende Argumente geliefert werden, warum man sich überhaupt damit beschäftigen sollte.

Bewerten
- +