J'ai récemment découvert que PHP 5.3 supportait une nouvelle construction de langage appelée GOTO
. Tout le monde sait ce qu'il fait. Cependant, ce n'est pas exactement le GOTO
traditionnel, c'est juste une étiquette de saut. Je suis intéressant de savoir si ce GOTO
est diabolique et implique un mauvais code?
Réponses
Trop de publicités?Une mauvaise structuration du code est néfaste, quelle que soit la structure de contrôle utilisée.
Personnellement, je préfère un goto qui indique clairement le flux du programme pour "contrôler les variables" et imbriqué "si", ce qui entraînera indirectement la même branche dans le code.
Donc, écrivez simplement les deux versions (avec et sans GOTO) et voyez laquelle est la plus facile à comprendre. Alors le choix est facile.
Je pense que c'est la partie la plus importante du PHP de la page de manuel et de manque ici:
Ce n'est pas complète sans restriction goto. L'étiquette cible doit être dans le même fichier et le contexte, ce qui signifie que vous ne pouvez pas sauter hors de fonction ou de méthode, et vous ne pouvez pas sauter dans un. Vous ne pouvez pas sauter dans n'importe quelle sorte de boucle ou de l'interrupteur de la structure. Vous pouvez sauter en dehors de ceux-ci, et une utilisation courante est d'utiliser un goto en place d'un multi-niveau de la rupture.
À mon humble avis cela le rend très différent de la ye olde style de BASE gotos.
Je suis dans la minorité (pour l'instant), mais je crois que les restrictions à la mise sur PHP construction goto faire un très utile outil:
http://adamjonrichardson.com/2012/02/06/long-live-the-goto-statement/
J'ai fait marcher à travers un exemple de la flèche (code profondément imbriqués conditionnelles) et refactoriser le code en utilisant la norme de pratiques (garde des clauses, conditions de regroupement, tirant fonctions), dans une version et un goto version dans l'autre version, et je préfère aller à une base de refactoring.