La présentation graphique d'une interface graphique doit-elle être considérée comme de la «triche»?

18

J'ai un ami qui a un peu plus d'expérience en programmation que moi. Nous parlions de toutes les différentes technologies de programmation que nous utilisons et Interface Builder est venu en conversation.

N'ayant aucune formation en programmation, sauf pour ce que j'ai appris moi-même, je crois personnellement que l'IB et toutes ses fonctionnalités ( IBOutlets, IBActions) aident les codeurs de mon niveau de compétence (et de tous les niveaux de compétence, d'ailleurs) à réaliser leurs projets en moins de temps.

Sa vision de l'IB est un peu enthousiaste. Il pense que les codeurs qui utilisent Interface Builder "trichent" du fait qu'ils n'ont pas à disposer les interfaces à la main.


Question:

Est-ce que l'utilisation d'un générateur d'interface graphique pour disposer les éléments d'interface doit être considérée comme de la «tricherie» (puisque la plupart des programmes exigeaient à l'origine la disposition des interfaces à la main dans le code)? Pourquoi?

esqew
la source
32
Pourquoi aboyer quand vous pouvez acheter un chien pour le faire pour vous?
jfrankcarr
29
Utiliser une camionnette, c'est tricher. Les vrais hommes dépassent et apprivoisent les chevaux sauvages par temps de 120 degrés. Ils les approchent par l'arrière. Obligatoire xkcd.com/378
Job
9
demandez à votre ami pourquoi il n'envisage pas d'utiliser un ordinateur au lieu de faire des choses manuellement comme de la triche
DPD
2
On dirait que votre ami n'a jamais eu de délai agressif à respecter.
MattDavey
15
Le considérer comme de la triche n'est qu'un snobisme de programmeur.
Alan B

Réponses:

60

Ce n'est pas de la triche. Des programmes comme IB sont des outils. Utilisez le bon pour le travail. Il n'est pas nécessaire de faire preuve de dogmatique à ce sujet.

Si vous êtes plus efficace en utilisant un tel outil, utilisez-le. La seule mise en garde est que vous devez apprendre les compromis lorsque vous prenez vos décisions. Faire des mises en page à la main vous donne un contrôle précis au détriment de la facilité de glisser-déposer. Les outils de glisser-déposer vous permettent de faire beaucoup de choses rapidement et facilement, mais peuvent rendre votre code plus difficile à maintenir au fil du temps.

Personnellement, je n'ai jamais eu de succès ou de plaisir à utiliser un outil de conception d'interface utilisateur par glisser-déposer, mais ce n'est que moi. Je trouve que la création d'interfaces graphiques à la main est la plus efficace pour moi et donne une base de code plus facile à maintenir au fil du temps. D'autres ont l'expérience inverse.

Bryan Oakley
la source
3
Juste pour ajouter, les outils de conception ne sont que des générateurs de code. La génération de code est généralement une bonne chose, car elle peut le générer et vous pouvez continuer à faire ce que vous êtes censé faire; faire en sorte que l'écran fasse quelque chose d'utile. Mon expérience diffère; J'étais beaucoup plus productif que jamais avec les outils de conception.
Andy
En complément de la note d'Andy, le bon outil de conception fait toute la différence dans le monde. J'ai utilisé Delphi / Lazarus pour le développement d'interface graphique et c'était génial. J'ai également été mandaté pour utiliser MS Frontpage, et vous obtenez un horrible html à l'autre bout.
Spencer Rathbun
FWIW, en utilisant MFC, j'utilise l'éditeur visuel pour le rapprocher, puis ajustez manuellement pour le faire correctement. Cela semble être le moyen le plus rapide pour moi.
David Thornley
Je n'ai aucun problème à utiliser un outil spécialisé pour faire le travail plus rapidement, mais pour ajouter: Ma propre préférence est pour les outils qui définissent les modèles basés sur les données, c'est-à-dire une interface utilisateur en XML - plutôt que des générateurs de code, qui écrire pour vous "Button btn54 = new Button (x: 543, y: 782);"
Katana314
17

La programmation comme travail n'est pas un sport ni un jeu. L'argument de triche est donc très mince. Si les outils visuels augmentent votre productivité, vous seriez stupide de ne pas les utiliser. D'après mon expérience, cela me permet de passer plus de temps sur le code de résolution de problèmes sans faire les choses triviales de l'interface encore et encore.

Attention cependant, il est facile pour les paramètres ou les données de se glisser dans l'interface. Soyez radical quant à la séparation de la présentation et de la logique.

Pieter B
la source
10

Ce n'est que de la triche si vous sacrifiez quelque chose pour y arriver. La plupart des mises en page GUI génèrent simplement du code que vous feriez de toute façon (et que vous devez souvent éditer à la main car la mise en page n'est pas suffisante).

Donc, fondamentalement, non.

Toutes choses étant égales par ailleurs, tout outil qui vous permet de faire la même chose plus rapidement est bon.

