Question

C’est quelque chose qui a été discuté à l’origine lors d’une présentation donnée par Charles Brian Quinn du Big Nerd Ranch à acts_as_conference . Il discutait de ce qu’il avait appris en enseignant un camp d’entraînement Ruby on Rails à de nombreuses personnes débutant dans la programmation et débutant dans Rails.

L'une des diapositives qui s'est démarquée était dans le sens où n'utilisait jamais foo et bar comme exemples pour tenter d'apprendre à quelqu'un à programmer . Son raisonnement était très simple.

Qu'est-ce qui est plus facile à comprendre?

baz = foo + bar

ou

answer = first_number + second_number

C’est ce qui m’est souvent arrivé à moi-même lorsque j’expliquais quelque chose et j’ai tout de suite sauté au hasard, mais j’ai ensuite pris conscience de mon erreur et rendu l’exemple beaucoup plus logique en utilisant un scénario du monde réel.

Cela s’applique particulièrement lorsque vous essayez d’enseigner à une personne qui n’a pas eu la chance d’être programmée et que vous finissez par avoir besoin d’expliquer foo et bar avant d’expliquer ce que vous essayez réellement d’enseigner.

Cependant, utiliser foo and bar pour les programmeurs expérimentés semble correct, même si je pense personnellement, avec Charles, que c'est quelque chose qui doit changer.

Une recherche SO rapide pour " foo " renvoie plus de 20 pages de résultats avec foo utilisé de différentes manières que je peux comprendre. Et dans certains cas, lorsque je lis une question sur une langue en particulier, je le fais pour mieux comprendre cette langue. Si des noms de variables applicables sont utilisés à la place de foo et de bar, cela facilite beaucoup la compréhension et l'interprétation du problème. Donc, pour les développeurs chevronnés, la construction semble aussi un peu imparfaite.

Est-ce une habitude qui pourra être battue? Pourquoi choisissez-vous de foo bar ou de ne pas foo bar?

Était-ce utile?

La solution

Cela dépend strictement de ce que vous essayez d’enseigner. Parfois, lorsque vous montrez un exemple de programmation, vous devez déclarer quelques éléments uniquement pour que l'extrait de code soit "complet", et ces éléments ne constituent pas l'essentiel de ce que vous affichez.

Par exemple, si vous souhaitez montrer comment déclencher une exception, je pense qu'il est correct de présenter un extrait tel que

.
public void foo() { 

   // Do some things

   if (errorCondition) {
      throw new Exception("Error message");
   }

}

Dans la mesure où il montre des exceptions, il est inutile de se soucier du nom de la méthode, donc foo est "légal". dans ce contexte, ou du moins pour moi.

Ce que je n'accepterais pas (dans ce même exemple) serait

public void foo() { 

   // Do some things

   if (bar) {
      throw new Exception(baz);
   }

}

car il cache ce que vous essayez d'enseigner.

Autres conseils

Je peux comprendre l’intérêt de parler à des non-programmeurs, mais quand vous êtes au tableau, que vous discutez d’un problème avec certains membres de l’équipe ... mes rires et mes barres me manqueraient. Je pense que la prévalence de foo / bar est un exemple de la capacité de la plupart des programmeurs à penser de manière abstraite.

Probablement plus un problème si vous êtes dans le domaine de la formation.

Je les utilise parfois. Mais seulement si un "réel" nom n'est pas pertinent.

Je les utilise pour démontrer que les valeurs de "foo" et "bar" suffisent, comme "vous pouvez obtenir la taille d'un objet avec sizeof (foo)". C'est pratique pour amener les gens à comprendre le concept général et pas seulement les détails. Par exemple, si je vous avais dit "vous pouvez obtenir la taille d'un objet avec un objet tel que sizeof (int)", il est presque garanti que quelqu'un vous demandera si cela fonctionne également pour les flotteurs.

Pour les nouveaux programmeurs, je dois dire que les termes foo et bar pourraient ne pas être connus. Je pensais que c’était quelque chose de spécifique à la langue (à savoir C), mais après avoir vérifié Wikipédia, je sais maintenant qu’ils ne sont que des détenteurs de place abstraits. Donc, si votre public est composé de personnes qui ne connaissent pas leur signification, quelque chose d’autre est beaucoup plus clair. De plus, first_number et indique donc que ce sont des chiffres, quelle que soit leur présentation, et pas autre chose.

Je choisis de ne pas tricher et interdire chaque fois que mon auditoire connaît suffisamment le concept en question pour que cela nuise à sa compréhension.

Le seul moment où Foo and Bar devrait être utilisé est lorsque vous parlez de quelque chose de si abstrait que l'ajout d'un contexte nécessiterait une discussion supplémentaire. Alors Foo et Bar sont un code beaucoup plus lisible et créé, plus facile à suivre que les alternatives, comme x, y et z.

Je pense que cela est dû à la nature sarcastique de beaucoup de programmeurs, ou peut-être pas si doucement. Tandis que beaucoup de gens ont essayé de donner différentes significations à foo / bar, la plupart, ou du moins beaucoup d’entre nous, pensent à "FUBAR", F ** K au-delà de la reconnaissance. C'est un moyen pour " expérimenté " les gens à faire un commentaire sarcastique à propos de tous les autres.

Pour cette raison, je ne l'utilise jamais pour un non-programmeur et ne l'utilise que rarement, même avec des programmeurs expérimentés. Si je l’utilise, vous pouvez parier que je fais une référence voilée au sujet qui nous occupe.

En plus d'éviter les mots absurdes comme foo & amp; J'ai trouvé qu'il est beaucoup plus important de fournir des exemples de code pour des scénarios réels qui ont les mêmes relations. Cela aide vraiment l'apprenant à comprendre correctement un sujet et évite les malentendus. Par exemple, si j'enseigne sur l'injection de dépendance et que je montre un exemple de code dans lequel une instance de la classe Car est injectée dans la classe Driver, personne ne va s'embrouiller et penser: "Cela signifie-t-il que la voiture contrôle alors le Driver?" .

Je pense qu'il existe une autre raison importante d'utiliser foo et bar dans les exemples. Ces noms indiquent clairement que vous n'invoquez aucun mot clé magique. Chaque fois que je lis des exemples de documentation ou de code, j'aime bien que les parties arbitraires de l'exemple soient clairement distinguées des parties nécessaires.

Si vous avez substitué le mot non-sens à ce qu'il représente de manière générique dans l'exemple de code, vous pourriez vous retrouver avec des noms qui ressemblent beaucoup aux mots-clés, aux classes ou aux méthodes que vous essayez d'expliquer. Le " mon " Le préfixe, comme dans myNumber , myFunction , est un bon compromis qui permet de distinguer les noms d'arbitres.

Je suis nouveau dans la programmation et plus ou moins autodidacte. J'ai lu beaucoup d'exemples de code en ligne et au début, je me suis retrouvé à remplacer foo et bar & c; avec des noms plus pertinents, tels que les exemples firstnumber et secondnumber ci-dessus.

Je préfère maintenant x, y, z, i ... parce que foo et bar semblent susciter des impulsions linguistiques dans mon esprit et peuvent me distraire de la routine et j'ai développé, en quelque sorte, la capacité de tenir un tout tas de variables différentes dans ma tête et rappelez-vous ce qu'elles sont. Mais je recommanderais quand même d'utiliser des noms pertinents pour enseigner à quelqu'un d'autre, en particulier pour expliquer le code à quelqu'un qui ne programme pas, mais qui a besoin de comprendre le fonctionnement du programme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top