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 :
|