Zunächst ein Disclaimer: Ich weiß nicht wirklich, ob diese Frage zu dieser Website passt, aber ich finde sie immer noch eine relevante Frage, nicht nur für mich, sondern auch für andere Anfänger. Wenn die Frage hier angepasst werden kann, weisen Sie bitte auf int-Kommentare hin. Wenn es nicht passt, lass es mich auch wissen und wenn möglich lass es mich wissen, wo dies besprochen werden kann, weil ich keine guten Foren dafür gefunden habe.
Ich habe 2009 gelernt zu programmieren, als ich PHP studierte. Später im Jahr 2012 wechselte ich zu C # und .NET. Auf jeden Fall ist das Codieren nicht das Problem, das Aufschreiben von Algorithmen ist nicht mein Problem. Mein eigentliches Problem besteht darin, zu wissen, was codiert werden muss, um eine Anforderung zu erfüllen, und wo es codiert werden muss.
Die meisten im Internet verfügbaren Kurse behandeln das Wie - wie man Code in einer bestimmten Sprache schreibt, wie man einige Sätze von APIs verwendet usw. Das ist hier nicht mein Punkt.
In diesen Jahren habe ich viel über eine Reihe von Dingen gelesen: objektorientierte Analyse und Design, Designmuster, domänenorientiertes Design und so weiter. Ich verstehe zum Beispiel die SOLID-Prinzipien, einige der Hauptideen von DDD wie die Notwendigkeit des Engagements von Domain-Experten, die Entwicklung einer allgegenwärtigen Sprache und so weiter. Ich würde sagen, ich habe zumindest einen vernünftigen theoretischen Hintergrund.
Aber wenn es ums Üben geht, fühle ich mich wie eine Katastrophe. Vor einiger Zeit musste ich die Entwicklung eines Finanzsystems fortsetzen, das bereits von jemand anderem entwickelt wurde. Es ist eine Art "altes System", das mit C # und WinForms entwickelt wurde. Es war das erste Mal, dass ich ein Projekt mit einer echten Domänenkomplexität, vielen Geschäftsregeln usw. auswählte.
Ich gebe zu, wenn ich die Anforderungen die meiste Zeit erhalte, denke ich: "Wie um alles in der Welt kann das gemacht werden?" - Ich habe keine Ahnung, wie ich überhaupt anfangen soll, an den Anforderungen zu arbeiten, um herauszufinden, was zu tun ist. Ich glaube, meine Hauptverwirrungen sind, was ich codieren muss, welche Klassen, Schnittstellen und wohin jede Logik geht, auf welcher Klasse jedes Ding sein muss. Das Problem ist, dass ich nicht weiß, wo ich anfangen soll.
Meistens habe ich nachdenklich einige Ideen, aber ich kann nie beurteilen, ob meine Idee richtig ist oder nicht.
Ich denke nicht, dass dies ein Mangel an Theorie ist, da ich, wie gesagt, über eine Reihe von Dingen zu Softwarearchitektur und Objektorientierung gelesen habe, die mir empfohlen wurden, aber es half nicht viel, zu identifizieren, was in der Praxis getan werden muss .
So wie kann ich lernen, wirklich tut objektorientiertes Design? Was ich lernen möchte, ist, dass gegebene Anforderungen wissen, wie man damit beginnt, in einem Prozess daran zu arbeiten, der dazu führt, herauszufinden, was zu tun ist und wo jeder Code hingehört. Wie kann ich auch beurteilen lernen, ob meine Idee richtig ist oder nicht?
Ich glaube, es wäre nicht möglich, dies hier als Antwort vollständig zu erklären. Ich suche jedoch nach Antworten, die dem Site-Stil entsprechen. Sie geben lediglich einen Überblick und verweisen auf einige Referenzen (Bücher, Online-Kurse usw.), die verwendet werden können, um die Ideen zu erweitern und diese Dinge wirklich zu lernen.