Ich habe, wie viele andere auch, mit der konsolenbasierten Programmierung (wie beim Terminal, nicht bei der Playstation) begonnen. Aber früher oder später muss man auf GUI-basierte Programmierung eingehen, ob Sie wollen oder nicht. Dieser Übergang enthält viele Änderungen in der Art und Weise, wie Sie über das Frontend (und möglicherweise auch über das Backend) nachdenken müssen.
Was sind die Hauptunterschiede beim Übergang von der konsolenbasierten zur GUI-basierten Programmierung?
Antworten:
Der größte Unterschied ist das Design der Benutzeroberfläche. Eine gute GUI kann eine Anwendung erstellen oder beenden. Mac-Fans würden auf die wunderschön gestalteten Benutzeroberflächen der durchschnittlichen Mac OS X-App aufmerksam machen, und sie haben ein Problem, aber dies ist kein technologisches Problem, sondern ein Problem mit Design, Ethos und Benutzerfreundlichkeit.
Was technische Fragen betrifft, in keiner bestimmten Reihenfolge:
Im Gegensatz zu Konsolenprogrammen, in denen Sie entweder nach Eingaben fragen oder ihnen die Ausgabe mitteilen, kann der Benutzer jederzeit in beliebiger Reihenfolge alles tun, was er möchte. Sie können nicht davon ausgehen, dass sie die von Ihnen erhoffte Reihenfolge einhalten, es sei denn, Sie erzwingen den Workflow-Assistenten.
Wie bereits erwähnt, spielen Ereignisse eine große Rolle, und es können mehrere Ereignisse auftreten, während Sie das letzte warten, sodass Sie Ihren Status nicht wirklich anhand des aktuellen Ereignisses erstellen können. Verwenden Sie Abschlüsse oder einen ähnlichen Mechanismus, um den Kontext für verschiedene Ereignisse aufrechtzuerhalten. In einer Konsolen-App ist Ihr FSM normalerweise in der Schleife "Eingabe abrufen, Eingabe verarbeiten, Ausgabe aktualisieren" in sich abgeschlossen. Es gibt nicht die gleiche Struktur in der GUI-Programmierung - das 'main' ist eine wiedereintretende ereignisgesteuerte Sache, oft eine ginormöse switch () -Anweisung.
Sie müssen unterschiedliche Bildschirmgrößen / -auflösungen berücksichtigen und der GUI erlauben, die Größe von 800 x 600 bis zum maximalen Monitor des Benutzers zu ändern.
Sie müssen verschiedene Eingabestrategien in Betracht ziehen - Maus, Tastatur, Berührung usw. Einige Technologien sind kostenlos (Scrollen mit dem Mausrad), andere erfordern Integrationsarbeit (Tinte).
Barrierefreiheit - Eine grafische Benutzeroberfläche eignet sich viel besser für Benutzer mit eingeschränktem Sehvermögen, eingeschränktem Hörvermögen, eingeschränkter Motorik oder eingeschränkter kognitiver Kompetenz. Ein 'ding'-Geräusch ist nett und offensichtlich im Vergleich zu einer kryptischen Fehlermeldung auf der Konsole.
Internationalisierung - Ich gehe davon aus, dass Ihre Konsolen-App nur US / ANSI ist, aber wenn Sie in die GUI einsteigen, können Sie Sprach- / Ressourcenpakete haben, die auf andere Sprachen und Regionen abzielen, ohne die Codierung zu ändern, wenn Sie sich auf die vorbereiten Start. Beispielsweise keine fest codierten Sprachzeichenfolgen im Code - alles als Ressourcensuche.
Sie haben viel mehr Möglichkeiten für die Implementierungstechnologie - webbasiert, verschiedene GUI-Kits, Flash / WPF usw.
Verwendung von Farbe und Animation. Konsolenprogramme sind im Allgemeinen einfarbig und animieren nicht viel. Viele moderne GUI-Frameworks bieten themenbezogene Widgets und oftmals kostenlose Bewegungs- / Größen- / Ein- / Ausblendeffekte.
Grafik. Konsolen-Apps verwenden manchmal ASCII-Grafiken für Diagramme, eine GUI-App bietet Ihnen jedoch vollständige grafische Möglichkeiten. Schöne Kunst kann auch einen großen Unterschied machen.
quelle
Für mich wäre es gewöhnungsbedürftig, ereignisgesteuert zu programmieren. Es kann immer noch auf konsolenbasierte Software angewendet werden, aber ich finde, es wird hauptsächlich mit GUI verwendet. Sobald Sie es verstanden haben, ist es ein sehr mächtiges Werkzeug.
quelle
Ich würde sagen, das Multi-Threading und seine Auswirkungen auf die Benutzeroberfläche (wenn Sie nicht blockierende Benutzeroberflächen tun möchten)
quelle
Die Berücksichtigung des Kontrollflusses auf der Benutzeroberfläche und die Validierung von Benutzereingaben werden sehr wichtig.
quelle
Ein Konsolenprogramm neigt dazu, im Laufe der Zeit verfeinert zu werden, während ein GUI-Programm dazu neigt, verschraubt zu werden.
quelle
Normalerweise stelle ich mir ein konsolenbasiertes Programm als Modell vor, während ein GUI-basiertes Programm der View / Controller ist, der das Modell einbettet.
quelle
Für mich war das Entwerfen einer guten Benutzeroberfläche immer eine größere Herausforderung als die technischen Details der Implementierung.
Es ist leicht zu sagen, "mach es einfach und klar, wie ein Mac". Es ist unglaublich schwer, es so zu machen; Es gibt immer so viele Details, die verfügbar sein sollten, aber gleichzeitig sollten sie außer Sichtweite sein.
Einfachheit http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png
quelle
In einigen (vielen?) Sprachen besteht der Hauptunterschied für mich darin, dass Sie jetzt eine Bibliothek auswählen müssen. Wenn Sie das Backbone (und mit etwas Glück noch viel mehr) in der Konsolenprogrammierung Ihrer Anwendung programmieren, werden die Standardressourcen Ihrer Sprache verwendet. Wenn Sie eine GUI hinzufügen, können Sie (hoffentlich) immer noch Ihr "Modell" in Standard-Idiomen haben, aber jetzt hängt die "Ansicht" zu einem großen Teil von einer externen Bibliothek ab (und hoffentlich bleiben Sie "für immer" dabei). Die Wahl dieser Bibliothek ist für einen Anfänger eine große Verantwortung, ebenso wie für Ihren (meinen) Fall (ganz zu schweigen von der zusätzlichen Lernschrittkurve).
quelle