Question

J'ai lu sur la façon dont le style échec rapide de la programmation dans des langages comme Erlang finissent avec des programmes beaucoup plus courtes que le style défensif dans la plupart des autres langues. Est-ce correct pour tous les types de programmes et quel est le raisonnement pour cela?

Était-ce utile?

La solution

programmes Fail rapides ne sont pas nécessairement plus court que les programmes de style défensif: elle dépend de la mise en œuvre et les mesures nécessaires pour rendre votre sécurité code défensif

.

Dans le cas de Erlang, les programmes échouent rapides sont généralement plus courtes en raison du style déclaratif et comment la machine virtuelle fait en sorte de générer des cas d'erreur pour vous. À titre d'exemple, dans la fonction:

day(1) -> sunday;
day(2) -> monday;
day(3) -> tuesday;
day(4) -> wednesday;
day(5) -> thursday;
day(6) -> friday;
day(7) -> saturday;

Toute valeur inattendue transmis à la fonction se traduira par une erreur qui peut être interceptée et traitée par un autre processus (par exemple .: superviseur). Ces erreurs vont aussi mettre en danger jamais le système dans son ensemble et ne nécessitent pas de code à ajouter à la fonction elle-même - tout se fait en dehors du chemin d'exécution normale par des comportements prédéterminés.

vous dans une langue dynamique où fail-rapide n'est pas la norme, contrôler manuellement les limites et lancer une exception vous. Ensuite, vous devez attraper l'exception au niveau local (essai au niveau supérieur ... prises inclus) si vous ne voulez pas tout le système pour aller vers le bas. Le code de gestion d'erreur doit généralement être inséré à travers le chemin d'exécution normal.

Dans un langage statique où fail-rapide n'est pas la norme, alors combien de temps votre code sera sera très dépend du système de type que vous avez. Si la langue permet de définir des types où les cas de pointe finissent par cochés pour vous par le compilateur, alors vous n'avez pas l'habitude de gérer cela à l'intérieur du code, en dehors des événements non déterministes (fichiers ne fonctionne pas, l'entrée d'utilisateur inattendu, etc.) langues avec de tels systèmes de type, de nombreuses erreurs seront pris avant l'exécution et vous aurez donc pas autant de cas défensifs.

Lorsque le traitement des erreurs ne peut être évité, les langues soutiennent idiomes fail-rapide (comme Erlang) permettra sans doute le code plus clair que les langues qui ne sont pas (statique ou non), principalement parce que le code des cas particuliers ne sont pas mélangé à l'aide du code pour le chemin d'exécution d'idéal.

Autres conseils

Voir les sections 4.3 et 4.4 de Joe Armstrong thèse .

Le style échec rapide de la programmation est axée sur une meilleure lisibilité et le débogage du code. L'expérience utilisateur est une cible secondaire:. Un utilisateur peut rencontrer étrange des messages d'erreur ou les défaillances du programme, mais la plus grande qualité du code permet aux programmeurs de trouver facilement le bogue et corriger le problème

programmation de style défensif, au contraire, met l'accent sur l'entrée de validation de l'utilisateur et d'autres parties de code. Le code est plus bavard, parce que le programmeur doit vérifier soigneusement entrée et ne parviennent grâce en cas d'erreur. Cela a conduit à plus de code (des programmeurs de point de vue) et une application plus robuste (des utilisateurs du point de vue).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top