• [^] # Re: Légende urbaine : un alligator dans le ramasse-miettes

    Posté par . En réponse à la dépêche Légende urbaine : un alligator dans le ramasse-miettes. Évalué à 1.

    Ca arrive lorsque, par exemple, les boutons ne sont pas recyclés, ou le code est généré, ou le développeur n'est pas très malin.
    C'est problème de développeur, pas de langage.
    Dans tous les langages on peut commettre de telles horreurs sous-optimisées.

    générer énormément d'instances, alors que l'utilisation d'un Listener codé dans une classe séparée est plus propre, ...
    Tu peux générer autant d'instances si ta classe est séparée que si c'est une classe interne (anonyme ou non). Ce sont deux notions parfaitement orthogonales.
    Et moi ça ne me parrait pas nécessairement plus propre de créer un fichier juste pour y mettre une classe d'une seule méthode dont le corps fait trois lignes à tout casser.

    Dans le cas où le code de la classe interne doit accéder aux attributs ou aux méthodes de la classe externe (ce qui est fréquent pour un event listener), il faudrait fournir une instance de l'ex-objet externe à l'ex-objet interne, et probablement augmenter inutilement la visibilité de certains attributs/méthodes de l'ex-classe externe.

    ...et permet en outre de gérer ce pattern singleton.
    1. il y a des cas qui se prettent pas naturellement au pattern singleton
    2. on peut faire un sigleton avec une classe interne aussi bien qu'avec une classe dans un fichier séparé
    3. avec une classe anonyme on peut faire la même chose :
    static private WindowListener listener = new WindowListener() {
    public void windowClosed() { /* blah blah */ }
    });

    et ensuite : addListener(listener);

    Après, si le développeur ne sait pas réutiliser des objets, ... (en gros qu'il ne sait pas faire de prog objet correctement), il ne faut pas mettre ça sur le dos du langage...