JaBudget

Dies ist ein Projekt mit dem ich unterschiedliche Konzept ausprobiere. Der Fokus liegt nicht auf viel Funktionalität sondern auf dem Testen von Konzepten.

JaBudget ist eine Anwendung, die es einem erlaubt, seine Finanzen zu verwalten. Das modulare erweiterbare Konzept erlaubt es, mit einem einfachen Haushaltsbuch lokal zu starten und über Erweiterungen nach den eigenen Ansprüchen und Vorlieben zu einer ausgewachsenen web-basierten Finanzverwaltung zu kommen.

Grundlegende Entwicklungskonzepte

  • Methoden geben nie null zurück, außer es ist explizit spezifiziert ("MAY RETURN null").
  • Parameter dürfen nie null sein, außer es ist explizit spezifiziert ("MAY BE null"). Im Sinne eines fail fast können die Parameter geprüft werden und dabei gegebenenfalls eine IllegalArgumentExcpetion (IAE) geworfen werden. Anmerkung: Es wird bei der Prüfung keine NullPointerException (NPE) geworfen. NPEs signalisieren Fehler im Code des Aufgerufenen (der z.B. nicht geprüft hat, ob der potentielle null-Wert nicht null ist, IAEs signalisieren Fehler des Aufrufers (der z.B. null an einer Stelle übergibt, an der dies nicht erlaubt ist).

Schichten / Modul-Abhängikeiten

  • domain definiert die Business-Domäne
  • serialization importiert und exportiert alle domain-Objekte
  • repository persistiert domain-Objekte im laufenden Betrieb
  • service
    • erhält von repostiory die domain-Objekte
    • enthält die Geschäftslogik
    • kann über serialization die Domäne lesen und schreiben
  • spring-rest veröffentlicht die aus service erhaltenen domain-Objekte per REST
  • vaadin-spring veröffentlicht die aus service erhaltenen domain-Objekte als Web-UI
  • starter ist die Spring-Boot-Applikation, die spring-rest und vaadin-spring antreibt.

Dokumentation

Für Felder wird das Java-Doc nur an an den Getter geschrieben. Es wird nicht an die Deklaration geschrieben, auch wenn dann Tools wie JAutoDoc die in die getter und setter übertragen könnten, da es keine Wiederholungen und Neugenerierungen geben soll. Es wird nicht an den Setter geschrieben, da dieser nicht immer vorhanden ist, und wenn er vorhanden ist, soll es keine Wiederholungen geben.

Bei Konstruktoren, die Felder setzen, die Getter besitzen, wird der Parmeter nicht dokumentiert, da die Dokumentation beim Getter ist.