Arrrg ces personnes qui postent du code sous forme d'images.
Arrrg ces personnes qui postent du code sous forme d'images.
Bon, j'essaye de comprendre.
À priori, on a une structure $data[key][?] = id, et le premier foreach est un "bête" filtre :
Il essaye de supprimer les entrées avec un id non présents dans le tableau $search (ou les prends toutes si search est vide). Le premier foreach pourrait donc déjà devenir sa propre fonction.
J'ai l'impression qu'il a essayé d'optimiser son code, je présumes que $data contient BEAUCOUP de données, et que cette fonction est appelée de très nombreuses fois ?
Sinon il y a moyen de faire beaucoup, beaucoup plus simple.
La suite semble un peu bizarre, mais je pense que c'est dû au fait qu'il a oublié un array_flip, son premier array_flip devrait être dans sa condition if( !empty($search) ), le code deviendrait un plus simple/clair.
Si $data ne contient qu'une seule clé, il retourne le résultat (et fait un array_flip à cause de son oubli). Là, sa condition devrait contenir le return, et sur les 5 lignes, n'en avoir qu'une seule. Et virer le else vu que le if précédent fera un return.
Donc s'il y a plusieurs entrées, il va retourner une liste unique d'identifiant (i.e. supprimer les doublons), si et seulement si l'identifiant est contenu dans tous les autres $data[$key]. Donc son premier for de son else semble inutile, ainsi que son if dans son else. Le 3ème for pourrait devenir sa propre fonction.
Ça lui paraissait peut-être clair et limpide quand il l'a écrit, mais je suis prêt à parier qu'un an plus tard ça sera plus compliqué pour lui. On voit qu'il y a beaucoup de choses qu'on peut améliorer dans son code, pour en augmenter la lisibilité sans impacter grandement les performances.
J'ai l'impression qu'il n'avait pas les idées très claires quand il a écrit ce code et n'a pas pris le temps de prendre du recul sur ce qu'il voulait faire.
D'accord que le code en image c'est pas top, mais je préfère un truc en image avec une coloration syntaxique correcte
Non à peu près tout son code est comme ça. Mais c'était un asperger, beaucoup ont un mode de raisonnement particulier, et peuvent être beaucoup plus efficaces que d'autres pour certaines choses, mais ont beaucoup de mal à intégrer que d'autres personnes qui risquent d'avoir à intervenir dessus n'ont pas le même mode de pensée.
Je ne peux pas confirmer ou infirmer ton analyse, c'est une vieille application qu'on traîne comme un boulet depuis un moment, ce sont des milliers et des milliers de ligne de code, avec un paquet de variables qui s'appellent $a, $tmp, $data, $final sans que le contexte n'indique à ce que ça correspond. Des fois j'ai besoin d'intervenir dessus, ça me prend des heures. Des fois j'essaye de corriger des bugs, des endroits où il ne vérifie pas qu'une variable existe avant de l'utiliser, mais le code a besoin de s'exécuter coûte que coûte malgré les erreurs donc ça fait plus de dégats qu'autre chose.
On ne peut pas faire un truc du type CODE=php ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for($data as $key => $value) { echo $value; }
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for($data as $key => $value) { echo $value; }
Ouch...
Je vois. Par contre le code que tu nous a montré, ne me semble pas a priori "efficace" en terme de temps d'exécution.
Ouch...
Je ne veux pas être méchant, mais ne vous a-t-il pas au final fait perdre plus de temps qu'il ne vous en a fait gagné ?
Après, je comprends que ce n'est pas nécessairement de sa faute vu sa condition. Mais d'un point de vu résultats/entreprise, ça me semble quand même dur.
Sodium, j'ai retrouvé le message où tu avais publié cet exemple. C'était ici, le 15 juin 2017.
Deux jours plus tard, j'avais analysé ce code :
Je me rappelle que j'avais eu du mal à l'analyser. Je doute fortement que ce code paraisse "totalement logique et limpide" à son auteur, vu que le code n'a pas de sens. L'hypothèse qui me semble la plus probable est qu'il a modifié son code de manière itérative jusqu'à ce que ça marche sur les exemples qu'il a testés, mais en ayant perdu le fil sur l'algorithme dans son ensemble.
Si bien-sûr, mais j'aime pas la coloration syntaxique du forum. Mais j'aurais pu poster les deux il est vrai.
Les array_flip servent à chercher les valeurs dans les clés du tableau plutôt que dans son contenu, pour le coup c'est beaucoup plus efficace. Enfin ça l'était en php 5.3.6, je ne serais pas étonnée que le compilateur fasse ça tout seul. Mais il y avait en tout cas clairement des moyens plus intelligents de l'écrire.
Si bien-sûr, c'est pour ça qu'il ne travaille plus chez nous. Mais son application on en a encore besoin, même si personne ne comprend ce qu'elle fait concrètement. C'est pour ça qu'autant que possible il vaut mieux du code lisible plutôt qu'optimiser, les ressources machine coûtent moins cher que le temps humain nécessaire pour tester et faire évoluer le code. Bien-sûr il restera toujours des domaines où l'on a pas cette option.
Oui je me souviens
D'ailleurs, en relisant le code, je crois que je m'étais embrouillé dans mon analyse d'il y a 3 ans.
Je crois que $data associe à chaque caractère un tableau dont les éléments sont de type C et non pas un seul élément de type C.
Et dans le else final, je crois qu'on recherche les C qui apparaissent dans tous ces tableaux à la fois.
Je n'ai pas essayé d'exécuter le code.
Je pense que pas mal de devs doivent tirer une certaine satisfaction d'être à l'aise avec du code qui paraît compliqué, ça leur permet de dédaigner les gueux depuis leur tour d'ivoire.
Convaincue que quel que soit le domaine professionnel, de nombreuses personnes tirent un certain orgueil de leur intellect ainsi qu'un mépris de la populace à moins haut potentiel ? Le besoin de montrer aux autres que leur domaine d'expertise est compliqué et inaccessible au plus grand nombre ? Absolument
Pas que dans les domaines techniques d'ailleurs, le shitstorm des académiciens lors de chaque réforme de simplification de la grammaire française et l'abandon de l'usage de formes grammaticales compliquées est assez éloquent.
Alors même que le plus intelligent est sans doute celui obtient le résultat attendu avec le minimum de moyens, sans ergoter. Il y a une certaine pédanterie derrière tout ça effectivement.
C'est comme les types qui te mettent des pouces rouges alors que tu tiens des propos tout à fait banals.
Il y en a vraiment qui sont en mal de reconnaissance.
C'est sûrement des anciens habitués à taper du code à partir de pages de code dans des manuels papier.
Dans le temps, un développeur (on disait analyste-programmeur) c'était avant tout un forçat du clavier, la version moderne du moine copiste. Les disquettes existaient déjà mais je ne sais pas pourquoi on continuait à te fourguer le code sous forme papier. Une forme de perversion probablement.
J'en ai d'autres pour vous.
Pour ne pas me vexer choquer, il ne faut pas dire.
"On se voit demain"
"Je vois ce que tu veux dire."
"Est-ce que tu vois ce que je veux dire ?"
...
...
Il y a un formateur qui voulait dire en ma présence.
"Vous pouvez me faire confiance les yeux fermés."
Il n'a pas pu finir sa phrase gêné , on était plié de rire, car les autres me connaissaient bien.
Ou un gros lourd à distance lors d'une réunion skype, qui ne savait pas que il y avait un aveugle sur l'autre site, je venais d'arrivé.
Il lance "mais vous faîtes quoi, vous coder à l'aveugle !".
Il semble qui il aimait bien balancer des commentaires sur les autres.
J'ai dit oui, qu'est ce que je pouvais dire ?
Ouarf
Pour faire des documentations respectueuses de tout le monde va y avoir du boulot
C'est vous les plus gênés, nous on sait ce que ça veut dire et on utilise aussi ces expressions.
Je le dis souvent "on se voit demain", ce sont les autres les plus embarrassés.
Depuis les gens ont appris à vivre avec et savent dfaire la différence
ouarff ça promet de durer cette blague
Consultez mes articles sur l'accessibilité numérique :
Comment rendre son application SWING accessible aux non voyants
Créer des applications web accessibles à tous
YES WE CAN BLANCHE !!!
Rappelez-vous que Google est le plus grand aveugle d'Internet...
Plus c'est accessible pour nous, plus c'est accessible pour lui,
et meilleur sera votre score de référencement !
Dix petits nègres, Berlinale: «Le révisionnisme des agents du Bien»
Simultanément, l’arrière-petit-fils d’Agatha Christie a annoncé que le titre du roman Les dix petits nègres allait être mondialement modifié (car il a déjà été changé pour les États-Unis et le Royaume-Uni, dans les années 40 et 80), et que toutes les occurrences du mot litigieux allaient disparaître du texte, pour faire bon poids. On espère qu’il va poursuivre dans cette voie et réécrire entièrement l’œuvre de la vieille dame dont les descriptions de juifs et d’étrangers sont remplis de tous les préjugés anglais possibles. Ce serait logique car l’idée phare qui préside à cette purge est qu’Agatha Christie était trop gentille pour supporter que les gens puissent être blessés par ce qu’elle écrivait, et l’héritier se dépêche d’ériger sa gentillesse en principe: «Aujourd’hui heureusement, nous pouvons y remédier sans le trahir tout en étant acceptable pour chacun... […] Si une seule personne ressentait cela, ce serait déjà trop! Nous ne devons plus utiliser des termes qui risquent de blesser: voilà le comportement à adopter en 2020...» Il ne suffit pas que les contrôleurs de sensibilité rabotent préventivement la littérature de masse ou que les scénaristes de Netflix massacrent avec allégresse les œuvres qu’ils prétendent adapter, il faut encore que tout le passé admissible - et pour un moment encore seulement - soit raffiné. Telles sont les victoires magnifiques des gens éveillés (et plus ou moins roublards: l’héritier ne corrige que ce que #BlackLivesMatter menace, la Berlinale est heureuse de damer le pion aux autres festivals).
Keith Flint 1969 - 2019
Amusant. Le souci c'est que le "dix petits nègres" ne se trouve pas que dans le titre. C'est la comptine qui fait la pierre angulaire du roman tout entier
Dix petits nègres s’en furent dîner.
L’un d’eux but à s’en étrangler
- n’en resta plus que neuf.
Neuf petits nègres se couchèrent à minuit,
L’un d’eux à jamais s’endormit
- n’en resta plus que huit.
Huit petits nègres dans le Devon étaient allés,
L’un d’eux voulut y demeurer
- n’en resta plus que sept.
Sept petits nègres fendirent du petit bois,
En deux l’un se coupa ma foi
- n’en resta plus que six.
Six petits nègres rêvassaient au rucher,
Une abeille l’un d’eux a piqué
- n’en resta plus que cinq.
Cinq petits nègres étaient avocats à la cour,
L’un d’eux finit en haute cour
- n’en resta plus que quatre.
Quatre petits nègres se baignèrent au matin,
Poisson d’avril goba l’un
- n’en resta plus que trois.
Trois petits nègres s’en allèrent au zoo,
Un ours de l’un fit la peau
- n’en resta plus que deux.
Deux petits nègres se dorèrent au soleil.
L’un d’eux devint vermeil
- n’en resta donc plus qu’un.
Un petit nègre se retrouva tout esseulé,
Se pendre il s’en est allé
- n’en resta plus… du tout.
Et Agatha Christie fait ressembler au mieux les morts de son roman aux morts de la comptine. Alors il va faire quoi l'autre hypocrite ? Il va aussi modifier le texte de l'oeuvre ???
C'est vrai que ça devient vraiment du n'importe quoi.
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
"L’esclavage préexistait aux traites en Afrique" : l’histoire de l’esclavage n’est pas celle de l’Afrique, mais de l’humanité
C'est surprenant ! D'habitude quand les médias mainstream parlent d'esclavage c'est pour parler de la traite africaine.
C'est bien de rappeler que l'esclavage ce n'est pas que des blancs qui mettent en esclavage des noirs.
Des maîtres noirs avaient des esclaves blancs, des maîtres blancs avaient des esclaves blancs, des maîtres noirs avaient des esclaves noirs.
Il y a des marchands d'esclave qui devaient tout vendre.
Les termes "maître" et "esclave" n'ont pas de raison de blesser les noirs plus que les blancs.
Keith Flint 1969 - 2019
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager