Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Dans mon école d'ingénieurs où l'on apprend le Java sur un gros projet, codé en équipes de six, je m'arrache les cheveux à chaque fois que les membres de mon équipe m'envoient leur code (par e-mail au lieu d'utiliser le dépôt SVN, mais passons…). Voici un exemple :

for (int j = 0; j < path.size() – 1; j++)
{ //début de la boucle for, en parcourant toute l'ArrayList<Noeud> path
  Arc a = new Arc( [les paramètres qui vont bien(ndlr)] );
  arcs.add(a); // On rempli l'ArrayList<Arc> arcs avec l'Arc a qu'on vient de créer
} //fin de la boucle for

Ça y est, ils ont fini par comprendre que les commentaires sont très importants. Prochaine étape : leur apprendre à commenter utilement. PEBKAC.
PEBKAC #9407 proposé par baudouin le 04/02/2014 | 41 commentaires | 👍🏽 👎🏽 +161
C'est bien, il a fallu que je lise 3 fois la boucle pour comprendre que c'était un pauvre AddRange().

@OP: Bon courage :)

Edit: Je préfère quand même Link path.ForEach(a => arcs.Add(a));
Commentaire #128329 écrit par Shadam le 04/02/2014 à 12h38 | 👍🏽 👎🏽
//début de mon commentaire
Tu sembles oublier que commenter est la base de la programmation bien faite.
//fin d'un commentaire débile et useless
Commentaire #128338 écrit par Aaargh!!! le 04/02/2014 à 12h48 | 👍🏽 👎🏽
C'est bien, toi au moins t'as compris autre-chose que les commentaires! XP

Merci pour l'explication.
Commentaire #128339 écrit par Fox le 04/02/2014 à 12h49 | 👍🏽 👎🏽
<comment class=useless>Note que ça n'est pas réalisable sur tous les langages de prog.</comment>
Commentaire #128340 écrit par Aaargh!!! le 04/02/2014 à 12h49 | 👍🏽 👎🏽
#!/bin/zsh
 
 # $Id: 9407_4 1 2014-02-04 13:05:12Z Alfred456654 $
 
 ##################################################
 # This comment is a reply to Aaargh!!!'s comment #
 ##################################################
 
 lol
Commentaire #128351 écrit par Alfred456654 le 04/02/2014 à 13h05 | 👍🏽 👎🏽
Moi aussi j'ai du matos de pointe pour envoyer mes emails, hein.

------------

Message envoyé depuis mon ordissimo.
Commentaire #128356 écrit par Aaargh!!! le 04/02/2014 à 13h12 | 👍🏽 👎🏽
Existe-t-il un language dans lequel ton commentaire compilerait ?
Commentaire #128357 écrit par Acorah le 04/02/2014 à 13h12 | 👍🏽 👎🏽
On est quand même d'accord que le premier commentaire est utile? Je l'aurais au moins épuré en "Parcours de l'ArrayList<Noeud> path" mais l'idée est là.
Sinon je plussoie les opérations ensemblistes qui auraient rendu tout commentaire inutile.
Commentaire #128360 écrit par Noraa_unlogged le 04/02/2014 à 13h17 | 👍🏽 👎🏽
Le Kuleinmouthon. :redface:
Commentaire #128369 écrit par Aaargh!!! le 04/02/2014 à 13h33 | 👍🏽 👎🏽
hahaha mais dis moi ton école, c'est pas une école qui forme des ingénieurs humaniste et qui aurait un rhinocéros sur l'une de ses pelouses?

