3

J'essaye de nettoyer notre code existant, et j'ai remarqué qu'il y a beaucoup de code conditionnel qui peut être fusionné.Refactoring - Les instructions "if" réductibles doivent être fusionnées

Exemple -

if (file != null) { 
    if (file.isFile() || file.isDirectory()) { 
    /* ... */ 
    } 
} 

Cela peut être refactorisé à,

if (file != null && (file.isFile() || file.isDirectory())) { 
    /* ... */ 
} 

manuelle du ce changement est une douleur. Donc, j'essayais de vérifier sur l'outil d'inspection et le refactoring de gabarits dans intelliji pour m'aider avec ce refactoring de code en vrac.

Impossible de localiser cet EDI d'Eclipse aussi.

suggèrent Veuillez, est-il une option dans Intelliji/Eclipse pour cette

Répondre

1

Dans IntelliJ IDEA placer le curseur de texte sur le premier mot-clé if, appuyez sur Alt + Entrez et invoquez Merge nested 'if's.

Vous pouvez également utiliser la fonction de recherche structurelle & Remplacer pour effectuer cette opération en masse. Utilisez le modèle de recherche suivant:

if ($a$) { 
    if ($b$) { 
    $statement$; 
    } else $void$; 
} else $void$; 

Cliquez Edit Variables... et définissez le nombre minimum et maximum de statement-0,∞. Également définir le minimum et le nombre maximum de void-0,0

Utilisez le modèle de remplacement suivant:

if (($a$) && ($b$)) { 
    $statement$; 
} 

Notez que ce remplacement introduira entre parenthèses redondantes dans certains cas pour empêcher toute modification de la sémantique du code. Ceux-ci peuvent être supprimés ultérieurement en appelant Run Inspection by Name et en exécutant l'inspection Unnecessary parentheses.

+0

ma question était de faire pour l'ensemble du projet, y at-il une option pour cela. Je suis conscient de cette option individuelle. –

+0

Vous avez raison, j'ai élargi ma réponse. –

+0

Merci pour la nouvelle mise à jour. Cependant, ceci ne fonctionnera pas quand il y a - sinon si ou sinon bloque à l'intérieur de l'instruction if imbriquée. –

2

Le plug-in Eclipse AutoRefactor peut le faire pour vous en batch.

Voir http://autorefactor.org/html/samples.html et sélectionnez CollapseIfStatementSample.java. Vous pouvez le faire sur un fichier entier, un paquet, ou même un projet.

Il existe un refactoring pour supprimer également les parenthèses inutiles: SimplifyExpressionSample.java (voir par exemple la ligne 144).