Je parle des gens qui bien souvent érigent ce genre de "règle" ou de pratique en dogme sans savoir pourquoi, et/ou en font l'apologie sans préciser le contexte. Un peu comme les adeptes de "goto considered harmful" qui n'ont même pas lu le papier, oublient le contexte dans lequel il a été écrit, et s'en servent pourtant pour justifier une haine irrationnelle des gotos.
Pas de goto et un seul return ne devraient pas être une règle dans 99,99999999% des environnements de programmation. Ne pas mettre de goto et mettre un seul return va rendre CERTAINS codes plus simples et plus complexes. Dès lors l'ériger en règle ou bonne pratique ou que sais-je est crétin si on ne garantie pas par avance que le contexte est tel que cette "bonne pratique" va produire des effets positifs et jamais de négatifs (ou uniquement un nombre très faible de négatifs).
Il n'y a même pas besoin de chercher très loin pour trouver des exemples avec lesquels un seul return produit un code plus complexe que plusieurs:
(note : omettre le second pour profiter du return None implicite de python ne le ferait pas pour autant disparaître sémantiquement)
Quant au goto il est extrêmement pratique pour la libération de ressources sur erreur en C, ou pour certains algorithmes un peu pointus.
Et il n'y a pas à parler de besoin de trace ou que sais-je avant d'en avoir vraiment besoin.
En outre, quand c'est dans un standard de codage, cela dénonce parfois une approche culturelle du développement par l'encadrement rigide de gens peu compétents et le code résultant à beau satisfaire toutes les règles magiques en question, c'est de la merde en boite pour d'autres raisons. Le cargo cult programming n'a jamais produit de bons résultats…
Pour avoir une illustration d'un contexte où pas de goto et un seul return aurait des effets délétère et serait complètement crétin, lire un noyau de système d'exploitation généraliste. Ou pour un effet encore plus rigolo envoyer des patch pour supprimer des goto de Linux en les remplaçant par des choses plus complexes et admirer comment on se fait accueillir :p
[^] # Re: Julia
Posté par Guillaume Knispel . En réponse au journal De l'enseignement de la programmation en classe préparatoire. Évalué à 7.
Je parle des gens qui bien souvent érigent ce genre de "règle" ou de pratique en dogme sans savoir pourquoi, et/ou en font l'apologie sans préciser le contexte. Un peu comme les adeptes de "goto considered harmful" qui n'ont même pas lu le papier, oublient le contexte dans lequel il a été écrit, et s'en servent pourtant pour justifier une haine irrationnelle des gotos.
Pas de goto et un seul return ne devraient pas être une règle dans 99,99999999% des environnements de programmation. Ne pas mettre de goto et mettre un seul return va rendre CERTAINS codes plus simples et plus complexes. Dès lors l'ériger en règle ou bonne pratique ou que sais-je est crétin si on ne garantie pas par avance que le contexte est tel que cette "bonne pratique" va produire des effets positifs et jamais de négatifs (ou uniquement un nombre très faible de négatifs).
Il n'y a même pas besoin de chercher très loin pour trouver des exemples avec lesquels un seul return produit un code plus complexe que plusieurs:
(note : omettre le second pour profiter du return None implicite de python ne le ferait pas pour autant disparaître sémantiquement)
Quant au goto il est extrêmement pratique pour la libération de ressources sur erreur en C, ou pour certains algorithmes un peu pointus.
Et il n'y a pas à parler de besoin de trace ou que sais-je avant d'en avoir vraiment besoin.
En outre, quand c'est dans un standard de codage, cela dénonce parfois une approche culturelle du développement par l'encadrement rigide de gens peu compétents et le code résultant à beau satisfaire toutes les règles magiques en question, c'est de la merde en boite pour d'autres raisons. Le cargo cult programming n'a jamais produit de bons résultats…
Pour avoir une illustration d'un contexte où pas de goto et un seul return aurait des effets délétère et serait complètement crétin, lire un noyau de système d'exploitation généraliste. Ou pour un effet encore plus rigolo envoyer des patch pour supprimer des goto de Linux en les remplaçant par des choses plus complexes et admirer comment on se fait accueillir :p