Entierement d'accord avec toi sur le fait que les helpers sont des concepts de base et qu'ils sont sous-presentes dans la doc officielle alors qu'ils devraient etre utilises massivement au detriment des variables d'instance.
Mais en tant qu'enseignant (et non en tant que bon developpeur), je pense que la priorite est a mettre sur l'enseignement des pratiques les plus courantes avant les pratiques les plus propres (ou ce que tu veux). Si ce sont les plus utilisees, c'est que bien souvent ce sont les plus accessibles en terme de comprehension (donc les plus faciles a maitriser) et les plus succeptibles de leur permettre de se debrouiller en entreprise. Les bonnes pratiques sont presque inutiles dans un contexte academique, leur acceptation est tres souvent liee a un processus d'experience et non d'apprentissage scolaire (de ce que j'ai pu observer en tout cas). Donc dans le cadre d'un cours pour un premier apprentissage de rails: les variables d'instance oui, les helpers oui, decent_exposure ou helper_method, beaucoup moins... (surtout que le helper_method est souvent utilise de maniere absolument degueu par les debutants). Du mois c'est mon humble avis :D Le 6 juin 2013 09:19, Nicolas Blanco <[email protected]> a écrit : > Florian, merci pour ton message un peu "vérité générale" sur le fait > qu'en tant que développeur expérimenté on est tenté de vouloir tout de > suite enseigner des bonnes pratiques plutôt que la base. Difficile de > pas être d'accord. > > Mais je ne sais pas pour toi mais pour moi un helper Rails ça fait > partie de la base. > > Les helpers Rails sont justement un concept de base et il est > impossible de parler des vues dans un projet Rails sans traiter des > helpers qu'ils soient fournis par Rails ou bien custom. > > Il est possible d'écrire un projet Rails sans utiliser de variable > d'instance dans les vues mais difficilement envisageable de faire un > projet Rails sans utiliser d'helper (ou alors l'apport de Rails est > discutable). > > La seule bonne argumentation que j'ai vue pour l'instant est > simplement que de nombreux guides ou tutos pour débutants traitent de > ce concept, ainsi que le fait qu'il soit encore fortement utilisé par > les développeurs. > > En attendant il vaut mieux militer pour que ce concept soit > progressivement déprécié car pour l'instant je n'y vois aucun > avantage. > > Et pour les débutants, je pense qu'il faut parler des deux concepts > (utilisation de variables d'instance dans les vues et utilisation > d'helpers), mais se concentrer sur le deuxième principalement pour > leur éviter de prendre des mauvaises habitudes. > > > 2013/6/6 Christopher Dell <[email protected]>: > > Florian, en plein dans le mille, parfait. > > > > On 5 Jun 2013, at 19:13, Florian Dutey <[email protected]> wrote: > > > > Pour ma part, je serai aussi plutot d'accord avec les dernieres > > interventions. > > Il est facile, quand on enseigne, de vouloir commencer "par la fin". On > est > > trop souvent tente de vouloir donner tout de suite les meilleures > pratiques > > sans expliquer la base, puisque la "base" n'est pas la meilleure > pratique. > > > > Le probleme. c'est que sans la base, cela sera plus dur de comprendre le > > "reste" (qui s'appuie toujours sur celle ci). Comme cela a ete > parfaitement > > dit avant, il s'agit d'un "acte de foi". Dit vulgairement, ca revient a > > "c'est comme ca et tais toi". > > > > Je comprends tout a fait ta frustration. Vivant a l'etranger, j'ai > souvent > > des demandes d'explications ou de decouverte du francais. Les premieres > > fois, je commencais tout de suite par "parole de socrate" de lafontaine > car > > ce texte est magnifique (aussi bien au niveau de la forme que du sens). > Tout > > ce que j'ai fait, c'est degouter ces gens du francais. > > > > Donc si tu t'adresses a des debutants, je pense qu'il vaut mieux suivre > et > > expliquer la documentation officielle, bien leur expliquer les concepts > de > > base, ce qui est deja super complique pour des debutants (impossible de > > compter le nombre de gens qui ont bute des heures sur le concept de > "symbol" > > en ruby). Meme si la pratique n'est pas la meilleure, ils pourront > > l'utiliser partout. Alors que decent_exposure n'est valable que dans une > > appli qui l'utilise (et meme si c'est peut etre la "best practice ever", > > tout le monde ne l'utilise pas, loin de la!). > > > > My 2 cents > > Regards :) > > > > > > Le 5 juin 2013 11:49, Olivier El Mekki <[email protected]> a > écrit : > >> > >> Et sinon, en ce qui concerne le fait de ne pas parler à tes élèves des > >> variables d'instances des controllers, ça peut avoir des effets > >> désastreux : imagine ce qui se passerait si, se présentant comme > >> débutant rails en recherche d'un premier emploi, on leur faisait un test > >> de connaissance à l'entretien et qu'on s'apercevait qu'ils ne > >> connaissent pas ce principe de base :) > >> > >> Le top seraient qu'ils puissent dire "on utilise génèralement des > >> variables d'instances, mais avec decent_exposure ...". > >> > >> On 13:42 Wed 05 Jun , Thibaut Barrère wrote: > >> > Hello, > >> > > >> > comme Jean-Baptiste, je trouve que coller aux conventions qu'on trouve > >> > dans > >> > les docs standard et les tutoriels sur Rails (donc utiliser des > >> > variables > >> > d'instance) présente des avantages aussi, en terme de clarté, > notamment > >> > pour des débutants. > >> > > >> > Le pattern est simple, connu et bien documenté, il suffit de dire > qu'il > >> > ne > >> > faut pas en abuser, ne pas dépasser 2 à 3 variables probablement au > >> > pire. > >> > > >> > Si je dois me faire l'avocat du diable, on peut même indiquer qu'il > n'y > >> > a > >> > pas vraiment de magie, et qu'il s'agit simplement d'un pattern de type > >> > "passage de message" entre le contrôleur et la vue. > >> > > >> > Cela dit quand je vois qu'un bout de code est fragile de ce fait je > vais > >> > créer un helper pour lever une erreur, toutefois ça n'est pas > >> > systématique. > >> > > >> > On peut aussi adopter le point de vue suivant: comme pour Shoulda qui > >> > voit > >> > le matcher "assign_to" > >> > supprimé<https://github.com/thoughtbot/shoulda-matchers/issues/252> > et > >> > qui prône d'utiliser des tests d'intégration pour vérifier ce qui se > >> > passe > >> > pour l'utilisateur directement, et de considérer que les @variables > sont > >> > des mécanismes internes qui ne doivent pas être testés. > >> > > >> > Voilà - en résumé, en règle générale j'en utilise au plus quelques > unes, > >> > voir quelques helpers si code fragile. > >> > > >> > Thibaut > >> > -- > >> > http://www.logeek.fr > >> > > >> > > >> > 2013/6/5 Jean-Baptiste Barth <[email protected]> > >> > > >> > > Hello, > >> > > > >> > > Je suis plutôt contre l'avis général si tu touches un public de purs > >> > > débutants, qui ne bosseront pas que sur des applis qui suivent cette > >> > > pratique. > >> > > > >> > > Le côté magique ça déplait aux experts qui ont vu ses limites et > >> > > travers, > >> > > mais ça plait au débutant qui gagne en productivité et peut se > >> > > concentrer > >> > > sur autre chose. Si tu traites le débutant comme un expert, tu lui > >> > > demandes > >> > > un acte de foi qui marche pas forcément super bien à long terme > (c'est > >> > > un > >> > > des pbs avec J2EE en entreprise par exemple..). Ou alors il faut que > >> > > la > >> > > best practice soit naturelle, hyper répandue ou cachée par le > >> > > framework, et > >> > > là ce n'est pas le cas. > >> > > > >> > > En plus là on parle d'un concept simple, l'association est plutôt > >> > > facile à > >> > > faire je trouve. Il y a déjà assez de boulot à expliquer > >> > > rake/ruby/rails/bundler+l'orienté > >> > > objet+MVC+routes+environnements+initializers... > >> > > > >> > > Jean-Baptiste > >> > > > >> > > -- > >> > > -- > >> > > Vous avez reçu ce message, car vous êtes abonné au groupe > >> > > "Railsfrance" de > >> > > Google Groups. > >> > > Pour transmettre des messages à ce groupe, envoyez un e-mail à > >> > > l'adresse > >> > > [email protected] > >> > > Pour résilier votre abonnement envoyez un e-mail à l'adresse > >> > > [email protected] > >> > > --- > >> > > Vous recevez ce message, car vous êtes abonné au groupe Google > >> > > Groupes Railsfrance. > >> > > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > >> > > concernant, envoyez un e-mail à l'adresse > >> > > [email protected]. > >> > > Pour plus d'options, visitez le site > >> > > https://groups.google.com/groups/opt_out . > >> > > > >> > > > >> > > > >> > > >> > -- > >> > -- > >> > Vous avez reçu ce message, car vous êtes abonné au groupe > "Railsfrance" > >> > de Google Groups. > >> > Pour transmettre des messages à ce groupe, envoyez un e-mail à > l'adresse > >> > [email protected] > >> > Pour résilier votre abonnement envoyez un e-mail à l'adresse > >> > [email protected] > >> > --- > >> > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > >> > Railsfrance. > >> > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > >> > concernant, envoyez un e-mail à l'adresse > >> > [email protected]. > >> > Pour plus d'options, visitez le site > >> > https://groups.google.com/groups/opt_out . > >> > > >> > > >> > >> > >> -- > >> Olivier El Mekki. > >> > >> -- > >> -- > >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" > de > >> Google Groups. > >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > >> [email protected] > >> Pour résilier votre abonnement envoyez un e-mail à l'adresse > >> [email protected] > >> --- > >> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > >> Railsfrance. > >> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > >> concernant, envoyez un e-mail à l'adresse > >> [email protected]. > >> Pour plus d'options, visitez le site > >> https://groups.google.com/groups/opt_out . > >> > >> > > > > -- > > -- > > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" > de > > Google Groups. > > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > > [email protected] > > Pour résilier votre abonnement envoyez un e-mail à l'adresse > > [email protected] > > --- > > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > > Railsfrance. > > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > > concernant, envoyez un e-mail à l'adresse > > [email protected]. > > Pour plus d'options, visitez le site > > https://groups.google.com/groups/opt_out . > > > > > > > > -- > > -- > > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" > de > > Google Groups. > > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > > [email protected] > > Pour résilier votre abonnement envoyez un e-mail à l'adresse > > [email protected] > > --- > > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > > Railsfrance. > > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > > concernant, envoyez un e-mail à l'adresse > > [email protected]. > > Pour plus d'options, visitez le site > > https://groups.google.com/groups/opt_out . > > > > > > > > -- > Nicolas Blanco, Web developper > > http://www.nicolasblanco.fr > Jabber/GoogleTalk : [email protected] > Twitter : http://twitter.com/slainer68 > Github : http://github.com/slainer68 > Skype : slainer68 > > -- > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > Vous recevez ce message, car vous êtes abonné au groupe Google > Groupes Railsfrance. > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected] --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .
