Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Naming cleanup #1171

Open
20 tasks
RandomTannenbaum opened this issue Nov 18, 2024 · 11 comments · May be fixed by #1210
Open
20 tasks

Naming cleanup #1171

RandomTannenbaum opened this issue Nov 18, 2024 · 11 comments · May be fixed by #1210

Comments

@RandomTannenbaum
Copy link
Collaborator

RandomTannenbaum commented Nov 18, 2024

Momentan haben wir im tool sehr unterschiedliche naming conventions. Dazu gehören zum Beispiel Java-Klassen, Variablen, CSS-IDs und Klassen usw. Mit diesem Ticket soll das Naming im gesamten Ticket vereinigt werden.

Für das naming kann man sich hier orientieren, es sollte jedoch hier ein einheitliches naming dokumentiert werden, bevor man mit dem Ticket beginnt: https://codimd.puzzle.ch/VelTcGoRSRGyd8hFHpadjw#.

Naming conventions

  • Frontend
    • CSS: Kebab-Case
    • Cypress: Testfiles sind test-name.cy.ts,
    • Assets sollen in ihrer Kategorie konsisten sein (z.B. alle /images im Kebab-Case )
    • Alles sonst Angular conventions
  • Backend

Aktzeptanzkriterien

  • Naming-Richtlinien sind im Codi dokumentiert
  • Frontend
    • CSS-Naming ist gemäss oben umgesetzt
    • Alle Angular-Files sind gemäss Convention genannt
    • Alle Angular-Componenten sind Pascal-Case und enden mit Component, i.e. MyCoolComponent
    • Alle Angular-Services sind Pascal-Case und enden mit Service, i.e. MyCoolService
    • Alle Angular-Pipes sind Pascal-Case und enden mit Pipe, der Pipe-Name selber ist lower CamelCase
    • Alle Methoden sind lower Camel-Case
    • Alle Konstanten (analog private final static in Java ) sind upper Snake-Case
    • Alle Enums folgen der Convention von TS
    • Alle Cypress-E2E-Test-Files sind gemäss oben definiert benannt
    • Cypress-Files halten sich an die selber Conventions wie sonst fürs Frontend gelten, soweit möglich
    • Assets sind pro Kategorie konsistent
  • Backend
    • Alle Konstanten sind (private final static) sind upper Snake-Case
    • Alle Packages-Names sind lowercase
    • Alle Klassen-Namen sind Pascal-Case
    • Alle Methoden sind lower Camel-Case
    • Alle Variablen sind lower Camel-Case (Konstanten ausgenommen)
    • Alle Properties sind Kebab-Case
@RandomTannenbaum
Copy link
Collaborator Author

RandomTannenbaum commented Nov 25, 2024

Vorgehen

  • Alle nötigen naming conventions und custom Klassennamen in einem codi erfassen, sowie offizielle styleguides suchen und auch im codi verlinken.
  • Im Backend beginnen und Ordner für Ordner durchgehen. Nachdem ein file angepasst wurde direkt alle references, imports usw. fixen soweit nicht schon von der IDE automatisch gemacht, dann commiten. Wenn ein file angepasst wurde eventuelle zusätzliche namings im Codi erfassen.
  • Jeden abgeschlossenen Ordner im Codi erfassen um den Fortschritt zu tracken. Wenn mitten in einem Ordner aufgehört wird diesen vermerken, sowie das letzte File an dem gearbeitet wurde.
  • Am Ende jeden Tages kurz mit jemand anderem den Fortschritt und die erarbeiteten naming conventions besprechen.
  • Das gleiche im frontend wiederholen.
  • Am Schluss den erstellten styleguide (das codi) im readme verlinken.

@RandomTannenbaum
Copy link
Collaborator Author

Codi mit naming conventions:
https://codimd.puzzle.ch/DWVLjwB8SkaCw0-0LbREWg?edit

@RandomTannenbaum
Copy link
Collaborator Author

Stand 25.11.2024
Für den momentanen Stand des refactorings siehe codi.

@RandomTannenbaum RandomTannenbaum linked a pull request Nov 25, 2024 that will close this issue
@Miguel7373
Copy link
Collaborator

Miguel7373 commented Dec 9, 2024

Todo Frontend Naming Config

  • Dokumentation zu den verschiedenen Tools lesen
  • Bestes Tool für uns auswählen (Codi link & mit begründung)
  • Config für TS schreiben
  • Config für HTML schreiben
  • Config für CSS schreiben
  • Config für custom conventions schreiben
  • Testen, ob jede convention richtig checkt
  • Peer-Review

