• [^] # Re: \o/ Pierre Tramo

    Posté par . En réponse au message Java et Regexp. Évalué à 2.

    Bon, on va prendre dans l'ordre :o

    import java.util.*;
    Moi j'évite d'importer des packages entiers. D'une part ça doit ralentir un chouille la résolution de noms au chargement de la classe (j'avais remarqué en désassemblant des .class que le compilo ne remplaçait pas les * par la bonne liste de packages), mais surtout ça rend la maintenance du code plus difficile : si tu reprends ton code quelques mois/années plus tard et que t'as pas un bon IDE sous la main, tu risque de passer du temps à retrouver dans quel package était telle ou telle classe.

    v = new Vector();
    Vector, c'était dans l'ancienne API des collections. Dans l'actuelle, il y a la classe ArrayList qui est équivalente et qu'il vaut mieux utiliser : si plusieurs threads ne risquent pas d'accéder simultanément à une liste, les accès seront plus rapides en utilisant un ArrayList qu'un Vector ; et surtout, la nouvelle API des collections est plus complète, plus souple,... donc autant oublier l'ancienne. Et pour faire propre, on peut découpler le type de structure et son implémentation : List i = new ArrayList();

    jLabel1.setText("Bienvenue sur RLFind, votre meta-moteur de recherche pr\u00e9f\u00e9r\u00e9 !");
    Hmmm pourquoi encoder les caractères accentués ?

    String mediabarre = new String("...");
    Alors je reviens là dessus : on ne fait jamais String s = new String("plop"); (ça crée un fait deux objets String, inutilement), mais String s = "plop" (un seul objet String créé, implicitement).

    StringBuffer buffy=new StringBuffer("");
    Pas besoin de créer une chaîne vide pour initialiser le StringBuffer, new StringBuffer() donnera le même résultat.

     Pattern p;
    Matcher m;
    p = Pattern.compile("...");
    Vu que le pattern est immuable, il est préférable de le compiler une fois pour toute et non à chaque appel de la méthode jButton1ActionPerformed, en le déclarant comme attribut de classe contstant (static final). Pour les chaînes constantes, c'est aussi plus propre de faire comme ça.

    p = Pattern.compile("dvd");
    C'est une coquille, non ? Ça ne devrait pas être là ?

    Bon, maintenant on va pouvoir commencer à regarder en détail :o