ScSami
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
5 juil. 2005 à 04:29
Bon, que "End" mette directement fin au programme sans
demander l'avis de l'utilisateur moi je veux bien, mais dire qu'il ne
détruit pas toujours les objets, alors là, je ne suis plus d'accord!!!
Tout comme d'ailleurs ce qui concerne les Timers!!! Une fois que la
feuille est déchargé, y'a aucune chance pour qu'un quelconque ancien
Timer étant dessus déclanche une quelconque ancienne ligne de code puis
qu'il n'y a plus rien en mémoire !!!
Non, le fait est que ce qui dérange vraiment c'est que End met fin au
programme de manière un peu trop "brutale" pour certain et sans passer
par toutes ces maniaqueries de "parfait programmeur". Autrement dit, ce
qu'on lui reproche est plus de ne pas suivre la procédure
réglementaire! Procédure réglementaire prévue pour éviter aux codeurs
irresponçables d'oublier de demander l'avis de leurs utilisateurs pour
arrêter le programme.
Mais nous ne sommes pas non plus tous irresponçables lorsqu'on l'emploi!!!
Bref, personnellement je ne crois pas en l'argument technique ni même
en celui structurel ! Je crois juste qu'il est, un peu comme GoTo, un
peu trop efficace pour certain et qu'a ce titre il fait peur!!!
D'ailleurs, j'en veux pour preuve ce que dit la MSDN et qu'il faut savoir interprêter :
"Note L'instruction End met immédiatement
fin à l'exécution du code, sans appeler d'événement Unload, QueryUnload, ou
Terminate, ou tout autre code Visual Basic. Le code que vous avez écrit dans les
événements Unload, QueryUnload, et Terminate des
<object id= "alink_9" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>feuilles et des
<object id="alink_10" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object> n'est pas exécuté. Les
objets créés depuis les modules de classe sont détruits, les fichiers ouverts au
moyen de l'instruction modules de classeOpen sont fermés et la mémoire occupée par le
programme est vidée
. Les références d'objet appartenant à d'autres programmes ne
sont plus valides."
Ca, au moins, c'est clair et factuel ! En revanche, ce qui suit l'est
nettement moins!!! C'est un avis déstiné à orienter notre
programmation... Autrement dit, c'est une suggestion de la philosophie
à adopter qui est... a prendre ou à laisser! Alors moi je vous accorde
que la MSDN est LA bible incontesté pour le VB mais en est-elle pour
autant Incontestable... telle est la question ! Je vous laisse méditer
ce point mais personnellement, me restant encore quelques cellules
critiques, je compte bien les utiliser encore longtemps à des fins
analytiques!
"L'instruction End permet de forcer l'arrêt du programme.
Pour qu'un programme Visual Basic se termine normalement, vous devez décharger
toutes les feuilles. Votre programme se termine lorsqu'il n'y a plus aucun
programme maintenant des références à des objets créés depuis vos modules de
classe publics et qu'aucun code n'est exécuté."
Alors, petite explication de texte : le mot "forcer" est loin d'être
techniquement vrai au vu du paragraphe précédent qui décrit à la
perfection l'utilité de cette instruction!!! Ensuite, il faut, bien
entendu, savoir relativier "vous devez décharger" !!! Bien sûr qu'on
peut le faire à la main, mais comme cette instruction le fait très bien
à notre place, pourquoi rajouter encore du code inutile !?!?!? C'est
pas très pragmatique comme approche vous trouvez pas ???
Bref, je ne cherche pas à convaincre mais à comprendre si je suis
vraiment complètement à coté de la plaque ou pas !?!?!?!?
Alors... aidez moi ou enfermez moi dans une boite (au moins, je serais plus chomeurs ;-), mais faites quelque chose
Enjoy
<hr size ="2" width="100%">
(Si une réponse vous convient, cliquez sur le bouton "Réponse accéptée"...)