2010-02-01 1 views
2

Интересно, существует ли какое-либо дополнение для VS, которое может заменить/пометить некоторые строки кода дескриптивным текстом по моему выбору?Visual Studio надстройка для сегментов кода тегов?

В идеале функции, как показано ниже:

BOOL CreateReportFiles (LPCTSTR fn_neighbours, ULONG nItems, ULong * элементы)

{

// 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(); 

}

... будет выглядеть примерно так:

BOOL CreateReportFiles (LPCTSTR fn_neighbours, ULONG nItems, ULong * элементы)

{

± Read from file 

± Do the reports 

}

знаки ± бы развернуть/свернуть замещенные линии.
Другие обходные пути также рассмотрены!
Спасибо за помощь!

+1

Области, содержащие множество функций, возможно, являются запахами кода. Если вам нужны регионы, чтобы найти свой путь в рамках одной функции, что-то ужасно неправильно. –

+0

Я бы не прочь «#region» private «' в заголовках, даже если это будет содержать большой список функций шаблона. – MSalters

ответ

5

Функциональность области делает практически то, что вы описываете, и встроена в Visual Studio.

Ниже будет сжиматься, как вы описали:

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

Я ожидал, что '# region' будет работать, но это было так давно, как я сделал C++, я забыл о' # pragma' – ChrisF

+0

Хех, да, я на самом деле написал ответ, используя #region, а затем быстро проверил MSDN, как только заметил это был C++. –

4

В дополнение к ответу Райана, я, вероятно, следует отметить, что это возможно в самом языке.

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

Я лично предпочитаю это регионам. Также более просто видеть, что вы не возвращаете значение из функции.

В Visual Studio вы можете использовать F12, чтобы перейти к определению функции.

+0

Я согласен с вашим общим представлением. И я использую это как можно больше. Однако я думаю, что некоторые функции могут быть непрактичными для этого. Например, те функции, которые используют слишком много локальных переменных, которые должны быть переданы новой функции. – sevaxx

+1

@sevaxx: Вот о каких структурах и о чем идет речь. –

1

Самое простое решение, и я бы советовал вам использовать функции ReadFile и CreateReports. Это также будет лучшим дизайном и будет иметь дополнительное преимущество для работы во всех возможных IDE и языках.