(parce que la description du projet me fait fort penser à une telle école dans laquelle j'ai eu le relatif plaisir de faire mes études :P )
Commentaire #128371 écrit par yomama le 04/02/2014 à 13h35 | 👍🏽 👎🏽
Pas certain qu'on puisse l'écrire si simplement en Linq.. On peut raisonablement assumer qu'il a besoin de l'élément suivant dans le tableau vu qu'il ne se sert pas du dernier (il ne mse semble pas qu'on y ait accès de façon simple avec la syntaxe que tu proposes). Après je peux me tromper hein...
Commentaire #128376 écrit par triman le 04/02/2014 à 13h42 | 👍🏽 👎🏽
Euh, on a une poule dans une cave, mais pas de rhinocéros sur de la pelouse...
C'est pas un école d'info que je fais, mais comme l'informatique est importante, on a quand même des cours.
FYI, le projet complet consistait à modéliser des robots pompiers qui vont éteindre des feux.
Commentaire #128377 écrit par baudouin le 04/02/2014 à 13h44 | 👍🏽 👎🏽
ok rien à voir en fait ^^
Commentaire #128380 écrit par yomama le 04/02/2014 à 13h49 | 👍🏽 👎🏽
@yomama : Nope. Déjà on a plus de pelouse à Supaéro, et si par rhinocéros tu entends notre directeur adjoint, c'est pas très gentil, quand même.
Ayant eu le même projet à faire l'an dernier, j'y ai également découvert les joies des projets informatique de groupe : le collègue qui, la veille au soir de la présentation, décide de "corriger un dernier bug", "j'y passerai la nuit s'il le faut". Résultat, le lendemain, on avait une version de l'application qui ne marchait que pour sa partie, et une autre pour le reste. La classe.
Commentaire #128381 écrit par foucdeg le 04/02/2014 à 13h52 | 👍🏽 👎🏽
path.ForEach(item => { Arc a = new Arc(item); arcs.Add(a) } ); ?


Et oui bien sûr Linq pas Link.
Commentaire #128385 écrit par Shadam le 04/02/2014 à 13h55 | 👍🏽 👎🏽
arcs.AddRange(path.Select(p => new Arc(p))); est plus clean je trouve (pareil, pas sûr que le foreach passe tout seul).
Effectivement ça suppose qu'on ne se sert pas des autres, ce qui est peut-être faux vu qu'on parle d'arcs.
Commentaire #128387 écrit par Achess le 04/02/2014 à 13h55 | 👍🏽 👎🏽
Tant qu'ils ne tentent pas de remplacer les vrais pompiers par leur robots, tout va bien
Commentaire #128389 écrit par spidermoon le 04/02/2014 à 13h56 | 👍🏽 👎🏽
Mon intérogation était plutôt concernant la dépendance aux autres éléments de path.
Commentaire #128391 écrit par triman le 04/02/2014 à 13h57 | 👍🏽 👎🏽
Le Avèkunchahpô aussi.... =)

Plus évident!

http://www.servimg.com/image_preview.php?i=348&u=13357670
Commentaire #128403 écrit par Fox le 04/02/2014 à 14h16 | 👍🏽 👎🏽
nan nan c'est un vrai rhino, cherche rhino des humas sur google tu trouveras sa page facebook
Commentaire #128404 écrit par yomama le 04/02/2014 à 14h16 | 👍🏽 👎🏽
Moi aussi, je me préfère. Par contre, il y a un bout de code en trop à la fin de ta dernière phrase.
Commentaire #128409 écrit par Link le 04/02/2014 à 14h25 | 👍🏽 👎🏽
C'est pour ça que je me suis repris (http://www.pebkac.fr/pebkac/9407/#comment_128385) je m'en voudrais que tes chevilles t'empêchent de rentrer dans tes chaussures... :)
Commentaire #128414 écrit par Shadam le 04/02/2014 à 15h01 | 👍🏽 👎🏽
Je ne le blâmerais pas, il est évident que c'est une des premières fois sinon la première fois qu'il code vraiment et je me souviens qu'à mes débuts j'ai fait la même chose (en C mais bon)

Il faut bien apprendre et il se rendra vite compte tout seul comment mettre des commentaires plus pertinents ^^
Commentaire #128424 écrit par Nejaa Halcyon le 04/02/2014 à 16h27 | 👍🏽 👎🏽
@spidermoo : <troll> Surtout si les robots sont codés en Java... </troll>
Commentaire #128431 écrit par Somadeva le 04/02/2014 à 17h41 | 👍🏽 👎🏽
Ca a déjà été tenté dans Robocop, ça a donné l'ED209.
==> [ ] clac
Commentaire #128444 écrit par Acorah le 04/02/2014 à 18h07 | 👍🏽 👎🏽
Ah, mais c'est un rhino quelque part sur le campus la doua non?
Suis tombée dessus un jour en voulant prendre un raccourci...gros moment wtf...
Commentaire #128448 écrit par Elissa :-) le 04/02/2014 à 18h09 | 👍🏽 👎🏽
Selon ce que tu mets derrière le mot compilation, les commentaires sont toujours compilés. Ils sont toujours lus par l'analyseur syntaxique du compilateur. Par contre, ils ne sont pas remplacés par du code machine après...
Commentaire #128457 écrit par o4b le 04/02/2014 à 18h49 | 👍🏽 👎🏽
en lolcode ?
http://lolcode.org/1.2_spec.html
Commentaire #128459 écrit par Alfred456654 le 04/02/2014 à 19h13 | 👍🏽 👎🏽
Ou encore en Java :

