Ich werde immer wieder von großen Projekten überwältigt, sobald sie ein bestimmtes Maß an Komplexität erreichen. Sobald ich einen bestimmten Punkt in einem Projekt erreicht habe, schleiche ich langsam und finde mich dabei wieder, meine Schritte zurückzuverfolgen und alle Arten von Verwirrung auszuräumen.
Aufgrund meiner Schwäche bin ich wirklich gut im Refactoring geworden. Und ich versuche immer, meine Objekte in kleinere, handlichere zu zerlegen. Diese Schwäche hat wahrscheinlich auch dazu geführt, dass ich zu sehr darauf geachtet habe, die Dinge richtig zu gestalten.
Ich weiß, wenn ich meine Probleme in kleinere aufteilen kann, kann ich sie reibungslos lösen. Eine denkbare Strategie ist die testgetriebene Entwicklung. Was kann ich sonst noch tun?
quelle
Antworten:
hör auf, über den Code nachzudenken
Denken Sie über Ebenen, Features, Module, Services und andere übergeordnete Abstraktionen nach
Sie werden überwältigt, weil Sie zu niedrig denken
quelle
Es ist einfach , den Komplex zu vereinfachen . Warte, denke, es ist umgekehrt.
Jeder hat damit zu kämpfen, es gibt keine einfache Lösung, die überaus effektiv ist.
Da Sie dies in Ihren Fragen nicht aufgeführt haben, wäre mein Vorschlag:
Konzentration auf den funktionalen Zusammenhalt durch:
Wenn Sie es unter den Ergebnissen auf der ersten Seite googeln, finden Sie zwei großartige Ressourcen:
Was ist Zusammenhalt in der Informatik?
Wenn Sie Fragen haben, lassen Sie es mich wissen.
quelle
Zerlegen Sie Features in das kleinstmögliche Element. Zum Beispiel ein einzelnes Feld in einem Formular. Wählen Sie das riskanteste oder das mit der höchsten Priorität und fahren Sie fort, als wäre es eine einfache Fehlerbehebung, kein großes Projekt. Es ist wahr, dass Sie später einige Umgestaltungen vornehmen müssen, aber zumindest werden Sie Fortschritte machen.
quelle
Aus meiner Erfahrung haben Sie Ihre eigene Frage mit dem Kommentar zu TDD beantwortet. Für mich war es oft dasselbe wie für Sie. Der frühe, schnelle Erfolg wurde schnell zu einer Sackgasse, sobald das System eine bestimmte Größe erreicht hatte. Bei TDD hat es geholfen, weil Sie jeden Teil des Systems als kleine Brocken angehen konnten und wussten, dass der Rest des Systems so weiterarbeiten würde oder sollte, wie Sie es verlassen haben. Ich denke auch, mit TDD hilft es sicherzustellen, dass Ihr System klar in kleinere Blöcke aufgeteilt ist, die unabhängig testbar sind.
quelle
Einige Leute sind gut darin, modulare, leicht verständliche Programme zu entwerfen, aber der Mehrheit der Programmierer fehlt diese Möglichkeit mehr oder weniger. Ich kenne kein Buch, keine Prozedur oder Übung, die einen der ersten Programmierertypen in den zweiten verwandeln kann, außer möglicherweise für viel Erfahrung. Aber da bin ich mir nicht mal sicher.
Das Fazit ist, dass die meisten Programmierer Schwierigkeiten haben werden, sich über das Mittelmaß zu erheben, einige wenige werden es schaffen, in Ordnung zu sein (wo ich mich und vielleicht 50% der professionellen Programmierer in der IB-Branche positionieren würde), und ein sehr kleine Minderheit wird ausgezeichnet sein. Ich sollte sagen, dass ich in meiner langen Karriere noch nie einen dieser hervorragenden getroffen habe :-)
quelle
Ich denke, viele Leute versuchen, Lösungen zu überdenken. Sie verfolgen den "Adam & Eve" -Ansatz, wenn ein etwas praktischerer Ansatz die Dinge erheblich vereinfachen würde.
Spezialisierte Klassen sind nicht böse, sie sind die natürliche Folge von Sound-Software-Design.
Meiner Meinung nach verstehen viele Programmierer dies nicht, und es gibt kein Buch, von dem ich weiß, dass es dies völlig klar macht.
Eine andere Sache, die sicherlich hilft, ist TDD, mit der Sie verstehen, wie Sie die Klasse in der Praxis einsetzen werden, und in vielen Fällen den Tag retten können, da sie frühzeitig mögliche Probleme / Einschränkungen aufzeigt.
Zuletzt ist eine andere SEHR wichtige Sache, nach der ich suchen würde, wenn ich Sie war, Entwurfsmuster. Designmuster sind, wie Leute, die schlauer sind als Sie oder ich, Programmierprobleme lösen. Die Idee hinter Mustern, raten Sie mal, ist, dass sie nicht als Kochbücher verwendet werden sollen, sondern als Rezepte, die Sie nur zuschlagen, sondern in erster Linie durchdacht sind und Ihre Anwendungsdomäne verstehen.
Eine kluge Verwendung von Mustern reduziert die Menge der zu verwaltenden Details erheblich.
Eine gute Entwurfsmusterbibliothek, die genau auf Ihre Bedürfnisse zugeschnitten ist, ist von unschätzbarem Wert. Sehen wir uns ein sehr einfaches Beispiel an, um die Dinge in einen Kontext zu bringen:
Stellen Sie sich vor, Sie haben ein Formular, in dem sich andere Formulare aktualisieren müssen, wenn eine Schaltfläche gedrückt wird. Dies ist ein typisches "Beobachter" -Muster. Sie haben ein Subjekt und mehrere Beobachter, die sich beim Subjekt registrieren. Warum müssen Sie eine Schnittstelle implementieren? Sie können einfach die Methoden hinzufügen oder, noch besser, eine Benutzeroberfläche für die Beobachter und eine allgemeine Liste für das Thema verwenden. Jetzt haben Sie das Beste aus beiden Welten: Unabhängigkeit für die Beobachter und keine launischen Dinge zu diesem Thema.
Hoffe es macht Sinn für dich!
Andrea
quelle
Das Problem der Entwicklungsgeschwindigkeit und Lesbarkeit kann auftreten, wenn wir die Notwendigkeit der Abstraktion übersehen. In einigen der großen Codebasen, mit denen ich gearbeitet habe, war der häufigste Feind die zigfache Anzahl spezialisierter Klassen mit sehr ähnlichen Funktionen, die den Code zum Aufblähen bringen. Wenn wir einen Schritt zurücktreten und die Anforderungen als Ganzes und nicht als Teil der Anwendung verstehen, kommen uns viele Abstraktionen in den Sinn.
Einige einfache Schritte, die mir geholfen haben
quelle