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?
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.)
quelle
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!
quelle
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).
quelle
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.
quelle