Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Strukturierte Programmierung erlernen
Gruwe
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

Strukturierte Programmierung erlernen

beantworten | zitieren | melden

Hallo zusammen,

ich habe das Problem, dass ich zwar verschiedene Programmiersprachen beherrsche (im Studium Elektrotechnik hab ich damals C bzw. C++ und ein wenig Assembler gemacht, anschließend privat mal einiges in C# und auch ein bisschen Python), diese Kenntnisse auch privat gerne ausbauen möchte weil mir Programmierung schon Spaß macht, meine Programme aber sehr schnell unübersichtlich werden, wenn es mal ein bisschen umfangreicher wird. Das hemmt natürlich auch meinen Lernfortschritt bei den Sprachen, die ich verwende, was ich schade finde. Das war bei uns auch leider nie irgendwie Thema im Studium.

Daher mal die Frage an die Experten unter euch:

Wie kann ich denn strukturierte Programmierung erlernen? Also mit welchen Themen sollte ich mich beschäftigen, wenn ich sauberere Programme (nicht von den Codezeilen, sondern vom Aufbau, etc.) schreiben möchte?

Ich habe mir schonmal Bücher angeschaut zum Thema Software-Technik, aber irgendwie startet das immer sehr theoretisch mit irgendwelchen Lebenszyklusmodellen, etc. was imho sicherlich sinnvoll und wichtig ist, aber irgendwie auch erst, wenn man halbwegs brauchbare Programme schreiben kann. Oder nicht?
Gibt es da nicht irgendwelche Themen, die man auch recht schnell praktisch hands-on erlernen kann?

Was bietet sich da an? Erstmal UML lernen? Oder lieber erstmal sowas wie Design Patterns, oder oder? Habt ihr da Empfehlungen, wie ihr vorgehen würdet, wenn ihr wieder an dieser Stelle stehen würdet? Irgendwelche Literaturempfehlungen, etc.?

MfG und Danke!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.312

beantworten | zitieren | melden

Zitat von Gruwe
Wie kann ich denn strukturierte Programmierung erlernen? Also mit welchen Themen sollte ich mich beschäftigen, wenn ich sauberere Programme (nicht von den Codezeilen, sondern vom Aufbau, etc.) schreiben möchte?

Programmieren. Programmieren. Programmieren.
Struktur ist vor allem a) Standards einhalten b) Pattern anwenden und das mit Abstand wichtigste: c) Erfahrung.

Standards bekommst Du über die "Best Practise" des jeweiligen Frameworks/Runtime.
Pattern bekommst Du aus Büchern (Design Patterns. Elements of Reusable Object-Oriented Software) / Blogs / anderen Projekten

Erfahrung bekommst Du aber nur über die Zeit und Praxis.
Das kann Dir niemals ein Video, Buch oder sonst was beibringen.

Bezogen auf C# ist meine Beobachtung, dass 90% der C# / .NET Devs nicht die Grundregeln von Namespaces verstehen und damit die absolute Basis von .NET Software Architektur missachten. Das ist eigentlich super traurig.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.594

beantworten | zitieren | melden

Hallo,

das m.E. Wichtigste ist, sich an die [Artikel] Drei-Schichten-Architektur zu halten, so daß man klar getrennte Zuständigkeiten und wenig Abhängigkeiten in seinem Programmcode hat.

Aber so wie Abt schreibt, ist ein Großteil Erfahrung.
Es kann auch dazu lehrreich sein, ein älteres Projekt neu zu erstellen, um zu erkennen, was man daran verbessern kann.
Die Design-Patterns sollte man grob kennen bzw. erkennen, wann man evtl. eines in seinem Programm gebrauchen kann und dann gezielt die passenden Design-Patterns heraussuchen.
private Nachricht | Beiträge des Benutzers
M.L.
myCSharp.de - Member



Dabei seit:
Beiträge: 334

beantworten | zitieren | melden

Zitat von Gruwe
C++ ... C# ...Python ..strukturiert
Die SOLID-Prinzipien könnte man noch recherchieren. Die bereits genannten Stichwörter stellen bekannte Bearbeitsmöglichkeiten dar, deren Vor- und Nachteile man kennt (oder kennen sollte). Ein Vorteil besteht aus menschlicher Sicht im einfacheren Ändern/Erweitern/Nutzen/... des Codes (an einer Stelle)

In C# ist alles (Methoden, Variablen,...) zwingend innerhalb einer Klasse zu defnieren. Mehrfachvererbung gibt es nicht und vermeidet das "diamond problem".
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray ;-)
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Experte

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.879
Herkunft: Düsseldorf

beantworten | zitieren | melden

Zu der Frage nach dem "Wie" kann ich nichts mehr sagen, ich stimme Abt und Th69 zu.

Aber etwas, was man mMn. immer auf im Hinterkopf haben sollte: S.O.L.I.D
Das sind fünf Prinzipien, die nicht unbedingt einfach zu verstehen aber sehr wichtig sind.
Es gibt aber keine Anleitung, was man wie machen sollte und dann wird alles gut, es sind stattdessen sehr abstrakt formulierte Prinzipien, von denen man die Gründe und die Ziele verstehen muss, nur dann kann man sie auch richtig anwenden.

