• [^] # Re: Commenter l'intention

    Posté par . En réponse au journal To comment or not to comment. That is the question.. Évalué à 1.

    Bon exemple, j'ai envie de dire.

    Il y a bien 3 ou 4 classes (implémentations et déclarations) dans le même fichier de près de 10000 lignes de code, c'est typiquement le genre de situations ou les diagrammes sont utiles, ils permettent au moins de comprendre les relations des classes entres elles.
    C'est aussi le genre de situations ou l'on comprend l'intérêt de séparer implémentations et déclarations, et idéalement ne pas mélanger les classes dans le même fichier.

    Pour le reste, j'ai pas cherché à lire les 10K lignes (sans coloration syntaxique, non merci, et puis j'aime pas cette façon d'indenter :) ), mais vers la fin on voit ceci:

    // Shrink the underlying space
    _virtual_space.shrink_by(bytes);
    
    

    Typiquement le commentaire qui paraphrase le code, que je n'aime pas (j'admets, coup de bol de tomber dessus sur les 10K lignes).
    Bah oui, on se doute que la méthode shrink, elle shrink l'objet sur laquelle on l'appelle. Je dirais même plus, bytes correspond à la nouvelle taille?

    Un peu plus tôt:
    cpp
    // Multi-threaded; use CAS to prepend to overflow list
    void CMSCollector::par_push_on_overflow_list(oop p) {
    NOT_PRODUCT(Atomic::inc_ptr(&_num_par_pushes);)
    assert(p->is_oop(), "Not an oop");
    par_preserve_mark_if_necessary(p);
    oop observed_overflow_list = _overflow_list;
    oop cur_overflow_list;
    do {
    cur_overflow_list = observed_overflow_list;
    if (cur_overflow_list != BUSY) {
    p->set_mark(markOop(cur_overflow_list));
    } else {
    p->set_mark(NULL);
    }
    observed_overflow_list =
    (oop) Atomic::cmpxchg_ptr(p, &_overflow_list, cur_overflow_list);
    } while (cur_overflow_list != observed_overflow_list);
    }

    Notez les noms très explicite: oop, CMSCollector, p. Oui, j'ironise un peu.

    Sur ce coup, le problème de complexité ne viens peut-être pas de la présence/absence de commentaires, mais du fait de tout mettre ensemble dans le même fichier, et de pas avoir de diagramme montrant les relations entre les classes.
    Choses que l'on peut traiter avec les outils appropriés cela dis. J'ai trouvé le code propre d'ailleurs (malgré mon ironie mal placée: oop doit être un type qui décrit une classe, et CMSCollector lié à un CMS, mais vu que je sais pas à quoi sers la lib…).