15Fermer17
ZephLe 12/07/2012 à 09:26
Quand tu changes un int64_t en int32_t peut-être (et encore, tu vas vraiment faire ça dans tout un projet sans aller vérifier les 3 tonnes d'effets de bords que ça peut provoquer ? sans compter qu'il n'y a à peu près aucune chance pour que ça compile directement après ce genre de transformation), mais dès que tu changes entre des types un peu moins compatibles tu *veux* que ça ne compile plus, pour être certain de repasser sur tous les endroits du code où ça fait apparaître des problèmes. Prends un projet conséquent en JavaScript, et supprime un champ dans un objet. Par quel miracle veux-tu avoir une chance de trouver tous les endroits qui l'utilisaient, sachant qu'il peut y avoir des accès complètement dynamiques (object[fieldName]). Si tu ne t'es pas imposé de spécifier en commentaire les champs utilisés par chaque méthode qui faisait référence à ce champ, tu es cuit (ou bien tu peux aussi lancer le programme N fois et espérer être tombé sur tous les bugs quand tu auras réussi à le faire fonctionner à nouveau grin).

Si tu spécifies des types dans les interfaces, bien sûr que ça résout l'ambiguïté, mais ça n'est plus vraiment ce que j'appelle un langage dynamique pour le coup.