LU07.A12 - Refactoring im eigenen Projekt

Refactoren Sie eine echte Stelle in Ihrer Flask-Applikation und sichern Sie dabei das Material, das Sie im Portfolio für D1I und D1A brauchen.

Detaillierte Aufgabenstellung

Teil 1: Refactoring (D1I)

  1. Suchen Sie in Ihrem Projekt die längste Route oder die Funktion mit den meisten Verzweigungen.
  2. Schreiben Sie mindestens drei Tests, die ihr heutiges Verhalten festhalten. Bei einer Route: Statuscode und die entscheidenden Inhalte der Response.
  3. Wenden Sie mindestens drei Techniken aus LU07c an, davon eine funktionale aus LU07d.
  4. Ein Commit pro Technik, Commit-Message mit dem Namen der Technik.
  5. Ziel: Die Route enthält am Ende Request-Verarbeitung und Response, die Berechnung liegt in pure Funktionen ausserhalb.

Teil 2: Optimierung (D1A)

  1. Suchen Sie eine Stelle, an der es teuer werden kann: eine Suche in einer Liste, eine verschachtelte Schleife, eine Datenbankabfrage innerhalb einer Schleife, eine wiederholte Berechnung.
  2. Erzeugen Sie realistische Testdaten (nicht fünf Zeilen) und messen Sie mit timeit oder cProfile.
  3. Setzen Sie eine Massnahme aus LU07g um, messen Sie nach und prüfen Sie das Ergebnis mit assert.
  4. Begründen Sie die gewählte Datenstruktur und nennen Sie ihren Preis.

Abgabe

  • Vorher/Nachher als git diff oder Screenshot aus der Commit-Historie
  • Testdatei und Ausgabe des grünen Testlaufs
  • Messwerte vorher und nachher mit Angabe der Datenmenge
  • Ein Abschnitt Reflexion: Was war schwierig? Welche Technik hat am meisten gebracht? Was würden Sie beim nächsten Mal anders machen?

Machen Sie das jetzt und nicht am Schluss. Die Commit-Historie lässt sich nachträglich nicht erfinden, und ohne Vorher-Zustand gibt es keinen Vorher/Nachher-Nachweis. Genau das verlangt das Portfolio (LB02) für D1I und D1A.


© Kevin Maurizi