Le débat entre l'approche statique et l'approche dynamique dure depuis plusieurs décennies. Plutôt que de se demander laquelle est la meilleure, il faut se demander à quelle étape les erreurs sont détectées et quel est le coût associé à chaque étape.
Plus une erreur est détectée tôt, moins elle coûte cher
- Au moment de taper le code — c'est presque gratuit, l'éditeur signale immédiatement les erreurs en rouge
- Lors de la compilation — quelques secondes d'attente
- Lors de l'exécution des tests — quelques minutes
- Sur l'ordinateur de l'utilisateur — ça coûte de l'argent et nuit à la réputation
Le style statique propage une exception à deux niveaux supérieurs. C'est là tout son intérêt, ni plus ni moins.
Le prix du style statique
Vous devez décrire la structure des données avant de les utiliser. Dans le cas d'un code à usage unique, cela représente un travail inutile. Dans un système sur lequel plusieurs personnes travaillent en parallèle pendant de nombreuses années, cette description est le seul document qui ne deviendra jamais obsolète.
Les frontières s'estompent
Les grands langages dynamiques disposent tous d'une classe de types optionnels, tandis que dans les langages statiques, l'inférence de types s'améliore de plus en plus, ce qui vous évite d'avoir à les écrire explicitement. En conséquence, les deux approches se rejoignent à mi-chemin.
Choisissez en fonction de la situation
- Scripts, analyse de données, tests rapides — le style dynamique l'emporte en termes de rapidité d'écriture
- Bibliothèques partagées, systèmes fonctionnant sur le long terme, équipes nombreuses — le type statique offre un retour sur investissement bien supérieur
- Code en interface avec le monde extérieur — quel que soit le langage, une vérification à l’exécution est nécessaire, car les types ne vous protègent pas contre les données corrompues
Ce type de données ne détecte pas les erreurs logiques. Il garantit simplement que vous n'ajoutez pas de chaîne de caractères à une date — c'est utile, mais il ne faut pas confondre cela avec la justesse.
Thảo luận