Skip to content

Guidelines

Christian Schwarz edited this page Dec 1, 2017 · 4 revisions
  • wenn Collections/Arrays zurückgegeben werden, dann nur als Kopie

    -> vermeidet Korrumption des internen Zustands


  • Nachrichten-Objekte sollen keine enthalten Logik enthalten

    -> Logik gehört in die Bussines-Schicht, das vermeidet das eine Problemstellung in unterschiedlichen Layern gelöst wird (siehe. SRP)


  • klare Trennung in Abstraktionsschichten

  • Annotation aller Felder/Parameter/Return-Values mit @NonNull / @Nullable

  • keine Methodenaufrufe als Methodenparameter

    -> bessere Wartbarkeit

new XySettings(oldxySettings.getSubscriptionsMap(), oldXySettings.getFooBarXySettings(), metadata.getId());

vs

   new PushSettings(subscriptions, fooBarSettings, id);

  • Was/wie soll in der Lib dokumentiert werden?

    -> JavaDoc an allen Typ- , Feld-, und Methodendeklarationen


  • Wie wird mit Dependencies der Lib umgegangen

    -> Shading vs. Required-On-Classpath


  • Tests in JUnit 5 und Assertions mit AssertJ

  • Logging von IO Backends <-> Lib

    -> via Log-Callback das der Lib-Instance übergeben werden kann


  • Umgang mit Kommunikationsfehlern

    -> fehlerhafte Daten frühzeitig erkennen und verwerfen um nicht das DomainModel zu korrupieren


  • CodeStyle-Methoden:
% of methods LOC
90% max. 10
8% max. 20
2% max. 100
-> Lesbarkeit SRP

  • CodeStyle-Klassen/Enums:
% of types LOC
90% max. 300
8% max. 500
2% max. 1000
-> Lesbarkeit SRP

Clone this wiki locally