Modul #2 - Wiederverwendung in C#

Hallo und willkommen auf deinem Weg zum professionellen C# Entwickler!

Was unterscheidet den Quellcode einer sehr simplen Einsteigeranwendung (wie zum Beispiel der Taschenrechner aus meinem Einsteigerkurs) von komplexeren Anwendungen?

Ein wesentlicher Unterschied ist die pure Masse an Quellcode. Je komplexer eine Anwendung wird, um so mehr Quellcode musst du erstellen! Je mehr Quellcode du erstellst, desto länger brauchst du für die Entwicklung und die Pflege. Dies beinhaltet, dass die Strukturierung des Quellcodes immer wichtiger wird, weil du dich ansonsten schon wegen der Masse nicht mehr zurecht findest.

Was du mit diesem Modul erreichen kannst

Ging es im ersten Modul meiner Ausbildung zum “Junior” C# Entwickler noch darum überhaupt erstmal ein ausführbares Programm zu erstellen, lernst du in diesem Modul, wie du möglichst schnell und effizient eine komplexere Anwendung erstellen kannst.

Dieser Kurs wird dich in die Lage versetzen, dass du in einem Team von professionellen C# Entwicklern deine erste praktische Erfahrung sammeln kannst. D.h. wenn du den Kurs durcharbeitest und die enthaltenen Übungen machst, bist du beispielsweise in der Lage dich wenigstens als Praktikant zu bewerben. Du hast jedoch auch das nötige Wissen um selbstständig eine eigene “sinnvolle” Anwendung zu erstellen oder dich einem Projekt im Open-Source-Bereich anzuschließen.

Der Kurs vermittelt dir also die notwendige Theorie, damit du dich in einem Projekt selbstständig einarbeiten kannst, eine grundlegende Idee hast was dort passiert und “gute” Fragen stellen kannst. Ich kann dir zwar nicht garantieren, dass du nach diesem Kurs ein Praktikum oder gar einen Job bekommst, aber du kannst potentiellen Arbeitgebern zeigen, dass du zu mehr als nur dem “Kaffee holen” in der Lage bist.

Was dir die Beta-Phase bringt

WICHTIG: Der Kurs wie er auf dieser Seite beschrieben ist existiert noch nicht! Bekomme ich 25 Teilnehmer für die Beta-Phase zusammen, dann werde ich den Kurs erstellen. Wenn nicht, brauchst du dir keine Gedanken machen, das Geld wird dir komplett erstattet!

Die wichtigsten Vorzüge wenn du an der Beta-Phase teilnimmst:

  • Ich helfe dir ganz persönlich mit dem Inhalt dieses Kurses.
  • Ich nehme mir Zeit für deine Verbesserungsvorschläge und werde versuchen diese, soweit möglich, in den Kurs einfließen zu lassen. Dies fängt an bei einzelnen Inhalten, aber du kannst auch gerne Übungen und Beispielanwendungen vorschlagen.
  • Du kannst gemeinsam mit mir (via Facebook-Gruppe und Facebook Live) verschiedene Übungen machen. Dabei werde wir mehr Übungen ausprobieren als letztlich im finalen Kurs enthalten sein werden.
  • Du bekommst lebenslangen (kostenlosen) Zugriff auf die LernMoment Community.

Überblick der Inhalte

Im Kurs entwickeln wir gemeinsam eine Anwendung in kleinen Schritten. Anhand dieser Anwendung erkläre ich dir wichtige Konzepte wie Bibliotheken, Softwarearchitektur, Entwurfsprinzipien, Entwurfsmuster und natürlich die Details objektorientierter Programmierung (OOP) und von objektorientierter Analyse und Design (OOAD).

Noch wichtiger ist mir jedoch, dass du Schritt für Schritt nachvollziehen kannst wie ich vom Problem zur Lösung (strukturierter und sauberer Quellcode) komme.

Bei der zu entwickelnden Anwendung handelt es sich um ein kleines Abrechnungssystem für Aufwände die in GitHub Issues dokumentiert sind. Diese Anwendung ist exemplarisch für den Großteil aller modernen Windows-Anwendungen. Du erfährst anhand dieses Beispiels:

  • Wie du für dein Problem passende Bibliotheken suchst UND findest.
  • Wie du mithilfe von bestehenden Bibliotheken Informationen von Webseiten wie GitHub, Amazon, YouTube, Twitch, … abfragen und in deiner Anwendung verarbeiten kannst (zeige ich exemplarisch für GitHub, aber den Lösungsweg und Lösungsansatz kannst du einfach für die meisten anderen Webseiten übernehmen).
  • Wie du Daten von externen Quellen (egal ob Webserver, Datenbanken oder andere Quellen) deiner Anwendung zur Verfügung stellst, manipulierst und wieder zurück schreibst.
  • Wie du gut strukturierten Quellcode schreibst den du auch in einigen Monaten noch verstehst und leicht erweitern (evolvieren) kannst.
  • Welche Teile deines Quellcodes besonders wichtig sind und wie du diese so entwickelst, dass sie dir einen langfristigen Nutzen bieten.
  • Was weitere Elemente von Objektorientierung sind (Vererbung, Komposition und Polymorphismus) und wie sie dir helfen Teile deines erstellten Quellcodes auch in anderen Anwendungen wiederzuverwenden.
  • Was einige der wichtigsten Entwurfsmuster sind und wie dir diese helfen deinen Quellcode übersichtlich und verständlich zu machen
    • Factory
    • Repository
    • Publish/Subscribe
    • ???
  • Was einige der wichtigsten Entwurfsprinzipien sind und wie dir diese in allen Bereichen der Softwareentwicklung als grundlegende Entscheidungshilfen zur Seite stehen
    • Separation of Concerns (SoC)
    • Don’t Repeat Yourself (DRY)
    • Dependency Inversion (DI)
    • Low Coupling (eines der GRASP von Craig Larman)
    • High Cohesion (eines der GRASP von Craig Larman)
    • Composition over Inheritance (clean code developer)
    • ???
  • Warum es mir so wichtig ist immer einfach anzufangen und wie dieses Vorgehen meinen kompletten Entwurfsprozess leitet.

BillingApp - Das durchgehende Beispiel im Kurs