Child pages
  • ST2-Workshop 26.04.2021


ST2-Workshop 26.04.2021

In diesem Workshop geht es um praktische Übungen zum Thema SOLID und Clean Code. Dies ist auch der Gegenstand des Meilensteins M1, der heute vorgestellt wird. 

Agenda

  • Fragen zu den Inhalten (SOLID)
  • Impuls zu Clean Code (Bente)
  • Übungen zu beidem (siehe unten)
  • Ergebnisdiskussion
  • Vorstellung M1

Ende: heute spätestens 15:00. 

Impuls zu Clean Code

Das Video zu Clean Code ist leider nicht fertig geworden. Daher gebe ich Ihnen die Einführung als Inhaltsimpuls im Zoom. Sie können in einer provisorischen Script-Version mitlesen: https://ilias.th-koeln.de/goto.php?target=file_1854728_download&client_id=ILIAS_FH_Koeln

(Die Inhalte zu den SOLID Principles liegen alle als Video vor und sind auf der ST2-Seite im Zeitplan verlinkt.)

Übungen

Unter https://git.st.archi-lab.io/students/st2/ss21/exercises/textadventure finden Sie ein Repo mit Beispielcode, das Sie sich clonen können. Dies gilt es zu analysieren, verbessern und erweitern. Den Hintergrund stelle ich mündlich vor. Bitte gehen Sie in Kleingruppen nach Discord und machen die Übungen. Arbeiten Sie im Team, und diskutieren Sie den Code!

Folgende Aufgaben sollten Sie bearbeiten: 

1) Clean-Code-Analyse

Warm-up: Um sich mit Clean Code vertraut zu machen, suchen Sie doch mal, ob Sie für jede Regel einen Verstoß finden. (Bitte nur einen, es geht nicht um das Bashing des Codes, sondern darum, dass Sie sich mit den Regeln vertraut machen. 

1.Meaningful names

2.Comments only where necessary

3.Keep your methods small

4.No side effect in a method

5.Only 1 level of abstraction

6.Stepdown rule

7.Proper error handling (exceptions)

Clean Code Regelmöglicher Verstoß
1. Meaningful nameswelche Variable würden Sie umbenennen?
2. Comments only where necessarySind welche zu viel? Wo fehlen Ihnen welche?
3. Keep your methods small... die ist einfach ...
4. No side effect in a methodGibt es irgendwo Seiteneffekte im Code?
5. Only 1 level of abstractionSieht man irgendwo verschiedene Abstraktions-Level direkt nebeneinander?
6. Stepdown ruleWenn Sie als erstes mal die Riesenmethode in Main zerteilen würden, schafft man es, die Stepdown Rule anzuwenden?
7. Proper error handling (exceptions)Wo im Code würden Exceptions helfen?

2) Funktionale Erweiterung

Das Text Adventure setzt die Aufgabenstellung (siehe Readme des Repos) eigentlich nicht so richtig um. An welcher Stelle?

Was müssten Sie (grob) im Code ändern, damit Sie die Aufgabenstellung richtig umsetzen? Überlegen Sie sich ein Feature, das Sie hinzufügen möchten (oder das Sie entsprechend der Aufgabenstellung implementieren möchten). 

3) SOLID - Single Responsibility Principle für Entities

Der Code besteht im Wesentlichen aus einer großen Methode. Diskutieren Sie ein geeignetes logisches DM, um den Code in Entities aufzuteilen. Beachten Sie das Single Responsibility Principle. 

4) Open-Closed / Interface Segregation Principle

Designen Sie die Methoden für Ihre Entities - gern direkt als Interfaces. Geben Sie den Interfaces passende Namen (Role Interfaces).