Présentation de la déclaration des variables et des champs (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Refactoring des applications - Index

La fonctionnalité Refactoring vous permet de créer des variables et des champs. Cette fonctionnalité vous permet aussi de créer et de déclarer des variables et des champs pendant le codage sans avoir à planifier ces tâches. Cette rubrique comporte des informations sur les éléments suivants :


Déclarer une variable - Maj+Ctrl+V

Vous pouvez créer une variable quand vous avez un identificateur non déclaré dans la portée de bloc d'une procédure. Cette fonctionnalité vous permet de sélectionner un identificateur non déclaré et de créer une nouvelle déclaration de variable en ayant simplement recours à un menu ou un raccourci clavier. Quand vous invoquez le dialogue Déclarer une variable, celui-ci contient un nom proposé pour la variable, basé sur la sélection. Vous pouvez choisir un autre nom pour la variable ; celle-ci sera correctement créée, mais le symbole d'identificateur non déclaré (soulignement d'audit d'erreur) reste.

Le nom des variables doit être conforme aux règles de langage d'un identificateur. Dans Delphi, le nom de la variable :


  • Ne peut pas être un mot clé.
  • Ne peut pas contenir d'espace.
  • Ne peut pas être identique à un mot réservé, tel que if ou begin.
  • Doit commencer par un caractère alphabétique Unicode ou un caractère de soulignement, mais peut contenir des caractères alphanumériques Unicode ou des caractères de soulignement dans le corps du nom de variable.
  • En langage Delphi, le nom du type peut aussi être le mot clé string.


Remarque : Sur le dialogue qui apparaît quand vous choisissez de déclarer une variable, vous pouvez définir ou refuser de définir une valeur initiale pour la variable.

Suggestion du type initial

Le moteur de refactoring essaie de suggérer un type pour la variable qu'il est sur le point de créer. Pour cela, il évalue les opérations binaires de l'instruction sélectionnée et utilise le type de la somme des opérandes enfants comme type de la nouvelle variable. Considérez, par exemple, l'instruction suivante :

myVar := x + 1;

Le moteur de refactoring suppose automatiquement que la nouvelle variable myVar doit être définie sur le type Integer, à condition que x soit un entier.

Il arrive fréquemment que le moteur de refactoring déduise le type en évaluant une instruction. Par exemple, l'instruction If foo Then... implique que foo est une valeur booléenne. Dans l'exemple If (foo = 5) Then... le résultat de l'expression est une valeur booléenne. Néanmoins, l'expression est une comparaison d'un ordinal (5) et d'un type inconnu (foo). L'opération binaire indique que foo doit être un ordinal.

Déclarer un champ - Maj+Ctrl+D

Vous pouvez déclarer un champ quand vous avez un identificateur non déclaré dans la portée d'une classe. Comme la fonctionnalité Déclarer une variable, vous pouvez appliquer le refactoring à un champ que vous créez dans du code ; le moteur de refactoring créera la déclaration du champ pour vous à l'emplacement correct. Pour cela, le champ doit exister dans la portée de sa classe parent. Cette opération peut être réalisée soit en codant le champ dans la classe elle-même, soit en préfixant le nom du champ avec le nom de l'objet, qui fournit le contexte du champ.

Les règles de déclaration d'un champ sont les mêmes que pour la déclaration d'une variable :

  • Ne peut pas être un mot clé.
  • Ne peut pas contenir d'espace.
  • Ne peut pas être identique à un mot réservé, tel que if ou begin.
  • Doit commencer par un caractère alphabétique Unicode ou un caractère de soulignement, mais peut contenir des caractères alphanumériques Unicode ou des caractères de soulignement dans le corps du nom de champ.
  • En langage Delphi, le nom du type peut aussi être le mot clé string.

Remarque : Dans .NET, les caractères de soulignement au début des identificateurs sont réservés au système.

Vous pouvez sélectionner la visibilité du champ. Quand vous sélectionnez une autre visibilité que private ou strict private, le moteur de refactoring effectue les opérations suivantes :

  • Recherche toutes les classes enfants.
  • Recherche le nom du champ dans chaque classe enfant.
  • Affiche un élément d'erreur rouge si le nom du champ est en conflit avec un champ d'une classe descendante.
  • Vous ne pouvez pas appliquer le refactoring s'il est en conflit avec le nom d'un élément existant.

Exemples de refactoring

Les exemples suivants montrent le résultat de la déclaration de variables et de champs à l'aide de la fonctionnalité de refactoring.

Considérons le code suivant :

TFoo = class
private
  procedure Foo1;
end;
...

implementation

procedure TFoo.Foo1;
begin
  FTestString := 'test';    // refactor TestString, assign field
end;

Supposons que vous appliquiez le refactoring Déclarer un champ. Ceci donnerait comme résultat :

TFoo = class
private
  FTestString: string;
  procedure Foo1;
end;

Si vous appliquez un refactoring Déclarer une variable à la place, le résultat est alors le suivant :

procedure TFoo.Foo1;
var                            // added by refactor
  TestString: string;    // added by refactor
begin
  TestString := 'test';     // added by refactor
  TestString := 'whatever';
end;

Voir aussi