Loading...

Your Assumptions Are Wrong

18. Januar 2024
2 Minuten Lesezeit
Beitrag teilen:

Hi,

Deine E-Mail-Validierung ist falsch (wahrscheinlich). Und deine Modellierung, dass jeder Mensch einen Vor- und einen Nachnamen hat, ist ebenfalls falsch.

Als ich in den vergangenen Tagen meine Bookmarks auf der Suche nach einem Artikel zu Project Management in BigTech durchforstet habe, bin ich auf einen alten Artikel von 2010 gestolpert: Falsehoods Programmers Believe About Names .

Ein exzellentes Essay!

Unsere Annahmen sind falsch

Vielleicht hast du schon erlebt, dass nicht jeder Mensch genau einen Vor- und Nachnamen hat. Und vielleicht hattest du schon einen Supportfall, dass sich Namen ändern. Es soll ja Menschen geben, die heiraten 😉

Aber es gibt noch viel außergewöhnlichere Eigenschaften von Namen. Es gibt Namen mit Zahlen. Manche werden in CAPSLOCK geschrieben. Ein Name wird erst Jahre nach der Geburt zugewiesen. Manche Namen sind auch Schimpfwörter.

Ich könnte die Liste von Patrick McKenzie jetzt wiederholen, aber schau doch mal in sein Essay .

Für uns als Entwickler muss aber hängenbleiben: Jegliche Annahme, die wir an Namen stellen, ist falsch. Du solltest beispielsweise folgendes nicht machen:

  • Eine Vor- und Nachnamenspalte haben
  • Die Zeichenlänge von Namen limitieren
  • Das Zeichenset limitieren
  • Einen Unique Constraint setzen
  • Oder irgendeine Form der Validierung auf den Namen anwenden

Deine E-Mail-Validierung ist auch falsch

Hast du schon mal in die Adressspezifikation von RFC 5322 geschaut?

Das hier sind alles korrekte E-Mail-Adressen:

  • long.email-address-with-hyphens@and.subdomains.example.com
  • name/surname@example.com
  • admin@example
  • example@s.example
  • " "@example.org
  • "very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
  • _test@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]

(Auf Wikipedia findest du noch mehr Beispiele)

Ich bin mir ziemlich sicher, dass deine Implementierung nicht alle Beispiele unterstützt.

Der einzig korrekte Weg, eine E-Mail-Adresse zu validieren, ist eine Aktivierungsmail zu schicken.

Wir meinen es gut - aber es ist die Mühe nicht wert

Was müssen wir daraus mitnehmen?

Viele unserer Annahmen sind gut gemeint - aber falsch. Sei dir dessen bewusst. Und berücksichtige das im nächsten Grooming, wenn es wieder darum geht, ein Formular mit Vor- und Nachnamen anzulegen.

Rule the Backend,

~ Marcus

Top