`foreach(Node node:nodes) { arcs.add(new Arc(node)); }`

... sans oublier de tester que nodes et arcs ne sont pas nuls.
Commentaire #128484 écrit par kane le 04/02/2014 à 21h28 | 👍🏽 👎🏽
Bon, louper pour l'affichage du code...
Commentaire #128485 écrit par kane le 04/02/2014 à 21h31 | 👍🏽 👎🏽
*loupé ... pour l'orthographe aussi
Commentaire #128486 écrit par kane le 04/02/2014 à 21h34 | 👍🏽 👎🏽
@o4b : Je parlais du commentaire PEBKACien, pas des lignes qui commencent par //. La ligne du milieu ne compile sur aucun des langages que je connais.
Commentaire #128494 écrit par Acorah le 04/02/2014 à 22h24 | 👍🏽 👎🏽
Si arcs est vide avant la boucle, on peut même utiliser :
arcs = path.Select(it=> new Arc(it)).ToList();
Commentaire #128496 écrit par Raizarachi le 04/02/2014 à 23h19 | 👍🏽 👎🏽
Le markdown est réservé aux membres. Une stratégie commerciale de Clem pour forcer les inscriptions, et demander plus de pognons aux publicitaires.
Commentaire #128541 écrit par Link le 05/02/2014 à 17h21 | 👍🏽 👎🏽
for (int j = 0; j < path.size() – 1; j++)
C'est volontaire, le -1 sur la borne sup, ou il y a une confusion entre < et <= ?
Commentaire #128797 écrit par Ethaniel le 07/02/2014 à 14h15 | 👍🏽 👎🏽
Je ne me souviens plus, désolé. Mais vu le code je crois que c'était une erreur.
Commentaire #128802 écrit par baudouin le 07/02/2014 à 17h03 | 👍🏽 👎🏽
Pas vraiment clean, ça va recréer une nouvelle structure de liste et l'autre sera droppée par le GC.
Au maximum, ne pas redéfinir les instances (un ICollection private readonly serait au top si c'est un field), d'où le AddRange que j'avais posté plus haut.
Au pire, rajouter un .clear(); avant si nécessaire.
Commentaire #128832 écrit par Achess le 07/02/2014 à 22h48 | 👍🏽 👎🏽
Désolé, je me suis mal exprimé. Quand je disais vide, je pensais null, ce qui a plus de sens en effet.
Commentaire #128837 écrit par Raizarachi le 08/02/2014 à 00h05 | 👍🏽 👎🏽
Effectivement, vu comme ça ça a carrément plus de sens :)

Mais d'une manière générale, c'est pas top de créer des listes / arrays depuis les expressions Linq. Si jamais on zappe le ToArray ou ToList (ou ToDictionary pour les téméraires), on se retrouve avec un objet un peu dégueu qui rentrera quand même dans un IEnumerable mais qui peut avoir un comportement un peu chelou (typiquement qui passera pas par WCF, ou qui chiera avec un paquet de librairies).

Toujours privilégier la création d'une instance au plus tôt (et la destruction au plus tard), avec des Add / Remove, quitte à faire un clear() au milieu au besoin.
Commentaire #128940 écrit par Achess le 08/02/2014 à 18h27 | 👍🏽 👎🏽
nda, pas ndlr ... Tu n'es pas une rédaction complète !
Commentaire #129593 écrit par Sproutch le 12/02/2014 à 15h17 | 👍🏽 👎🏽
Ceci dit, avec un langage genre Applescript qui imiterait la syntaxe du français...
Commentaire #129638 écrit par Somadeva le 12/02/2014 à 19h02 | 👍🏽 👎🏽