Ich genieße es wirklich, Spiele zu programmieren und Rätsel zu machen. Ich stelle fest, dass ich viele dieser Probleme auf die gleiche Art und Weise konstruiere und letztendlich ähnliche Techniken verwende, um sie zu programmieren, mit denen ich wirklich vertraut bin.
Um Ihnen einen kurzen Einblick zu geben, erstelle ich gerne Diagramme, in denen Knoten mit Objekten dargestellt werden. Diese Objekte enthalten Daten wie Koordinaten, Positionen und natürlich Verweise auf andere benachbarte Objekte. Ich werde sie alle in eine Datenstruktur einfügen und Entscheidungen über diese Informationen in einer "Spieleschleife" treffen.
Dies ist zwar ein kurzes Beispiel, aber nicht in allen Situationen genau. Es ist nur eine Möglichkeit, mit der ich mich wirklich wohl fühle. Ist das schlecht?
quelle
Antworten:
Nein, alles in Ordnung.
Bei der praktischen Programmierung geht es darum, Lösungen zu finden, die möglicherweise bei vielen ähnlichen Entwicklungen nützlich sind. Sie haben gerade einen gefunden.
Sie können und sollten keine unterschiedlichen Lösungen entwickeln, nur damit sie sich unterscheiden. Aber Sie sollten sich auf jeden Fall jedes Mal kritisch mit Ihren Lösungen auseinandersetzen und sich fragen, ob sie noch gut sind oder ob sich die Branche seitdem weiterentwickelt hat und Sie sich dementsprechend darauf einstellen müssen.
quelle
Wenn es gut funktioniert, nennen Sie es ein Entwurfsmuster. Wenn nicht, aber Sie wissen es nicht besser, dann ist es das goldene Hammer-Antimuster.
quelle
In unserer täglichen Arbeit neigen wir dazu, eine ganze Reihe ziemlich ähnlicher Probleme zu haben.
In solchen Situationen kann es gut sein, sich an das zu halten, was man weiß. Ich habe mehr Beispiele für schlechte Lösungen von Leuten gesehen, die etwas implementiert haben, das sie nicht verstanden haben, als jemand, der eine nicht ideale Technik verwendet.
Wenn Sie etwas gut kennen, können Sie es nach Bedarf einsetzen und sicherstellen, dass Ihre Implementierung solide und effektiv ist. Diese Dinge werden wahrscheinlich nicht wahr sein von Ihren ersten Versuchen mit neuen Techniken.
Aber die Kehrseite ist, wenn Sie nur einen Hammer haben, sieht alles aus wie ein Nagel. Sie sollten Dinge tun, um sich auf Alternativen aufmerksam zu machen und wenn Sie Ihre Favoriten vielleicht zu weit treiben.
Vielleicht ein paar nicht dringende / nicht kritische Änderungen herausgreifen und sie nutzen, um mit alternativen Lösungen auf dem Laufenden zu bleiben?
quelle
Gute Frage, und ich muss zugeben, dass mich das auch verfolgt.
Wann ist das in Ordnung? Führen Sie eine Leistungsanalyse Ihres Codes durch. Wenn Sie feststellen, dass Sie sich in O (log n) oder O (n) oder O (n log n) befinden und das Problem daher bekannten Datenstrukturen zugeordnet werden kann, sind Sie im Allgemeinen in Ordnung.
Wann ist das nicht in Ordnung? Ihre zeitliche oder räumliche Komplexität ist O (n ^ 2) oder schlechter, oder das Problem ist per Definition NP vollständig. In diesen Situationen müssen Sie einige Heuristiken anwenden, Kenntnisse aus anderen Bereichen anwenden usw.
Ein kurzes Beispiel: Beim Chip-Design ist die Auswahl, wie die Gates in der Schaltung für minimale Leistung angeordnet werden sollen, NP-vollständig. Nur Grafiken allein bringen Ihnen nicht viel, obwohl sie ein Muss sind. Sie müssen zusätzliches Material lesen, manchmal interdisziplinär, und das Wissen in Ihrer Domäne anwenden. Zum Beispiel haben genetische Algorithmen (Algorithmen, die genetische Überkreuzungen und Mutationen nachahmen, wie in Biologie 101 definiert) eine große Anwendung beim Entwerfen von Hardware-Chips.
quelle
Nicht unbedingt, wenn es eine gute Möglichkeit ist, sie zu lösen :)
Wenn ich an einer "Lösung" arbeite, gehe ich normalerweise nach den folgenden Kriterien vor:
Nicht, dass es auf die Leistung ankommt: Ich entwerfe mit Blick auf die Leistung, aber ohne sie zu weit zu treiben. stört mich nicht). Wenn Leistung dann benötigt wird (Problem mit dem Geschäftsmodell oder der Benutzererfahrung), verfolge ich einen anderen Ansatz als den einfachen und wiederverwendbaren. Pragmatisch sein.
Seltsamerweise ist mir beim Codieren in C die Leistung viel wichtiger als beim Codieren in Java ... Macht der Gewohnheit :))
quelle
Solange das Problem auf effiziente Weise gelöst wird, besteht kein Grund zur Sorge.
quelle
Ich denke, Grafik ist ein geeignetes Design für das Entwerfen von Spielen, um Entscheidungen \ Entscheidungen darzustellen. Bedenken Sie jedoch, dass dies möglicherweise verfeinert und effizienter gestaltet werden kann. Dies ist möglicherweise nicht die beste Lösung für andere Domänen.
quelle
Wenn es funktioniert, ist es in Ordnung.
Wenn Sie befürchten, sich auf eine einzelne Technik zu verlassen, versuchen Sie als Übung, Variationen eines gelösten Problems zu finden, die Ihre Lösung unbrauchbar machen würden. Zusätzliche Punkte, wenn Sie die Änderungen verallgemeinern können, um den Anwendbarkeitsbereich Ihres üblichen Prozesses zu definieren.
quelle
Wenn Sie das Problem lösen, ist es gut. Und es ist egal wie, bis es keine Probleme mehr macht.
quelle
"Developer Art" hat tatsächlich die richtige Antwort, wenn es Ihr Ziel ist, ein Produkt zu produzieren. Und wenn Ihre "Fabrik" die Produkte produziert, die Sie zufrieden stellen, dann ist das cool.
Aber...
Wenn Sie jemals neue (und möglicherweise bessere) Methoden erlernen möchten, müssen Sie Änderungen vornehmen. Dies wird zu Fehlern führen, aber nur durch Fehler lernt man tatsächlich. Und durch dieses neue Lernen können Sie möglicherweise noch bessere und überzeugendere Software erstellen.
Dies wird tatsächlich durch neurologische Forschung gesichert. Hier bitteschön.
quelle