@Miguel7373 Miguel7373 linked a pull request Dec 9, 2024 that will close this issue
@Miguel7373
Copy link
Collaborator

Stand 9.12.24

Ich habe mich nun für eine reine ESLint Lösung entschieden, da es einfach weniger dependency
sind und wenn auch komplizierter als mit anderen Tools wie Stylelint ist es trotzdem noch im akzeptablen Bereich
Ich habe nun begonnen, die ESLint config für TS Files zu schreiben. Habe aber noch keine gute Möglichkeit gefunden, die Custom Wörter wie KeyResult auf richtige Trennung oder Schreibweise zu testen.

@Miguel7373
Copy link
Collaborator

Miguel7373 commented Dec 11, 2024

Stand 10.12.2024

Ich habe nun weiter an der Config gearbeitet. Ich habe bei HTML und TS die grundlegenden Regeln, die geprüft werden, eingebaut.
Aus irgendeinem Grund dauert der formatter extrem lange.

Still Todo

  • Bei TS muss noch ein weg gefunden werden, wie readonly variablen nicht beachtet werden, da beim check nach camelCase readonly variablen in UPPER_CASE als falsch angesehen werden
  • SCSS Config
  • Bei allen muss noch die Ausnahmen (Keyresult/TeamManagement... https://codimd.puzzle.ch/DWVLjwB8SkaCw0-0LbREWg?edit ) richtig konfiguriert werden
  • Anschauen, wieso der Formatter so lange hat, bis er durchläuft.

@RandomTannenbaum
Copy link
Collaborator Author

Stand 11.12.2024
Das Backend habe ich jetzt fertig bearbeitet und gehe nun zum frontend über.

@Miguel7373 Miguel7373 self-assigned this Dec 12, 2024
@Miguel7373
Copy link
Collaborator

Stand 12.12.2024

Ich habe weiter an der config gearbeitet. Ich habe die Parcing Errors rausgenommen, damit nur noch die Naming conventions angezeit werden. Ebenfalls habe ich es geschafft, dass die readonly variablen nicht mehr als Fehler angezeigt werden, wenn sie in UPPER_CASE sind. Ich habe dann noch an dem id-matcher gearbeitet, damit wir garantieren können, dass die custom Wörter richtig sind. Der regex geht leider nicht mit der i flag da es eine Version der regexe ist, wo es noch kein caseinsensitive supportet (nicht so wie ich es geschrieben habe)

@Miguel7373
Copy link
Collaborator

Miguel7373 commented Dec 17, 2024

Stand 17.12.2024

Ich habe für den regex eine methode geschrieben die es und serlaubt custom wörter zu einem regex umzuwandeln der kebab-case PascalCase camelCase und UPPER_CASE nach der richtigkeit der schreibweise überprüft. Dies habe ich somit im Html und im Ts eingebaut.

Still Todo

  • Fertigstellen der genauen regeln im TS
  • Nochmaliges nachschauen ob es wirklich keine option für css gibt
  • Eventuell nuch mehr tests zum Helper
  • Peer review

@ManuelMoeri ManuelMoeri self-assigned this Dec 18, 2024
@ManuelMoeri
Copy link
Collaborator

ManuelMoeri commented Dec 18, 2024

Tests mit @ DisplayName versehen

Hierbei ist das Ziel das alle Tests die annotation @ DisplayName erhalten. Diese kann dan mit einer genauen beschreibung der Tests abgefüllt werden. Nebenbei soll noch das naming der Tests allgemein überprüft werden, so das es möglich Konsistent ist.

Hier sind alle Ordner der Tests aufgelistet welche diese Annotation erhalten sollen:

  • architecture
  • controller
  • deserializer
  • mapper
    • checkin
    • keyresult
  • models
    • authorization
    • keyresult
  • multitenancy
    • customization
  • security
    • helper
  • service
    • authorization
    • business
    • clientconfig
    • persistence
    • validation
  • util.quarter
    • check
    • generate
      • h2

Alleinstehende files:

  • ForwardFilterTest
  • SpringCachingConfigTest
  • UserKeyGeneratorTest

@RandomTannenbaum
Copy link
Collaborator Author

Stand 18.12.2024
Ich habe das Ticket gestern noch gerebased und heute am frontend weitergearbeitet. Neben den ganzen Cypress sachen, habe ich einen grossteil der components in /components abgeschlossen (siehe codi für genauen Fortschritt).

@nevio18324 nevio18324 self-assigned this Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment