2010-02-01 5 views
2

내 선택의 설명 텍스트로 일부 코드 줄을 대체하거나 태그 할 수있는 VS에 대한 추가 기능이 있는지 궁금합니다.코드 세그먼트에 태그를 추가하는 Visual Studio 애드온?

이상적으로는 아래와 같은 기능 :

부울 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(); 

}

... 이와 비슷할 것입니다 :

부울 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

Heh, 예, 실제로 #region을 사용하여 답변을 작성한 다음, 그것은 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

가장 간단한 해결책은 내가 사용하는 조언이 기능 ReadFileCreateReports을 만드는 것입니다. 이것은 더 나은 디자인 일뿐만 아니라 가능한 모든 IDE와 언어로 작업 할 수 있다는 추가적인 이점이 있습니다.

관련 문제