Ich habe das Gefühl, dass ich gut darin bin, Code in Einzelteilen zu schreiben, aber meine Designs sind wirklich scheiße. Die Frage ist, wie ich meine Designs verbessere - und ein besserer Designer werde.
Ich denke, Schulen und Hochschulen lehren die Menschen gut, wie man mathematische Probleme löst. Lassen Sie uns jedoch zugeben, dass die meisten Anwendungen, die in der Schule erstellt werden, in der Regel zwischen 1000 und 2000 Zeilen lang sind, was bedeutet, dass es sich meistens um eine akademische Übung handelt Dies spiegelt nicht die Komplexität von Software in der realen Welt wider - in der Größenordnung von einigen hunderttausend bis Millionen von Codezeilen.
Dies ist der Punkt, an dem ich glaube, dass auch Projekte wie Topcoder / Project Euler keine große Hilfe sein werden, da sie Ihre mathematischen Fähigkeiten zur Problemlösung schärfen könnten - aber Sie könnten ein akademischer Programmierer werden. Jemand, der mehr an netten, sauberen Dingen interessiert ist, der absolut kein Interesse an alltäglichen, alltäglichen und haarigen Dingen hat, mit denen sich die meisten Anwendungsprogrammierer befassen.
Meine Frage ist also, wie ich meine Designfähigkeiten verbessern kann. Das heißt, die Fähigkeit, kleine und mittelgroße Anwendungen zu entwerfen, die mehrere tausend Codezeilen umfassen? Wie kann ich Designfähigkeiten erlernen, die mir helfen, ein besseres HTML-Editor-Kit oder ein Grafikprogramm wie gimp zu erstellen?
Antworten:
Der einzige Weg, um in etwas wirklich gut zu werden, besteht darin, es zu versuchen, spektakulär zu scheitern, es erneut zu versuchen, etwas weniger als zuvor zu scheitern, und im Laufe der Zeit die Erfahrung zu entwickeln, um zu erkennen, was Ihre Fehler verursacht, damit Sie mögliche Fehlersituationen später bewältigen können. Dies gilt ebenso für das Erlernen eines Musikinstruments, das Autofahren oder das Erreichen eines ernsthaften PWN-Alters in Ihrem Lieblings-Ego-Shooter, wie für das Erlernen eines beliebigen Aspekts der Softwareentwicklung.
Es gibt keine wirklichen Abkürzungen, aber es gibt Dinge, die Sie tun können, um zu vermeiden, dass Probleme außer Kontrolle geraten, während Sie Erfahrungen sammeln.
quelle
Nun, es gibt keinen goldenen Apfel für diese Art von Frage, und ich glaube, dass jeder Kodierer selbst herausfinden muss, was für ihn richtig ist. Hier ist meine Einstellung.
Sie könnten Bücher zu diesem Thema lesen. Tolle Bücher. Fantastische Bücher. Ich finde jedoch, dass diese Bücher Ihnen nur dann helfen, wenn Sie versucht haben, eine Anwendung zu erstellen und zu entwerfen - und dies gescheitert ist.
Für mich dreht sich alles um Erfahrung. Als ich als Anfänger anfing, las ich Bücher über das Entwerfen. Ich habe damals nicht viel von dem Inhalt verstanden. Als ich anfing zu arbeiten und selbst Anwendungen entwerfen musste, machte ich sehr chaotische Anwendungen. Sie arbeiteten, aber es war ein Schmerz, sie zu unterhalten. Dann las ich diese Bücher noch einmal - und diesmal verstand ich sie besser.
Jetzt mache ich weiter neue Fehler und lerne aus den alten.
quelle
Hören Sie auf zu entwerfen und lernen Sie, Code umzugestalten. Eine inkrementelle Entwicklung mit kontinuierlichem und aggressivem Refactoring führt zu einem viel saubereren Endprodukt als jedes Design im Vorfeld.
quelle
Lesen Sie über Muster, sicher, aber lesen Sie in erster Linie über Anti-Muster. Das Erkennen von Anti-Mustern ist wichtig und es ist einfacher zu verstehen, warum etwas nicht so gemacht werden sollte, als warum.
Siehe zum Beispiel http://sourcemaking.com/antipatterns/software-development-antipatterns .
Schreiben Sie Code, damit er schnell angepasst werden kann, wenn sich die Anforderungen ändern (was in der Produktionsumgebung sehr häufig vorkommt).
Seien Sie sehr skeptisch, wenn Sie "nur noch einen kleinen Hack" hinzufügen. Noch eine hier, noch eine da, und der Code wird nicht mehr zu handhaben.
Schätzen Sie das offene / geschlossene Prinzip .
Schreibtests (wie bei TDD). Sie zwingen Sie dazu, Ihr Design zu überdenken, noch bevor Sie es tatsächlich implementieren.
Durchsuchen Sie den Code von Open Source-Projekten (dh Projekte mit angemessener Größe). Früher war ich überrascht, dass ich - normalerweise - so viele Abstraktionsebenen sah. Jetzt verstehe ich, dass es keine Kunst ist, um der Kunst willen. Es gibt einen Grund, warum es so gemacht wird.
quelle
Ein Prinzip, das ich für gutes Design sehr wichtig finde, ist die Zerlegung: Wenn eine Klasse zu groß ist (mehr als beispielsweise 300-400 Codezeilen), zerlegen Sie sie in kleinere Klassen. Wenn eine Methode zu groß ist (z. B. mehr als 50 Codezeilen), wird sie zerlegt. Wenn ein Projekt mehr als 50 Klassen enthält, zerlegen Sie es.
Der Schlüssel besteht darin, die Größe Ihres Systems zu schätzen und mehrere Abstraktionsebenen (z. B. Subsystem, Anwendung, Projekt, Modul, Klasse, Methode) zu erstellen, mit denen Sie Ihren Code in verständliche Einheiten mit klaren Beziehungen zwischen ihnen und wenigen Abhängigkeiten zerlegen können.
quelle
Es ist schwierig, wir reden hier wirklich über die Fähigkeit zu abstrahieren, anstatt besseren Code zu erstellen, aber zwei Dinge werden dich besser machen und eine Sache wird dich glücklicher machen:
"Besser"
A) Finden Sie den besten Designer, den Sie finden können, und kombinieren Sie ein Programm / Design. Bitten Sie sie zu erklären, was sie denken, wenn sie das Problem angehen, geben Sie sich nicht mit "es fühlt sich einfach richtig an" zufrieden und graben Sie weiter. Dieser Prozess wird auch der "Mentoring" -Partei helfen
B) Stellen Sie sich alles als einzelne Akteure und Gespräche zwischen ihnen vor. Jeder der Akteure sollte eine einzelne Rolle / Verantwortung haben und Gruppen von ihnen sollten mit unterschiedlichen Systemen umgehen. Wenn diese Konversation funktioniert und jeder Schauspieler sich kohärent und zusammenhängend fühlt, sind Sie auf dem besten Weg.
Und "glücklicher"
C) Wenn Sie Ihr Bestes versucht haben und es immer noch nicht passiert, dann ist es nichts Falsches, zu akzeptieren, dass manche Leute einige Dinge nicht tun können. Sie könnten engen, brillanten Code schreiben, aber niemals in der Lage sein, Entwürfe oder Architekten zu erstellen. Na und? Ich kann keinen Sport für Toffee treiben, ich sehe nicht gut aus und mein Autofahren wird niemals besser als der Durchschnitt sein. Enthülle und nutze, was du kannst.
quelle
Nach meiner persönlichen Erfahrung ist das Lesen anderer Codes eine gute Quelle der "Inspiration". Ich meine, versuche, die Designs anderer Leute zu verstehen und frage dich, warum er / sie die Dinge so macht?
Sie können viele Open-Source-Projekte für die Forschung finden.
du brauchst sowieso Übung.
quelle
Lebe nicht in Angst
Bemühen Sie sich um Einfachheit
Hören Sie auf Ihre Benutzer
Probieren Sie viele Ideen aus
Erstelle etwas und verbessere es dann
Arbeiten Sie an Dingen, die einen Mehrwert bieten, und geben Sie Dinge auf, die dies nicht tun
quelle
Lerne die richtigen Fragen zu stellen. Meistens verbessern Sie Ihr Design, indem Sie das Problem aus einem anderen Blickwinkel betrachten. Dies hilft Ihnen insbesondere dabei, sich nicht mehr auf die Lösung des vorliegenden Problems zu konzentrieren, sondern Lösungen zu finden, die mehrere verwandte Probleme lösen.
quelle