Sollte die grafische Gestaltung einer Benutzeroberfläche als "Betrug" betrachtet werden?

18

Ich habe einen Freund, der etwas mehr Programmiererfahrung hat als ich. Wir sprachen über all die verschiedenen Programmiertechnologien, die wir verwenden, und der Interface Builder kam ins Gespräch.

Da ich keine Programmierkenntnisse habe, außer dem, was ich selbst beigebracht habe, glaube ich persönlich, dass IB und all seine Funktionen ( IBOutlets, IBActions) Programmierern meines Könnensniveaus (und aller Könnensniveaus) dabei helfen, Projekte in kürzerer Zeit abzuschließen.

Sein Blick auf IB ist etwas enthusiastisch. Er glaubt, dass Programmierer, die Interface Builder verwenden, "schummeln", weil sie keine Interfaces von Hand anordnen müssen.


Frage:

Sollte die Verwendung eines GUI-Builders zum Layouten von Schnittstellenelementen als "Betrug" betrachtet werden (da die meisten Programmiervorgänge ursprünglich das Layouten von Schnittstellen von Hand in Code erforderten)? Warum?

esqew
quelle
32
Warum bellen, wenn Sie einen Hund kaufen können, der das für Sie erledigt?
Jfrankcarr
29
Mit einem Pickup-Truck betrügt man. Echte Männer laufen und zähmen wilde Pferde bei 120-Grad-Wetter. Sie nähern sich ihnen von hinten. Obligatorisch xkcd.com/378
Job
9
Fragen Sie Ihren Freund, warum er es nicht in Betracht zieht, einen Computer zu benutzen, anstatt die Dinge manuell zu betrügen
DPD
2
Es hört sich so an, als hätte Ihr Freund noch nie eine aggressive Frist für die Einhaltung dieser Frist gehabt.
MattDavey
15
Betrachtet man es als Betrug, ist es nur Programmier-Snobismus.
Alan B

Antworten:

60

Es betrügt nicht. Programme wie IB sind Werkzeuge. Verwenden Sie die richtige für den Job. Es ist nicht nötig, sich dogmatisch zu verhalten.

Wenn Sie mit einem solchen Tool effizienter arbeiten, verwenden Sie es. Die einzige Einschränkung besteht darin, dass Sie die Kompromisse kennenlernen sollten, wenn Sie Ihre Entscheidungen treffen. Wenn Sie Layouts von Hand erstellen, können Sie sie präzise steuern, ohne dass Sie sie per Drag-and-Drop verschieben müssen. Mit Drag-and-Drop-Tools können Sie viele Dinge schnell und einfach erledigen, die Pflege Ihres Codes gestaltet sich jedoch im Laufe der Zeit möglicherweise schwieriger.

Persönlich hatte ich noch nie Erfolg oder hatte viel Freude an der Verwendung eines Drag & Drop-UI-Designtools, aber das bin nur ich. Ich finde, dass das Auslegen von GUIs von Hand für mich am effektivsten ist und eine Codebasis ergibt, die im Laufe der Zeit einfacher zu warten ist. Andere haben die gegenteilige Erfahrung.

Bryan Oakley
quelle
3
Nur um es hinzuzufügen, Designer-Tools sind nur Code-Generatoren. Das Generieren von Code ist normalerweise eine gute Sache, da er generiert werden kann und Sie das tun können, was Sie tun sollen. Lassen Sie den Bildschirm tatsächlich etwas Nützliches tun. Meine Erfahrung unterscheidet sich; Ich war viel produktiver mit den Designer-Tools als nicht.
Andy
Als Ergänzung zu Andys Notiz macht das richtige Designer-Tool den Unterschied in der Welt aus. Ich habe Delphi / Lazarus für die GUI-Entwicklung verwendet und es war großartig. Ich bin auch beauftragt worden, MS Frontpage zu verwenden, und Sie erhalten schreckliches HTML heraus das andere Ende.
Spencer Rathbun
FWIW, mit MFC verwende ich den visuellen Editor, um es zu schließen, und stelle es dann von Hand ein, um es richtig zu machen. Das scheint der schnellste Weg für mich zu sein.
David Thornley
Ich habe kein Problem damit, ein spezielles Tool zu verwenden, um die Arbeit schneller zu erledigen, aber ich möchte Folgendes hinzufügen: Ich bevorzuge Tools, die datengesteuerte Modelle definieren, dh ein UI'a-Layout in XML, und nicht Codegeneratoren schreibe für dich "Button btn54 = neuer Button (x: 543, y: 782);"
Katana314
17

Programmieren als Beruf ist weder ein Sport noch ein Spiel. Das Betrugsargument ist also sehr dünn. Wenn die visuellen Tools Ihre Produktivität steigern, wären Sie dumm, sie nicht zu verwenden. Ich habe die Erfahrung gemacht, dass ich dadurch mehr Zeit für die eigentliche Problemlösung von Code aufwenden kann, ohne die trivialen Schnittstellen immer wieder zu bearbeiten.

Beachten Sie jedoch, dass sich Einstellungen oder Daten leicht in die Benutzeroberfläche einschleichen können. Seien Sie radikal, wenn es darum geht, Präsentation und Logik getrennt zu halten.

Pieter B
quelle
10

Es ist nur Betrug, wenn Sie etwas opfern, um dorthin zu gelangen. Die meisten GUI-Layouts generieren nur Code, den Sie sowieso erstellen würden (und müssen häufig von Hand bearbeitet werden, da das Layout nicht ausreicht).

Also im Grunde nein.

Wenn alles andere gleich ist, ist jedes Tool, mit dem Sie das Gleiche schneller erledigen können, gut.

