J’aime bien regarder le code des autres. Parfois, on tombe sur des choses élégantes, propres, commentées, etc. Mais le plus souvent, on découvre des horreurs qui ne peuvent résolument sortir que d’un esprit complètement pervers.
Voici un petit échantillon de ce avec quoi je me bas aujourd’hui.
Commençons doucement avec le gars qui n’était pas là le jour du cours sur les booléens (il s’agit de code PHP) :
if(!$e) $e = true; ... if($var == true) ... if($var !== false) ...
C’est bien connu, les développeurs sont des fainéants :
Et là, l’aberration qui m’a fait bondir de mon fauteil en poussant un bon gros « WTF !? » :
do { switch($var) { case ...; case ...; } } while(false);
Do-While-False ? Ya des tordus, je vous dis.
3 Commentaires
mdr je crois que je connais le projet dont tu parles
Par contre, le
if($var !== false)
peu tout à fait se justifier, puisque tu vérifies l’identité (même valeur et même type), enfin la non identité dans le cas présent.
Le do {} while(false) ; est très utilisé par certains développeurs kernel (j’ai vu ça dans des drivers OSKit par exemple), ça permet de quitter la boucle en cas d’erreur sans quitter complètement la fonction. Une sorte de gestion d’exception à la try {} except() {} ; en C.
Le do while false est au contraire très pratique, mais ça dépend surtout des langages.
Les produits adobe (par exemple inDesign) utilisent énormément ce type de structure. L’intérêt est d’avoir en fait un block dans lequel on puisse avoir un break. Le code suivant le block est en général le traitement du retour en cas d’erreur, de mauvais fonctionnement. Souvent le return correct se fait avant le while.
Mais en c++ par exemple un block n’existe pas, il faut donc en fabriquer un. do{}while(false) ; le permet (même si c’est il faut l’avouer un peu tordu, ça reste juste un manière de combler les lacunes du langage…)
One Trackback
[...] Mais au fond, qu’est-ce qu’un mauvais développeur ? Intuitivement, nous savons les reconnaître quand nous les voyons (ou quand nous voyons leur code). [...]