Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Dies Checkliste mit all ihren Regeln bildet einen Styleguide für das Erstellen von Modellen. Die Ziele sind:

  • Möglichst klar strukturierte Modelle

  • Möglichst einfache Lesbarkeit

  • Bekannte Muster antreffen und sich in anderen Modellen zuhause fühlen

Entitäten

  • Haben alle Klassen eine (Guid) Id?

  • Haben allen Klassen

    • eine Caption und PluralCaption für

    Deutsch und Englisch
    • die verwendeten Sprachen?

    • einen PluralName?

  • Haben alle Text-Felder eine Länge definiert?

  • Haben alle Felder eine Caption für Deutsch und Englischdie verwendeten Sprachen?

  • Haben alle Klassen Default-Sortierungen

  • Sind alle nötigen (unique) Indexes definiert worden?

  • Sind die Required-Felder entsprechend definiert?

  • Sind alle Relationen zwischen den neuen und zu den bestehenden Klassen definiert?

  • Zeigt ein Blick in ein DB Tool die erwarteten Felder? Fehlen welche oder sind welche zu viel in der DB? Stimmen Sind alle Namen sinnvoll?

  • Code: Werden die Elemente in der Reihenfolge Classes, Paths, Properties definiert?

Ansichten

  • Haben alle Klassen mindestens ein Title-Layout?

  • Reichen die Informationen aus dem Title-Layout aus um das Objekt klar zu identifizieren?

  • Haben alle Klassen die in einer Liste angezeigt werden mindestens ein List-Layout?

  • Reichen die Informationen in den List-Layouts aus um die Objekte zu identifizieren und um die wichtigen Vergleiche zwischen den Objekten anzustellen?

  • Haben alle Klassen für die ein Detail angezeigt wird mindestens ein Detail-Layout?

  • Sind die Informationen im Detail-Layout sinnvoll sortiert und gruppiert?

    • wichtige Infos zuerst?

      • Sind zusammengehörige Infos in nahe beieinander?

      • Falls zu viele Infos für einer Seite, Tabs eingesetzt?

      • Sind die Detail-Layout im Vergleich mit anderen Detail-Layouts konsistent beschriftet und aufgebaut?

      • Werden je nach Status/Datenlage unnötige Felder ausgeblendet?

      • Sind nur dort Captions definiert wo es auch wirklich nötig ist?

      • Werden wo möglich bestehende Captions/PluralCaptions von Klassen verwendet?

  • Code: Werden die Layouts in der Reihenfolge Title, List, Detail definiert?

Regeln für

...

Codierung

Reihenfolge in der Builder Datei

Bitte die folgende Reihenfolge beachten:

  1. AddClasses

  2. AddPaths

  3. AddProperties

  4. AddLayouts - wo dies benötigt wird

Code Style

Builder wird im stellt ein Fluent-API erstelltzur Verfügung. Für die Bessere Lesbarkeit

  • Builder.Add.Xxx... Add mit auf der Builder Zeile

    • Danach weitere Enrichments auf neue Zeile

  • Reihenfolge Enrichments Daten Nahe am : DB wichtiger und obenrelevante Einstellungen wichtiger darum zuerst.

    • Eher Oben

      • Id

      • Transient

      • IsNotNullable

      • Default

    • Eher runter

      • Visibility

      • Captions

        • Immer gleiche Reihenfolge der Sprachen - konsistent z.B. 1. en 2. de

  • keine doppelte Leerzeilen. Wenn nötig evtl. noch Kommentar über Abschnitt

  • Wann immer möglich keine eigenen Parser verwendet. Stattdessen immer die vorhandenen Builder-Methoden für Expressions verwenden. Fehlende Methode melden. Falls ein Parser verwendet werden muss, immer den “Strict”-Mode verwenden!

AddClasses

...

  1. HauptKlasse

  2. Liste von Enumns

...

(…)

Hier werden die Klassen in der folgenden Reihenfolge definiert

  • normalen Klassen

  • Enum-basierten Klassen

definiert.

AddPaths(…)

Add.PathRelation Relation -> fügt Relation Property + Path ein

Add Properties

-Properties (Hin- und Rückrichtung) und indirekt einen Path ins Model ein. Falls Relationen mit Daten-Ownership (Cascading) daherkommen, dann solle die Relation in der Klasse definiert werden, welche die Daten besitzt.

AddProperties(…)

  • MetaType.Text immer mit Länge

  • Reihenfolge - Alle nacheinander

    1. Properties, CalculatedProperties

    2. Actions, Sorts, Index

    3. Breadcrumbs

  • Falls Properties für mehrere Klassen definiert werden Kommentare für Abtrennung verwenden:

    Code Block
    // Person
    Elements.Person.Add("Name", MetaType.Text, 100)
    ...
    
    // Addresse
    Elements.Adresse.Add("Strasse", MetaType.Text, 100)
    ...

AddLayouts(…)

  • Reihenfolge der Layouts

    • Title

    • List(s)

    • Detail(s)

  • In Layouts keine zusätzlichen Core-Elemente definieren (Properties, Relations, Actions)

  • In C# zur Sicherhet immer die klassische Form anwenden:

    Code Block
    using(var layout = …))
    {
      layout.Add.Link(…)
    }
  • Wenn das Layout in einem separaten Builder erstellt wird immer die generierten Metadaten verwenden.