PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Modularisiertes Programmieren



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.

Mitsuma
24.01.2010, 01:00
Wer nicht (gut) modular programmiert wird früher oder später seine Probleme bekommen.

Schönes Tutorial, hoffe es werden sich manche Coder anschauen und umsetzen.

LoC
24.01.2010, 02:43
Sorry, aber hier wird ja nicht einmal erklärt was du unter Modularisiertem Programmieren verstehst. Etwas mehr Inhalt wäre für ein Tutorial schon nicht schlecht.

Allgemein würde ich jedem angehenden und erfahrenem Programmierer mal das Buch "Clean Code" von Robert C. Martin ans Herz empfehlen. Ich habe es zwar noch nicht ganz durch, aber soweit habe ich schon einiges dazu gelernt,

kartoffel
24.01.2010, 13:11
LoC, warum so ungeduldig? Freust du dich so auf das Endergebnis? :D
Da steht doch extra "In Arbeit", weil der Leitfaden "in Arbeit" ist.

Mir ist daran gelegen, dass der geschätzte Leser den Entstehungsprozess mitverfolgen kann. ;)

Stoned
26.01.2010, 20:52
Klingt nicht schlecht, mal sehen wie das ganze von dir umgesetzt wird. :)