| 

.NET C# Java Javascript Exception

3
Hallo Leute,

hab mich lange nicht mehr gemeldet, aber mir brennt gerade ein Frage auf den Lippen. In C gibt es ja keine Klassen, wie in C++, C#, Java etc. Nun ist gerade meine Aufgabe, an einem C Programm ein paar Änderungen durchzuführen. Und mit jeder neuen Frage kommen immer wieder kleine Änderungen, so dass es am Schluss fast wie Spaghetti-Code wirkt (frei nach dem Motto: hier eine kleine Schraube, da ein kleines Pflaster; jedoch kommentiere ich ausführlich, sodass es nachvollziehbar sein sollte, was ich getan habe).

Mal abgesehen von dem aktuellen Programm hier: Wie kann ich in C gute Programmierdesign herstellen, ohne mich in einen zu großen Aufwand an Arbeit zu verrennen?
c design programmierung
11.02.2014
starki 603 1 8
Eigentlich gar nicht. Wer gutes Design will, sollte kein C nehmen. ;)
SCNR
m.fuchs 12.02.2014
4 Beiträge
0
Welche Programmiersprache dann ?
20.02.2014
kannnix 61 6
Sprachen die einen zur sauberen Arbeit zwingen. Pascal-artige wären da an erster Stelle zu nennen.
m.fuchs 20.02.2014
VB.Net is meiner Meinung nach die absolut übersichtlichste Sprache ;-)
DerPunk 27.02.2014
0
Manachmal hat man über 10.000 Zeilen Code! Diese steigern sich dann noch mal mit der Anzahl der Verbesserungen, Auslagerungen und ev. Kommentaren. Das aber ist in jeder Sprache so! Vielleicht gilt immer das "Kinderzimmer-Prinzip" - wer ausgiebig spielt, muss hinterher aufräumen.

In Wahrheit kann man in jeder Sprache unsauber arbeiten (manchmal fällt das nur nicht so auf). Ich liebe die Freiheit, die alles erlaubt was ich machen will - nicht die Einschränkung!
21.02.2014
Falkner 795 3 9
0
Wir haben sehr gute Erfahrungen mit strukturiertem Code und einer 4GL-Entwicklungsumgebung aus dem Hause Gupta gemacht.
Durch die Organisation des Codes in einem eindeutigen Baum sind z.B. globale Klassen sehr schnell gefunden und deutlich von Anwendungsklassen, etwa Fensterklassen unterschieden. Durch die 4GL-Sprache kommt man (i.A.) nicht mit den Details des Betriebssystems oder der verwendeten Datenbank in Berührung. Einige Anwendungen von uns laufen seit nunmehr fast 20 Jahren praktisch unverändert bei Kunden.
Obwohl die Anwendungen mit einer sehr frühen Version ursprünglich entwickelt wurden genügt meistens die neue Übersetzung mit der aktuellen Version um eine (mehr oder weniger) zeitgemäße Oberfläche zu erhalten.
Vielleicht ist auch eine solche "Nischensprache" 'mal einen Blick wert.
21.02.2014
edvservice 1,2k 6
2
So langsam wird die Diskussion off-topic, findet ihr nicht? Die Frage war ja nicht, in welcher Sprache man möglicherweise leichter zu einem guten Design kommt als in einer anderen, sondern was Merkmale guten Designs in C sind. Es mag in C vielleicht schwieriger sein oder mehr Disziplin erfordern, aber ich finde, dass es definitiv auch möglich ist, gut designten C-Code zu schreiben. Man überlege nur mal, wie alt einer der wichtigsten (wennn nicht überhaupt DER) Grundlagenartikel zu diesem Thema erschienen ist, nämlich On the Criteria To Be Used in Decomposing Systems into Modules von David Parnas. Das war 1972 - lange bevor objektorientierte oder 4GL-Sprachen Verbreitung fanden.

Wie das mit Grundlagenartikeln so ist: direkt anwendbare Kochrezepte findet man darin nicht. Aber Modularisierung, Geheimnisprinzip, zusammengehörige Sachen zusammen halten und andere trennen - das geht auch in C. Ich empfehle in dem Zusammenhang auch gerne das Buch Moderne Software-Acrhitektur von J. Siedersleben. Da dreht sich sehr viel um das fundamentale Prinzip der Schnittstelle, und Siedersleben zeigt in einem kurzen Exkurs, dass sich das auch in C implementieren läßt (als struct von function pointers, wenn ich es richtig in Erinnerung habe). Ich hab bei Siedersleben gelernt, er hat mal in einem Vortrag gesagt: vieles von dem, was in dem Pattern-Buch der GoF steht, ist eigentlich nur Anwendung der Programmierung gegen Schnittstellen, also das konsequente Trennen von Vertrag und Implementierung des Vertrags. Ich finde, da hat er Recht, und das geht eben auch in C.

Update: Der Linux-Kernel hat laut Wikipedia mittlerweile fast 18 Mill. Code-Zeilen. Ich kann mir nicht vorstellen, dass diese Menge ohne ein gutes Design in irgendeiner Weise wartbar wäre. Von daher ist das für mich schon allein der Nachweis, dass gutes Design und C sich nicht ausschließen. Und ein Hinweis, in welcher Ecke @starki auf der Suche nach best practices fündig werden könnte.
Dann habe ich noch diesen Artikel gefunden, der das von mir angesprochene Konzept schön illustriert. Ich bin selbst kein C-Entwickler und noch weniger ein Linux-Experte, aber dieser Quelle zufolge wird diese Art, Abstraktion mit C zu implementieren, in Linux und anderen C-basierten Systemen häufig verwendet.
21.02.2014
Matthias Hlawatsch 13,2k 4 9
"[...] Schnittstelle [...] (als struct von function pointers, wenn ich es richtig in Erinnerung habe [...]"
Ich glaube, das sagt bereits alles zum Thema C und gutes Design. ;)
m.fuchs 21.02.2014
1
Schau Dir doch mal den im Update meiner Antwort verlinkten Artikel an, ehe Du die Nase rümpfst.
Matthias Hlawatsch 21.02.2014

Stelle deine C-Frage jetzt!