kartoffel
24.01.2010, 00:53
Hallo GMod-Community,
in dieser Tippsammlung werde ich versuchen, euch das Konzept der
Modularisierten Programmierung
näherzubringen.
Wie auch mein Coding-Stil-Leitfaden ist das hier ein Work-in-progress-Guide,
daher freue ich mich über Ergänzungen und Vorschläge.
Status: Unterbrochen durch Zeitmangel
Solange hier nicht fertig steht keine Ergänzungen schicken.
Jeder Programmierer schafft sein eigenes Framework.
Dieser Satz stammt von einem guten Freund und ich denke, dass er absolut Recht hat.
Wenn ein Programmierer dieses Konzept beherrscht (auf die eine oder andere Weise), wird er sich viel Arbeit
sparen und JA, man kann das Erzeugnis nach ein paar Projekten als Framework bezeichnen.
Ich selbst habe eine Weile stur linear gearbeitet und habe es sehr bald bereut.
Warum werdet ihr in Kürze herausfinden.
Oder, wie man so schön sagt, "trocken hinter den Ohren werden".
Ich werde euch hier die Ziele des Leitfadens verraten und ein wenig an der Oberfläche kratzen.
Niemand mag es, das gleiche Problem mehrmals zu lösen. Programmieren ist eine kreative Tätigkeit und der Schriftsteller schreibt ja auch nicht dasselbe Kapitel zweimal.
Warum sollten wir es tun?
Ganz einfach:
Aus Faulheit. Warum mehrere Dateien erstellen, wenn das Zeugs auch irgendwie in die main.cs reingepfriemelt werden kann?
Warum eine Funktion auslagern, wenn ich sie wahrscheinlich nie mehr brauche?
Gerade hier liegt der Knackpunkt:
Weil es so ist. Du wirst sie wahrscheinlich nie mehr brauchen. Aber wenn das doch der Fall sein sollte, wirst du dich dafür hassen.
Und genau damit das nicht passiert schreibst du deinen Quellcode in Modulen.
Modularisierung ist ein Prozess dessen Komplexität abhängig vom Code sehr schwer sein kann:
Isolieren des Funktionscodes
Entfernen von programmspezifischen Referenzen
Lösen des Problems über Parameter
Testen des Moduls
Oben genanntes sooft nötig wiederholen
Und all das will ich euch beibringen? Nö. Ist mir zu mühselig. Und unnötig.
Man kann diesen Prozess nämlich vermeiden, indem man von Anfang an modularisierten Code verfasst.
Kommen wir zum Thema. Was genau ist modularisierte Programmierung?
Modularisierte Programmierung ist ein spezielles Programmdesign, in dem möglichst alles so gestaltet wird, dass es unabhängig
von anderen Programmteilen agiert und in seiner Funktion klar abgegrenzt wird. Diese Programmierweise ermöglicht es dem Programmierer,
Programmteile wiederzuverwenden und mach das Programm leicht erweiterbar. Also prinzipiell mehr Arbeit für größere Übersichtlichkeit und
vor allem leichtere Wartung.
Ein solches Modul ist nicht wirklich definiert. Prinzipiell kann ein Modul alles sein, eine Bibliothek, eine abstakte oder konkrete Klasse
oder eine einzelne Funktion. Wichtig ist nur, dass dieses Modul idealerweise ohne Anpassungen in verschiedenen Programmen verwendet werden kann
und dabei nur die Aufgabe erfüllt, die ihr zugedacht wurde.
So ist die mysqli-Klasse in PHP für den Datenbankzugriff gedacht. Diese Aufgabe wird mit Bravour erfüllt, trotzdem kann man lange darauf warten,
dass sie mathematische Probleme löst. Dafür wurde sie nämlich nicht konzipiert.
in dieser Tippsammlung werde ich versuchen, euch das Konzept der
Modularisierten Programmierung
näherzubringen.
Wie auch mein Coding-Stil-Leitfaden ist das hier ein Work-in-progress-Guide,
daher freue ich mich über Ergänzungen und Vorschläge.
Status: Unterbrochen durch Zeitmangel
Solange hier nicht fertig steht keine Ergänzungen schicken.
Jeder Programmierer schafft sein eigenes Framework.
Dieser Satz stammt von einem guten Freund und ich denke, dass er absolut Recht hat.
Wenn ein Programmierer dieses Konzept beherrscht (auf die eine oder andere Weise), wird er sich viel Arbeit
sparen und JA, man kann das Erzeugnis nach ein paar Projekten als Framework bezeichnen.
Ich selbst habe eine Weile stur linear gearbeitet und habe es sehr bald bereut.
Warum werdet ihr in Kürze herausfinden.
Oder, wie man so schön sagt, "trocken hinter den Ohren werden".
Ich werde euch hier die Ziele des Leitfadens verraten und ein wenig an der Oberfläche kratzen.
Niemand mag es, das gleiche Problem mehrmals zu lösen. Programmieren ist eine kreative Tätigkeit und der Schriftsteller schreibt ja auch nicht dasselbe Kapitel zweimal.
Warum sollten wir es tun?
Ganz einfach:
Aus Faulheit. Warum mehrere Dateien erstellen, wenn das Zeugs auch irgendwie in die main.cs reingepfriemelt werden kann?
Warum eine Funktion auslagern, wenn ich sie wahrscheinlich nie mehr brauche?
Gerade hier liegt der Knackpunkt:
Weil es so ist. Du wirst sie wahrscheinlich nie mehr brauchen. Aber wenn das doch der Fall sein sollte, wirst du dich dafür hassen.
Und genau damit das nicht passiert schreibst du deinen Quellcode in Modulen.
Modularisierung ist ein Prozess dessen Komplexität abhängig vom Code sehr schwer sein kann:
Isolieren des Funktionscodes
Entfernen von programmspezifischen Referenzen
Lösen des Problems über Parameter
Testen des Moduls
Oben genanntes sooft nötig wiederholen
Und all das will ich euch beibringen? Nö. Ist mir zu mühselig. Und unnötig.
Man kann diesen Prozess nämlich vermeiden, indem man von Anfang an modularisierten Code verfasst.
Kommen wir zum Thema. Was genau ist modularisierte Programmierung?
Modularisierte Programmierung ist ein spezielles Programmdesign, in dem möglichst alles so gestaltet wird, dass es unabhängig
von anderen Programmteilen agiert und in seiner Funktion klar abgegrenzt wird. Diese Programmierweise ermöglicht es dem Programmierer,
Programmteile wiederzuverwenden und mach das Programm leicht erweiterbar. Also prinzipiell mehr Arbeit für größere Übersichtlichkeit und
vor allem leichtere Wartung.
Ein solches Modul ist nicht wirklich definiert. Prinzipiell kann ein Modul alles sein, eine Bibliothek, eine abstakte oder konkrete Klasse
oder eine einzelne Funktion. Wichtig ist nur, dass dieses Modul idealerweise ohne Anpassungen in verschiedenen Programmen verwendet werden kann
und dabei nur die Aufgabe erfüllt, die ihr zugedacht wurde.
So ist die mysqli-Klasse in PHP für den Datenbankzugriff gedacht. Diese Aufgabe wird mit Bravour erfüllt, trotzdem kann man lange darauf warten,
dass sie mathematische Probleme löst. Dafür wurde sie nämlich nicht konzipiert.