Aus Das deutschsprachige Scratch-Wiki

Diese Seite beinhaltet eine E-Learning-Einheit zu den Themen "Refactoring". Dieses Thema wird an Hand eines Projektes behandelt, das zu refactoren ist. Diese Seite dient Lehrkräften und Mentor*innen als Referenz für mögliche Aufgaben - wie diese behandelt und vor- oder nachbereitet werden, ist ihnen überlassen.

Zielgruppe: Diese E-Learning-Serie wurde in ähnlicher Form mit Studienanfänger*innen durchgeführt. Sie ist geeignet für Personen mit geringen Programmierkenntnissen ab etwa 14 Jahren.

Voraussetzungen: Computer, Browser (optimal Chrome), Internetzugang. Wenn Projekte online gespeichert werden sollen auch einen Scratch-Account. Es hilft, wenn die lernende Person bereits erste Erfahrungen mit bockbasierter Programmierung hat.

Hinweis für Selbstlernende: Die Einheiten werden optimalerweise unter Begleitung eines*r erfahrenen Mentor*in durchgeführt. Eine*n Mentor*in findest du bei deinem nächsten CoderDojo, in Schul-AGs oder im Scratch-Forum. Du benötigst optional einen Scratch-Account.

1. Vorbereitung

Einleitung: Softwareentwickler*innen kommen oft in die Situation, dass sie Programme verbessern müssen, die alt sind, die irgendein*e Praktikant*in mal geschrieben hat oder die sie selber geschrieben haben, als sie noch nicht so viel Erfahrung hatten. Ein Programm nehmen und es verbessern heißt "Refactoring". Dabei wird der Code eleganter gemacht, die Architektur der Software kann verbessert werden, das Programm kann auch ressourcenschonender gemacht werden. Je nachdem, welches Ziel man verfolgt, wird das Resultat anders aussehend – z.B. ist der schnellste Code nicht immer der eleganteste!

In dieser Aufgabe übst du, wie du gegebenen Code eleganter machst. Dabei übst du algorithmisches Denken und fremden Code nachzuvollziehen.

Aufgabe: Remixe das Projekt "Bananenspiel" (Original von Scratch-User Flox1210): https://scratch.mit.edu/projects/220090548/ und spiele das Spiel.

2. Die Untersuchung

Aufgabe: Untersuche den Code: Welche Figuren gibt es? Was machen diese? Welche Events lösen welchen Code aus?

Tipp: Mach dir Notizen bzw. male ein Diagramm.

Tipp: Welche verschiedenen Schwierigkeitsstufen soll es geben, und wie unterscheiden sich diese?

3. Die Recherche

Aufgabe: Recherchiere im Scratch-Wiki-Artikel Klonen, wie die Klonen-Funktion bei Scratch funktioniert. Recherchiere im Scratch-Wiki-Artikel Senden, wie die Senden-Funktion bei Scratch funktioniert.

4. Der Plan

Aufgabe: Mach dir einen Plan, was du alles refactoren könntest, um den Code möglichst elegant zu machen. Also: Wie kannst du doppelten Code vermeiden? Wie kannst du Parameter und Variablen, Bedingungen, Klone und Funktionen geschickt nutzen?

Tipp: Könnte man das Management der Schwierigkeitsstufen vereinfachen? Z.B. mit einer Variable?

Tipp: Schachtle Schleifen und Bedingungen geschickt, um doppelten Code zu vermeiden. Wann ist doppelter Code für die Funktionalität des Programmes notwendig?

Tipp: Bei Scratch wird Code konkurrent ausgeführt, wenn beider Code auf dasselbe Ereignis reagiert. Wenn dabei noch Timer verwendet werden, ist doppelter Code manchmal notwendig. Z.B. Hier:

Konkurrenter-code.png

Hier wird die Bedingung, die tested ob Bananas2 berührt wird, wiederholt, weil der Timer im rechten Skript sonst alles andere blockieren würde, was aber "gleichzeitig" bzw konkurrent passieren muss. Sonst hakt das Spiel!

Tipp: Gibt es Code der nie ausgeführt wird?

5. Das Überarbeiten

Aufgabe: Refactore dein Spiel, Schritt-für-Schritt. Z.B. Ersetze erst doppelten Code in einer Figur durch eine Funktion. Implementiere dabei keine Funktioalität, die das Original-Spiel nicht auch hat/ haben soll.

Tipp: Teste nach jedem Schritt, ob dein Programm funktioniert.

Tipp: Lösungsvorschlag: https://scratch.mit.edu/projects/435664085/

6. Besser geht's gar nicht?

Aufgabe: Schau dir refactored Spiele der anderen an (vielleicht gibt es dafür in deiner Klasse ein Studio oder du schaust dir die anderen Remixe des Original-Projektes an) und reflektiere. Was haben sie anders gemacht als du? Was denkst du, ist die elegantere Lösung? Haben die anderen Lösungen auch Vorteile? Refactore dein Spiel erneut.

7. Kreativ werden

Optional: Individualisiere das Spiel, wie es dir gefällt und verbessere die Funktionalität!



Code zum Einbinden ins Forum:
[wiki=de:Projekt: Aus alt mach neu]Projekt: Aus alt mach neu[/wiki]

Kategorie:En-Link

Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.