Ich habe einen Hintergrund als UI-Designer. Und mir wurde klar, dass es für mich ein bisschen schwierig ist, ein Stück Logik zu schreiben. Manchmal verstehe ich es richtig, aber meistens habe ich etwas Hackiges (und es dauert normalerweise viel Zeit). Und ist es nicht so, dass ich nicht gerne programmiere? Tatsächlich fange ich an, es genauso zu mögen wie Design. Es ist nur so, dass ich manchmal denke, dass ich besser mit Farben und Formen umgehen kann als mit Zahlen und Logik (aber das möchte ich ändern).
Normalerweise suche ich die Lösung im Internet, kopiere das Beispiel und füge es in meine App ein (ich weiß, dass dies keine sehr gute Vorgehensweise ist).
Ich habe gehört, dass ein Tipp darin bestand, die Logik in allgemeinem Englisch als Kommentar zu schreiben, bevor der eigentliche Code geschrieben wurde.
Welche anderen Tipps und Techniken kann ich verwenden?
quelle
Antworten:
Kleine Schritte.
Teilen Sie ein großes Problem in kleinere Probleme auf. Dann lösen Sie die kleineren Probleme.
Bonuspunkte, wenn Sie Ihre Lösungen für kleinere Probleme mit automatisierten Komponententests sichern können.
quelle
Normalerweise schreibe ich Dinge auf Papier, während ich überlege. Auf diese Weise kann ich Pseudocode schreiben oder Zeichnungen machen (normalerweise beides), und ich muss mich nicht um die Einschränkungen der Zeichensoftware kümmern oder darum, was in einen Kommentar passen kann.
Ich finde, wenn ich etwas zumindest leicht Kompliziertes mache, muss ich die Dinge wirklich zuerst auf Papier bringen, sonst bekomme ich etwas Hackiges, wie Sie erwähnt haben.
Wenn ich am Ende etwas Hackiges habe, funktioniert es häufig fast . Manchmal kann ich es hacken, bis es endlich funktioniert, manchmal nicht. Wenn ich mir die Zeit nehme, es auf Papier auszuarbeiten, funktioniert es oft ohne allzu große Probleme.
quelle
Ich denke, dass Sie Ihre eigene Frage irgendwie beantwortet haben, und ich meine das nicht schlecht - es ist ein allgemeiner Ratschlag, dass der beste Weg, das Codieren zu lernen, einfach das Codieren ist. Ich persönlich würde versuchen, das Kopieren von Code direkt aus einer Quelle zu vermeiden, es sei denn, es ist absolut klar, was los ist (das heißt, es gibt nicht unbedingt einen anderen guten Weg, etwas zu tun), obwohl viele dieser Probleme auftreten sind syntaktisch. Nehmen Sie sich die Zeit, um zu verstehen, was los ist und wie Sie (oder jemand anderes) es umsetzen.
In der Zeit, in der ich gelernt habe, wie man sich entwickelt, habe ich festgestellt, dass die Arbeit mit MVC-Technologien eine großartige Möglichkeit ist, um zu verstehen, wie man Design macht, wie z. B. Rails (mit dem ich gerade arbeite) oder iOS / Cocoa Touch . Da Sie in einer solchen objektorientierten Designumgebung arbeiten, denken Sie auch darüber nach, wie Modelle und deren Logik von der Ansicht getrennt sind (wobei Controller der Klebstoff sind, der sie verbindet) Sie können Ihre Objekte auf logische, aber (hoffentlich!) unkomplizierte Weise abstrahieren.
Dies basiert natürlich auf meinen eigenen Erfahrungen, aber ich hoffe, dass meine Gedanken zu Ihrer Frage hilfreich sein können.
quelle
Zusätzlich zu den bereits gegebenen Antworten besteht eine der besten Möglichkeiten, um sofort loszulegen, darin, von einer Anwendung zu lernen, die einfach ist und in der der Quellcode verfügbar ist.
Hier leuchten solche sozialen Repositories wie Github. Ein unglaublicher Ort, um nach Beispielen zu suchen. Und wenn Sie eine finden, können Sie sie sofort als Ihre eigene aufteilen und mit der Anwendung tun, was Sie wollen. Sobald Sie sie haben:
Eine andere Möglichkeit besteht darin, die klassischen Beispielreferenzimplementierungen zu verwenden, die an so vielen verschiedenen Stellen dokumentiert sind. Das Spring Framework von Java verwendet beispielsweise das ehrwürdige Beispiel "Pet Store". Ich denke, Sie können dieses Beispiel sogar auf Github finden.
Andere Frameworks / Technologien wie das Groovy's Grail-Framework verwenden andere Klassiker wie eine Buchanwendung zum Speichern und Anzeigen von Büchern und Autoren usw.
Die letzte Option, die ich ausprobiert habe, besteht darin, einem guten Programmierbuch zu folgen und die Beispiele von Hand einzutippen und in ein Repository wie Github zu stellen. Dies hat mindestens zwei Vorteile: 1) Es gibt eine Referenz für Sie mit Ihren eigenen Notizen, die Ihnen helfen, sich an coole Dinge auf eine Weise zu erinnern, an die Sie sich erinnern werden, und 2) wenn Sie in schwierige Situationen geraten, können Sie leicht Freunde oder Kollegen dazu bringen Sehen Sie sich Ihren Code an und geben Sie Ratschläge.
Wissenschaft und insbesondere Programmierung bauen wirklich auf den Erfahrungen anderer auf. Im übertragenen Sinne hilft das Kopieren / Einfügen und anschließende Optimieren, bis Sie verstanden haben, Entwicklern, Ingenieure zu werden.
quelle
Stellen Sie sich vor, Sie müssen jemand anderem einen Bericht über Ihr Problem erstellen.
Analysieren Sie das Problem. Versuchen Sie es so klar wie möglich zu formulieren. Pseudocode schreiben, Diagramme zeichnen.
Überlegen Sie, was das Problem verursachen könnte und warum Ihr Ansatz falsch ist.
Fragen Sie sich, ob es andere Perspektiven gibt, aus denen Sie Ihr Problem betrachten können.
Tun Sie das nicht nur in Ihrem Kopf, sondern schreiben Sie es auf Papier (oder ein Dokument auf Ihrem Computer).
Wenn Ihnen nichts davon sofort hilft, versuchen Sie, eine Weile nicht über das Problem nachzudenken. Gute Nachtruhe. Immer noch keine Lösung? Versuchen Sie, Ihr Problem zu googeln oder SO nach einer Lösung zu suchen.
Wenn alles andere fehlschlägt, stellen Sie eine Frage zu SO (oder zu SE-Programmierern, wenn dies für Ihre spezielle Frage besser geeignet ist). Stellen Sie sicher, dass Sie Ihren "Bericht" (oder die wichtigen Teile davon) tatsächlich angeben, wenn Sie die Frage stellen.
Wenn Sie eine Antwort erhalten, fragen Sie sich, warum Ihr Ansatz nicht funktioniert hat und was Ihnen hätte helfen können, selbst zur Lösung zu kommen. Dies könnte Ihnen helfen, eine Lösung für ein Problem zu finden, auf das Sie in Zukunft stoßen und das einen ähnlichen Ansatz erfordert.
quelle
Ich bin damit einverstanden, auf Papier zu denken. In der Regel identifiziere ich zuerst alle Informationen, die ich benötige und woher sie kommen. Es muss nicht elegant sein, nur genau. Geschäftslogikfragen und Entwurfsstrategien kommen normalerweise während dieses Prozesses.
Als Java-Entwickler, der Ende an Ende an einer Anwendung arbeitet, teile ich die Dinge weiter nach Ebenen ein: Präsentation, Web, Geschäftslogik und Datenzugriffsschicht. Wenn ich Zeit habe, schreibe ich normalerweise meine Klassennamen während dieses Teils auf.
Zuletzt bemühe ich mich immer, Tests für das Backend durchzuführen, bevor ich Code schreibe. Sie können alles elegant verkabeln, aber wenn Sie das Back-End nicht erreichen können: Datenbank oder Webdienst zum Beispiel, funktioniert es nicht!
quelle
Einige der Prinzipien der testgetriebenen Entwicklung helfen hier sehr.
Eine der besten Möglichkeiten, komplexe Probleme zu lösen, besteht darin, sie für bestimmte Anwendungsfälle zu lösen und dann eine Verallgemeinerung zu finden. Die Verwendung von TDD fördert genau das. Sie erstellen einen einfachen Testfall und bringen ihn zum Laufen, erstellen dann einen weiteren Testfall und bringen ihn zum Laufen. Schließlich sehen Sie, ob Sie eine Verallgemeinerung vornehmen können, mit der Sie beide Testfälle mit derselben Logik behandeln können. Wenn Sie können, werden wahrscheinlich auch viele andere Testfälle behandelt. Da Sie alle Ihre Testfälle jederzeit ausführen können, können Sie Ihre Logik verbessern, ohne sich Gedanken darüber machen zu müssen, ob etwas kaputt geht. Auf diese Weise muss eine hackige Lösung nicht hackig bleiben.
Testgetriebene Entwicklung fördert auch
quelle
Es gibt tatsächlich ein Buch, das genau diese Frage beantwortet:
Entwerfen von Programmen - Eine Einführung in das Programmieren und Rechnen von Matthias Felleisen, Robert Bruce Findler, Matthew Flatt und Shriram Krishnamurthi
Derzeit arbeiten sie an einer zweiten Ausgabe und danach an einem zweiten Band (How to Design Components).
Das wirklich Coole an diesem Buch ist, dass es Ihnen eine Reihe von Rezepten zum Entwerfen von Programmen gibt. Mit anderen Worten, es gibt Ihnen Schritt-für-Schritt-Anweisungen, die Sie (halb-) gedankenlos befolgen können, um ein Programm zu entwerfen.
Oder anders ausgedrückt: Es enthält eine Reihe von Programmen zum Schreiben von Programmen, sodass Sie nicht herausfinden müssen, wie ein Programm geschrieben wird: Die Autoren haben es für Sie herausgefunden!
quelle
Zusätzlich zu den obigen Antworten geht es manchmal nicht darum, die Logik selbst zu kennen, sondern den Rahmen und die Sprache zu kennen, mit denen Sie arbeiten. Jedes Framework oder jede Sprache hat ihre eigenen Eigenschaften und es ist eine große Hilfe, sich damit vertraut zu machen.
quelle