Telastyn
la source
Je suis fermement dans le camp «utiliser les outils de mise en page disponibles». Les outils permettent de gagner du temps, même si le code généré nécessite souvent quelques ajustements. Le gars qui «triche» sonne comme quelqu'un qui n'a pas pris le temps de comprendre assez bien le produit généré pour le modifier.
Jim In Texas
4

La tricherie est le nom du jeu. Vous devez toujours prendre la route la plus simple possible lorsque vous prenez une décision de développement. Appelez cela de la triche, appelez-le "être productif"; ça ne fait aucune différence. Vous devez choisir l'outil qui vous aide à faire le travail avec le moins d'effort (bien sûr, n'oubliez pas la maintenance et l'évolutivité).

Désormais, en particulier avec IB, vous devez peser le temps gagné par IB par rapport au coût de la maintenance d'un code plus lent et avec lequel vous êtes moins familier. Il s'agit vraiment d'une décision au cas par cas et de personne à personne. Dans de nombreux cas, les outils et les assistants vous permettent de faire beaucoup plus de travail avec un faible coût de maintenance supplémentaire ... et parfois ils introduisent du code slop et une abstraction plus fuyante que vous ne savez quoi faire. Il semble que vous ayez pris la décision par vous-même que l'IB vaut tous les coûts qu'il ajoute au développement, cependant, votre ami pourrait tout aussi facilement trouver que l'outil le gêne plus qu'il n'aide.

Morgan Herlocker
la source
3

Sûrement pas. Le faire entièrement à la main, cependant, est un cas évident de faire un travail inutile pour vous-même.

(En règle générale, je l'étalais à l'aide d'un générateur et si un réglage précis était nécessaire, il a tendance à - mais pas toujours - être fait à la main).

Maximus Minimus
la source
Dans .Net à partir de la version 2.0, je crois que l'interface graphique et la logique sont séparées grâce aux classes partielles - la même classe est définie dans deux fichiers différents; l'un est entièrement généré automatiquement et l'autre est personnalisé par vous.
Job
Je ne suis pas d'accord avec l'affirmation selon laquelle il s'agit "d'un cas évident de faire un travail inutile". Tout dépend de l'outil et des compétences du programmeur. Par exemple, je suis certain que je pourrais coder une interface graphique tcl / tk plus rapidement et avec un meilleur code final à la main que vous ne pourriez utiliser n'importe quel générateur d'interface graphique de votre choix. OTOH, il n'y a aucun moyen que j'envisage d'utiliser autre chose que Visual Studio si vous créez une application de bureau .net.
Bryan Oakley
Étant donné que le PO parle très clairement du cas général (voir le texte en gras dans la question), je ne peux accepter votre désaccord concernant le cas général, bien que j'accepte que des cas spéciaux puissent exister et existent. C'était toujours ainsi.
Maximus Minimus
3

Ce n'est certainement pas de la triche, même si j'aurais un peu moins de respect pour un développeur qui ne pourrait pas disposer d'une interface graphique sans. OMI, en utiliser un n'est pas différent de l'utilisation d'un type de données fourni par le système - pourquoi implémenter votre propre liste chaînée ou carte de hachage si vous pouvez en utiliser un hors de la bibliothèque système?

FWIW J'ai dû implémenter une interface utilisateur dans Java Swing il y a quelques mois. Je ne l'avais jamais utilisé, alors j'ai tout écrit à la main pour mieux comprendre comment cela fonctionnait. Maintenant que je connais l'API de base, je ne l'écrirai plus jamais à la main si je peux l'aider!

TMN
la source
1

Comme l' indique @Bryan Oakley , ce n'est qu'un outil et non une "triche". Tout dépend de ce que vous présentez exactement. Si à la main, c'est un exercice incroyablement laborieux, alors vous devriez vraiment chercher d'autres alternatives qui vous rendent plus productif.

J'étais dans le camp de codage manuel de l'interface, mais plus tard, après une série d'interfaces, j'ai pris une flèche au genou et j'ai eu une opinion différente. Si je le peux et que cela me rend plus productif, j'utiliserais un outil graphique pour disposer l'interface graphique.

En utilisant récemment le modèle MVVM, avec la distinction de View et ViewModel, il est un peu plus clair quand vous utiliserez des outils graphiques. Phil Haack en parle brièvement dans l' épisode Github pour Windows du podcast Herding Code lorsqu'il est questionné sur la transition du Web au développement d'applications. Il est plus logique de faire le ViewModel avec le codage "à la main", et de laisser le concepteur construire la vue graphiquement (et câbler les ViewModels en conséquence).

Spoike
la source
1

Un des grands avantages d'outils comme Interface Builder est qu'ils permettent de séparer le travail de conception de l'interface utilisateur de la mise en œuvre du programme. Quelqu'un avec une compétence de codage minimale peut facilement changer la disposition de l'interface utilisateur, modifier les légendes des boutons et des menus, traduire l'interface utilisateur dans une langue différente, etc.

Mark Bessey
la source