Bonjour,

Sur des code sources instanciant des objets natifs, personnalisés ou issus de librairies externes,
je constate qu'il est reproché de ne pas détruire les instances manuellement.
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Public Sub Exemple()
    Dim MyInstance As MyClass
    Set MyInstance = New MyClass

    '// code quelconque

    Set MyInstance = Nothing
End Sub
Si à première vue, cela semble être une bonne pratique (on détruit ce que l'on a crée), il n'en est rien.
En effet, les mécanique standard du langage, aussi appelé "Garbage Collector", même s'il est rudimentaire, prendra en charge de détruire les instances automatiquement lorsque les variables sortirons de la portée courante.
Bien qu'elle ne soit pas fausse, c'est une pratique qui se substitue au GC, et qui, outre le fait d'écrire du code supplémentaire qui n'apporte que peut de plus-value, encourage le programmeur à consacrer de l'énergie et du temps à la gestion des ressources plutôt que se focaliser sur le comportement désiré.

Sauf exception (bugs, nécessité de détruire une instance prématurément, références circulaires ou documentation explicite d'une librairie), détruire manuellement les instances est inutile, et redondant.
C'est une pratique qu'il convient de ne pas encourager (programmation défensive).

En conclusion:
Soyons moderne,
Faisons un minimum confiance au GC,
Ne payons pas pour ce dont on a pas besoin.

Pour rappel:
Le GC fonctionne sur le principe du comptage de références.
Lorsqu'une variable est instanciée, le compteur de références est incrémenté.
Lorsqu'une variable sort de la portée courante, le compteur de références est décrémenté.
Lorsqu'une variable est affectée à Nothing, le compteur de références est décrémenté.
Lorsque le compteur de référence atteint zéro, la variable est effectivement détruite.

Je vous invite également à lire cet article de Microsoft, qui avance d'autres arguments:
https://learn.microsoft.com/en-us/ar...cts-to-nothing