Am besten behält man sie immer im Hinterkopf und liest sich da alle paar Monate/Jahre neu ein, um sein Verständnis mit den neu gemachten Erfahrungen aufzufrischen.
Ansonsten kann ich noch das Buch "Clean Architecture" von Robert C. Martin (Uncle Bob) empfehlen, da sind unter Anderem die mMn. besten Erklärungen für die SOLID-Prinzipien enthalten. Oder in Video-Form eine Reihe von David Tielke auf YouTube, dessen Erklärungen ich auch gut finde - wenn auch nicht am besten: SOLID Principles von Robert C. Martin (Uncle Bob)



PS:
Und M.L. war schneller
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 690

beantworten | zitieren | melden

Hallo Gruwe

Das wichtigste ist ja schon gesagt worden. Ich wollte noch ergänzen, dass es auch stark darauf ankommt, was für ein Produkt man entwickelt.
Eine Enterprise-Solution mit 10Millionen Zeilen Code wird anders aufgebaut, als ein Kommandozeilen-Tool.

Diverse Patterns oder [Artikel] Drei-Schichten-Architektur machen bei einem kleinen Beispiel-Projekt nicht direkt Sinn. Sollte die Anwendung aber wachsen, dann wird es ohne schnell unübersichtlich.

Gruss
Alf
private Nachricht | Beiträge des Benutzers
MaikHo
myCSharp.de - Member

Avatar #UaCQzl4ZOQstHHBfjYJM.png


Dabei seit:
Beiträge: 6

Muss da mal was loswerden!

beantworten | zitieren | melden

Zitat von Abt

Bezogen auf C# ist meine Beobachtung, dass 90% der C# / .NET Devs nicht die Grundregeln von Namespaces verstehen und damit die absolute Basis von .NET Software Architektur missachten. Das ist eigentlich super traurig.

Ist ja auch kein Wunder. Wenn ich da an meine Umschulung denke (2017 Abschluss), habe ich immer gesagt "Das kann doch nicht alles sein!". Recht hatte ich, Absolute Grundlagen wurden nur angeschnitten und mehr als HTML, CSS und ein bissel PHP gab es nicht. Und damit sollst du als "Fachinformatiker für Anwendungsentwicklung" einen Job finden.
Nur wer sich dann wirklich alles selber sich erarbeitet und etwas Hilfe wie hier im Forum bekommt, der macht Fortschritte. Ich weiß ja nicht wie die richtige Ausbildung abläuft und ob die Azubis alles mitgeteilt bekommen, aber das wäre Glück in meinen Augen.
Selbst bei den Studierten die ich kenne fehlt viel Wissen

Ich selbst habe damals mit QBasic angefangen, und dann mit PHP. Selbst beigebracht habe ich mir dann Java und etwas Kotlin, C++.
Nun bin ich seit knapp 3 Monaten bei C# und das auch noch auf Linux (mit Avalonia). Das ist gerade nicht so einfach, vor allem weil mein Chef auch Resultate sehen will.

LG Maik
Java und PHP war meins.
Jetzt mit .Net eins.
Auf dem Linux muss es sein....s

Gott segne Avalonia.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.312

beantworten | zitieren | melden

Zitat von MaikHo
Ich weiß ja nicht wie die richtige Ausbildung abläuft und ob die Azubis alles mitgeteilt bekommen, aber das wäre Glück in meinen Augen.
Selbst bei den Studierten die ich kenne fehlt viel Wissen
Bei beiden Varianten lernst Du i.d.R. "nichts".
Azubis lernen durch Eigeninitiative und durch den Betrieb, Studierende durch Eigeninitiative und Praxissemester - und mit viel Glück wenn sie gescheite Dozenten aus der Wirtschaft mit aktueller Praxiserfahrung haben.

Ansonsten hast Du in den meisten Berufsschulen Quereinsteiger als "Lehrer"; bei mir war es ein Ex-Druckervertriebler, der dann Software "beigebracht" hat.
Beim Studium hatte ich Uralt-Professoren, die auf dem Stand von 1990 waren; Mentoren, die weniger konnten als ich (und selbst Studierende waren). Ohne Dozenten von Microsoft / IBM wär mein Studien-Fazit zum Thema Software fatal gewesen.

Eigeninitiative ist das A und O bei Software.
Ohne das, kannst den Job an den Nagel hängen.
private Nachricht | Beiträge des Benutzers
Gruwe
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Hallo zusammen,

danke für eure Rückmeldungen! Ich werde mich dann mal dranmachen und üben, üben, üben
private Nachricht | Beiträge des Benutzers
M.L.
myCSharp.de - Member



Dabei seit:
Beiträge: 334

beantworten | zitieren | melden

Zitat
üben
Und Fallstricke -trotz S.O.L.I.D.- vermeiden: Beitragsreihe bei Informatik-aktuell.de
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray ;-)
private Nachricht | Beiträge des Benutzers