Extraire la fonction

Quoi : Transformer un fragment de code en sa propre fonction.

Quand : vous avez un fragment de code existant dans une fonction qui doit être appelée à partir d’une autre fonction.

Pourquoi : vous pouvez copier/coller ce code, mais cela entraîne une duplication. Une meilleure solution consiste à refactoriser ce fragment dans sa propre fonction pouvant être appelée par toute autre fonction.

Comment :

  1. Mettez en surbrillance le code à extraire :

    Capture d’écran montrant le code suivant mis en évidence avant l’extraction : double area = M_PI * readious * radious;.

  2. Effectuez ensuite l'une des opérations suivantes :

    • Clavier
      • Appuyez sur Ctrl+R, puis Ctrl+M. (Le raccourci clavier peut varier en fonction du profil que vous avez sélectionné.)
      • Appuyez sur Ctrl+. pour afficher le menu Actions rapides et refactorisations, puis sélectionnez Extraire la fonction (expérimental) dans le menu contextuel.
    • Souris
      • Sélectionnez Modifier > Refactoriser > Extraire la fonction (expérimental).
      • Cliquez avec le bouton droit sur le code et choisissez le menu Actions rapides et refactorisations, puis sélectionnez Extraire la fonction (expérimental) dans le menu contextuel.
      • Cliquez sur l’icône Ampoule qui apparaît dans la marge de gauche et sélectionnez Extraire la fonction (expérimental) dans le menu contextuel.
  3. Dans la fenêtre Extraire la fonction/méthode (expérimental), entrez le nom de la nouvelle fonction, sélectionnez l’emplacement où placer le code, puis cliquez sur le bouton OK.

    Capture d’écran de la boîte de dialogue Extraire la fonction qui prend le nom de la fonction et indique s’il faut la créer au-dessus ou en dessous de la fonction actuelle.

  4. La nouvelle fonction est créée à l’emplacement indiqué, un prototype de fonction dans le fichier d’en-tête correspondant, et le code d’origine est modifié pour appeler cette fonction.

    Capture d’écran de la fonction créée qui contient le code extrait. La définition est void CalculateArea(double radius).