Einer Ihrer Kollegen hat eine Python-Funktion is_valid_email(email:str)
zur Überprüfung von Email-Adressen geschrieben. Die Funktion nutzt Regular Expressions (kurz RegEx), um Muster in String zu finden. RegEx sind ein mächtiges Werkzeug, können aber nur schwer nachvollzogen und gewartet werden, wodurch schnell code-smells ("stinkender Code") entstehen.
Immerhin hat Ihr Kollege daran gedacht, einige Testfälle zu definieren, um die Fähigkeiten seiner Funktion zu überprüfen.
Primär:
- Clean Code, TDD: Die Begriffe Clean-Code bzw. Code-Smell und Refactoring sind verinnerlicht. Für Clean-Code können mindestens DRY, KISS und YAGNI erläutert werden. Der Zusammenhang zwischen Unit-Tests und Refactoring kann erläutert werden.
- Die Funktion soll "möglichst viele" gültige und ungültige Email-Adressen korrekt erkennen. Dazu werden die parametrisierte Testfälle erweitert.
Sekundär:
- Es soll eine weitere Funktion
is_valid_password
entstehen, die überprüft, ob ein übergebenes Passwort den Anforderungen des BSI entspricht.
Wiederholen Sie die folgenden Phasen von Test-Driven-Developement so lange, bis die Ziele möglichst erreicht sind.
- Betreiben Sie Refactoring! Überarbeiten Sie die Funktion
is_valid_email(email:str)
so, dass die Funktionalität erhalten bleibt, aber der Codebesserlesbarerfrei von Code-Smells ist. - Definieren Sie weitere weitere gültige oder ungültige E-Mail-Adressen.
- Implementieren Sie eine Erweiterung der Funktion
is_valid_email(email:str)
so, dass der neue Testfall erfolgreich ist.
- Parametrisierte Tests mit Pytest
- Docstrings in Python
- Artikel zu Clean-Code, zuletzt abgerufen im September 2023
- Katalog Code-Smells
- Katalog Refactoring
- "Mutter aller Email-Regex"
- Sollten Sie sich in Ihrer Freizeit für Emails interessieren, empfehle ich dieses Video zum Thema
- Ebenfalls für die Freizieit: Password Game