web-dev-qa-db-fra.com

Nommer la fonction avec "procéder"

Je me demande si c'est une bonne pratique de nommer la fonction qui fait la logique principale "Procéder" + "FunctionName".

J'utiliserais ce nom s'il y a des chèques (IF-S, TRY-CATCHES, etc.) au début de la fonction et je souhaite séparer la logique principale dans une fonction distincte.

Exemple :

private void function() {

    if(someCondition1) {
        throw Error1;
    }
    if(someCondition2) {
        throw Error2;
    }
    
    try {
        proceedFunction(); // <-- Name of the function here
    } catch(Exception e) {
         // Error handling
    }
}

private void proceedFunction() {
    // Main logic
}
4
CarlosV

En tant que lecteur de votre code, j'attends une fonction avec un nom spécifique, de faire la chose que le nom suggère. Je serais surpris de constater que la fonction ne valide que si la fonction réelle peut être appelée.

Il s'agit également d'une erreur d'erreur, car la fonction réelle qui effectue le travail peut être appelée d'ailleurs et aucune validation ne sera effectuée.

Nettoyer de grandes fonctions en les brisant est une bonne pratique, mais rompre des sections qui ont un sens seul. Dans votre exemple, le chèque de la somécontion1 et de la somécontion2 sont de meilleurs candidats à extraire des fonctions distinctes.

private void doWork() {

    checkCondition1(...);
    checkCondition2(...);
    
    try {
        // handle actual doWork logic
    } catch(Exception e) {
         // Error handling
    }
}

private void checkCondition1(...) {
    // perform checks
}

private void checkCondition2(...) {
    // perform checks
}
0
Rik D