2010-02-01 8 views
2

Je me demande s'il existe un add-on pour VS qui peut remplacer/marquer certaines lignes de code avec un texte descriptif de mon choix?Module complémentaire Visual Studio pour marquer des segments de code?

Idéalement une fonction comme celle ci-dessous:

bool CreateReportFiles (LPCTSTR fn_neighbours, ULONG nitems, ULONG * articles)

{

// Read from file 

CFile cf_neighbours; 

if (!cf_neighbours.Open(fn_neighbours, CFile::modeRead)) 

    return false; 

cf.Read(items, sizeof(ULONG) * nItems); 

cf.Close(); 




// Create reports 

DoReport_1(items, nItems); 

DoReport_2(items, nItems); 

DoReport_3(items, nItems); 

FinalizeReports(); 

}

... ressemblerait à ceci:

bool CreateReportFiles (LPCTSTR fn_neighbours, ULONG nitems, ULONG * articles)

{

± Read from file 

± Do the reports 

}

Les signes ± élargirait/déplier les lignes substituées.
Autres solutions de contournement également considérés!
Merci pour votre aide!

+1

Les régions contenant de nombreuses fonctions sont sans doute une odeur de code. Si vous avez besoin de régions pour trouver votre chemin dans une seule fonction, quelque chose est horriblement mal. –

+0

Je ne verrais pas d'inconvénient à ce qu'il y ait un ''region '' private '' dans les en-têtes, même si cela contient une grande liste de fonctions de template. – MSalters

Répondre

5

La fonctionnalité de région fait à peu près exactement ce que vous décrivez et est intégrée dans Visual Studio.

Voici comprimera que vous avez décrit:

bool CreateReportFiles(LPCTSTR fn_neighbours, ULONG nItems, ULONG* items) 

{ 

#pragma region ReadFile 
// Read from file 

CFile cf_neighbours; 

if (!cf_neighbours.Open(fn_neighbours, CFile::modeRead)) 

    return false; 

cf.Read(items, sizeof(ULONG) * nItems); 

cf.Close(); 

#pragma endregion ReadFile 

#pragma region CreateReports 

// Create reports 

DoReport_1(items, nItems); 

DoReport_2(items, nItems); 

DoReport_3(items, nItems); 

FinalizeReports(); 

#pragma endregion CreateReports 
} 
+0

Je m'attendais à ce que '# region' fonctionne, mais ça fait si longtemps que je l'ai fait C++ j'avais oublié' # pragma' – ChrisF

+0

Heh, ouais, j'ai vraiment écrit la réponse en utilisant #region, puis rapidement vérifié MSDN une fois que j'ai remarqué c'était C++. –

4

En plus de la réponse de Ryan, je devrais probablement souligner que cela est possible dans la langue elle-même.

bool CreateReportFiles(LPCTSTR fn_neighbours, ULONG nItems, ULONG* items) 
{ 
    ReadFromFile(fn_neighbours, nItems, items); 
    CreateReports(items, nItems); 
} 

Personnellement, je préfère cela aux régions. Il est également plus simple de voir que vous ne renvoyez aucune valeur de la fonction.

Dans Visual Studio, vous pouvez utiliser F12 pour passer à la définition de la fonction.

+0

Je suis d'accord avec votre point de vue général. Et je l'utilise autant que possible. Cependant, je pense que certaines fonctions peuvent être impraticables pour cela. Par exemple, les fonctions qui utilisent trop de variables locales qui devraient être passées à la nouvelle fonction. – sevaxx

+1

@sevaxx: C'est ce sur quoi portent les structures et les passages par référence. –

1

La solution la plus simple, et celle que je vous conseille d'utiliser est la création des fonctions ReadFile et CreateReports. Ce serait aussi une meilleure conception, et a l'avantage supplémentaire de travailler dans tous les IDE et langues possibles.

Questions connexes