Astuces de recherche...
Home
- Accueil & nouveautés
- Les newsgroups VB
- Téléchargements
- L'équipe
- Nous contacter
- Liens
Rubriques
- Toutes les questions
- Affichage & graphismes
- Algorithmique
- API
- Base de registre
- Bases de données
- Contrôles
- Date & heure
- Déploiement
- Divers
- Erreurs & problèmes
- Fichiers & dossiers
- Généralités
- Impression
- Internet & mails
- Math
- Multimédia
- Réseaux
- Structures de données
- Texte & strings
- VB .Net
- VB Script
- VBA
- Windows

Question 104

Qu'entend-t-on par "early binding" et "late binding" ? Que préférer ?

Ces deux termes désignent des méthodes de liaisons d'une variable objet à l'interface de cet objet. Voilà pour la théorie... C'est bien joli mais ça ne veut pas dire grand-chose :-) Alors concrètement c'est quoi ? Rien de tel que des exemples pour aider à comprendre. Imaginons que l'on veuille créer une instance d'Excel. En late binding, on écrira :

Dim xl As Object
Set xl = CreateObject("Excel.Application")

Tandis qu'en early binding, on écrira plutôt :

Dim xl As Excel.Application
Set xl = New Excel.Application

Vous l'aurez compris, la différence tient à la déclaration de la variable "xl". Dans le premier cas la variable est déclarée comme étant de type "Object". Tandis que dans le deuxième cas celle-ci est déclarée comme étant de type "Excel.Application" après avoir évidemment coché une référence à la librairie objet d'Excel.

Attention, le fait d'employer CreateObject ne veut pas nécessairement dire que l'on travaille en late binding. Ainsi, dans cet exemple, on utilise bel et bien du early binding :

Dim xl As Excel.Application
Set xl = CreateObject("Excel.Application")

En fait la majeure différence entre les deux méthodes, est qu'en early binding des tables de types sont employées qui permettent de renseigner le compilateur sur les propriétés et les méthodes de l'objet. Tandis qu'en late binding c'est au moment de l'exécution du programme que l'on va interroger l'objet afin de savoir s'il possède telle méthode ou telle propriété.

Alors quels sont les avantages de l'un par rapport à l'autre ? Tout d'abord, voyons les avantages du early binding :

  • Le code s'exécute bien plus rapidement car une grosse partie du travail est faite lors de la compilation.
  • Le compilateur a la possibilité, à la compilation, de détecter les erreurs de syntaxe, puisqu'il connaît les méthodes et propriétés disponibles pour l'objet.
  • De même, l'early binding, permet d'avoir accès à l'intellisense (tapez le nom de l'objet suivit d'un point et une liste reprenant l'ensemble de ses propriétés apparaît).
  • Vous avez la possibilité d'employer les constantes prédéfinies exposées par l'objet en question.

Les avantages du late binding sont quant à eux :

  • Possibilité d'éviter les conflits de version (par exemple si l'on fait référence à Excel 2000 et que le poste possède Excel XP).
  • Au plus le projet possède de références, au plus la compilation est longue.
  • Dans certains cas on ne peut tout simplement pas employer l'early binding (par exemple en ASP ou en VBScript).

Bref, vous l'aurez compris, l'early binding devrait toujours être employé sauf dans certains cas particuliers.

Voici quelques liens qui présentent ces deux méthodes :

Date de publication : 26 janvier 2003
Dernière modification : 26 janvier 2003
Rubriques : Généralités
Mots-clés : early binding, lat beading, CreateObject, New