Telastyn
quelle
Ich bin fest in dem Camp "Benutze die verfügbaren Layout-Tools". Die Tools sparen Zeit, obwohl der generierte Code häufig etwas optimiert werden muss. Der Typ "Es betrügt" klingt wie jemand, der sich nicht die Zeit genommen hat, das Generierte gut genug zu verstehen, um es zu bearbeiten.
Jim In Texas
4

Betrug ist der Name des Spiels. Sie sollten immer den einfachsten Weg einschlagen, wenn Sie eine Entwicklungsentscheidung treffen. Nennen wir es Betrug, nennen wir es "produktiv sein"; es macht keinen Unterschied. Sie sollten das Tool auswählen, mit dem Sie die Arbeit mit dem geringsten Aufwand erledigen können (natürlich sollten Sie die Wartung und Skalierbarkeit nicht vergessen).

Insbesondere bei IB sollten Sie die von IB eingesparte Zeit mit den Kosten für die Pflege von Code abwägen, der schlampiger ist und mit dem Sie weniger vertraut sind. Dies ist wirklich eine Entscheidung von Fall zu Fall und von Person zu Person. In vielen Fällen können Sie mit Tools und Assistenten viel mehr Arbeit mit geringen zusätzlichen Wartungskosten erledigen ... und manchmal führen sie Slop-Code und eine undichte Abstraktion ein, als Sie wissen, was zu tun ist. Es hört sich so an, als hätten Sie selbst die Entscheidung getroffen, dass IB die für die Entwicklung anfallenden Kosten wert ist. Ihr Freund kann jedoch genauso leicht feststellen, dass das Tool ihn eher behindert als hilft.

Morgan Herlocker
quelle
3

Auf keinen Fall. Es ist jedoch ein klarer Fall, dass Sie unnötige Arbeit für sich selbst erledigen müssen.

(Im Allgemeinen würde ich es mit einem Builder auslegen, und wenn eine Feinabstimmung erforderlich ist, wird es in der Regel - aber nicht immer - von Hand ausgeführt.)

Maximus Minimus
quelle
In .Net ab Version 2.0 glaube ich, dass die GUI und die Logik dank der Teilklassen getrennt sind - dieselbe Klasse wird in zwei verschiedenen Dateien definiert; eine wird vollständig automatisch generiert und eine wird von Ihnen angepasst.
Job
Ich kann der Aussage nicht zustimmen, dass es ein "klarer Fall ist, unnötige Arbeit zu leisten". Es hängt alles vom Werkzeug und den Fähigkeiten des Programmierers ab. Ich bin mir zum Beispiel sicher, dass ich eine tcl / tk-GUI schneller und mit besserem endgültigen Code von Hand codieren kann, als Sie es mit einem GUI-Builder Ihrer Wahl könnten. OTOH, ich würde beim Erstellen einer .net-Desktop-App auf keinen Fall in Betracht ziehen, etwas anderes als Visual Studio zu verwenden.
Bryan Oakley
Da es sich im OP ganz klar um den allgemeinen Fall handelt (siehe fettgedruckten Text in der Frage), kann ich Ihre Uneinigkeit in Bezug auf den allgemeinen Fall nicht akzeptieren, obwohl ich akzeptiere, dass Sonderfälle vorliegen können und existieren. Es war schon mal so.
Maximus Minimus
3

Es ist sicherlich kein Betrug, obwohl ich etwas weniger Respekt vor einem Entwickler hätte , der ohne eine GUI nicht auskommen könnte . IMO unterscheidet sich die Verwendung eines Datentyps nicht von der Verwendung eines vom System bereitgestellten Datentyps. Warum sollten Sie eine eigene verknüpfte Liste oder Hash-Map implementieren, wenn Sie eine aus der Systembibliothek verwenden können?

FWIW Ich musste vor ein paar Monaten ein UI in Java Swing implementieren. Ich hatte es nie benutzt, also schrieb ich alles von Hand, damit ich besser verstehen konnte, wie es funktionierte. Jetzt, da ich die grundlegende API kenne, werde ich nie wieder eine von Hand schreiben, wenn ich helfen kann!

TMN
quelle
1

Wie @Bryan Oakley feststellt , ist es nur ein Werkzeug und kein "Betrüger". Es hängt alles davon ab, was genau Sie auslegen. Wenn es unglaublich mühsam ist, von Hand zu trainieren, sollten Sie wirklich nach anderen Alternativen suchen, die Ihre Produktivität steigern.

Früher war ich im Lager der Hand, um die Schnittstelle zu programmieren, aber später, nachdem ich die Schnittstellen angeordnet hatte, nahm ich einen Pfeil zum Knie und war anderer Meinung. Wenn ich kann und es mich produktiver macht, würde ich ein grafisches Tool verwenden, um die GUI zu gestalten.

In letzter Zeit wurde durch die Verwendung des MVVM-Musters mit der Unterscheidung von View und ViewModel etwas klarer, wann Sie grafische Tools verwenden würden. Phil Haack diskutiert dies kurz in der Github for Windows-Episode des Herding Code-Podcasts, als er nach dem Übergang von der Web- zur Anwendungsentwicklung gefragt wird. Es ist sinnvoller, das ViewModel "von Hand" zu codieren und den Designer die View grafisch erstellen zu lassen (und die ViewModels entsprechend zu verkabeln).

Spoike
quelle
1

Einer der großen Vorteile von Tools wie Interface Builder ist, dass sie es ermöglichen, die Arbeit des Entwurfs der Benutzeroberfläche von der Implementierung des Programms zu trennen. Jemand mit minimalen Programmierkenntnissen kann leicht das Layout der Benutzeroberfläche ändern, Schaltflächen- und Menübeschriftungen ändern, die Benutzeroberfläche in eine andere Sprache übersetzen usw.

Mark Bessey
quelle