2009-09-24 4 views
1

J'ai une classe qui a drapeau négatif (« DONOT {action} »). Je voudrais changer ce drapeau à "Do" positif et changer toutes les vérifications dans le code, en les annulant fondamentalement. Y a-t-il un tel refactoring?ReSharper ou CodeRush - indicateur de changement de négatif à positif

Voici un exemple. Si je change le DoNotFilter Flage en DoFilter tout le code qui regarde ce drapeau devrait changer en conséquence.

public bool DoNotFilter 
{get;private set;} 

changements à

public bool DoFilter 
{get;private set;} 

si

if (attribute.DoNotFilter == true) 

besoin de changer pour

if (attribute.DoFilter == false) 
+0

Vous souhaitez renommer un champ et retournez toutes les références booléennes à elle? Je ne suis au courant d'aucun produit fournissant cette fonctionnalité. – Godeke

+0

Oui c'est ce que je veux. J'ai hérité du code et ça n'a aucun sens avec un drapeau négatif. – epitka

Répondre

2

Vous pourriez être en mesure d'obtenir le refactoring propriété en ligne dans ReSharper pour faire ce que tu veux. Je ne suis pas sûr si cela fonctionnera avec des attributs, cependant.

Exemple:

public bool DoNotFilter 
{ get; private set; } 

public void Foo() 
{ 
    if (DoNotFilter == true) 
    { 
     Console.WriteLine("Aha!"); 
    } 
} 

changer maintenant à:

public bool DoFilter 
{ get; private set; } 

public bool DoNotFilter 
{ get { return !DoFilter; } } 

maintenant factoriser DoNotFilter et Inline Propriété:

public void Foo() 
{ 
    if (!DoFilter == true) 
    { 
     Console.WriteLine("Aha!"); 
    } 
} 

Si vous essayez cela, assurez-vous de tout vérifier pour contrôle de la source d'abord! :) Aucune garantie!

Vous pouvez également supprimer redondant pour obtenir comparision le cas jusqu'à:

if (!DoFilter) 
+0

Merci, je pourrais essayer ça. L'attribut était juste un exemple, pas d'attributs (annotations) impliqués – epitka

+0

BTW - Je suppose que tout le code est dans une solution. – TrueWill

+0

Oui, tout est dans une solution – epitka

1

Vous pouvez utiliser Visual Studio Rechercher et remplacer dialogue. Pour ouvrir la boîte de dialogue, appuyez sur Ctrl + H.

Assurez-vous que « Utiliser » case à cocher est cochée et dans la liste déroulante « Expression régulière » est sélectionné. Je coche également les cases à cocher "Rechercher le texte caché" et "Rechercher".

Dans "Rechercher" Type: <DoNot{:i+}

Dans "Remplacer par" type: Do\1

Il va supprimer "Non" Dans toutes les occurrences de DoNotXXX.

Ensuite, nous allons remplacer

if (attribute.DoFilter == true) 

avec

if (attribute.DoFilter == false) 

Si vous fermez Rechercher et remplacer dialogue, appuyez sur Ctrl + H à nouveau.

Dans "Rechercher" Type: <Do{:i+} == true

Dans "Remplacer par" type: Do\1 == false

+0

Vadim, merci pour votre réponse, mais le code ci-dessus était juste un exemple, et ce n'est pas aussi simple que ci-dessus. – epitka

Questions connexes