2010-04-19 6 views
1

궁금 구문 코드의 가독성 improvent과 자기 주석 코드의 같은 당신의 의견에 도움이 될 것입니다 다음과 같은 경우이가 명확하게 말한다 예와에서구문 제안 : 템플릿 타입 선언의 가독성은

std::map<std::string name, std::vector<int> scores> myMap; 

없음 다른 주석이 필요합니다. myMap 변수를 사용하면 무엇입니까?

귀하의 의견을 기다리십시오. 제 생각에는

답변

3

더 쉽게는 친절하고 실용적인과 같은 몇 가지 형식 정의를 구현하는 것입니다

typedef std::string NAME; 
typedef std::vector<int> SCORES; 

std::map<NAME, SCORES> myMap; 
+0

typedef 표준 :: 벡터 vint; typedef vint 점수; – Svisstack

+0

@fritzone 글쎄, 당신은 더 쉽다고 말할 수 없다. 많은 타이핑을해야한다. 그리고 왜 더 실용적일까요? 당신은 그 typedef로 전체 단위를 채우고 있습니다. –

+0

@fritzone 그리고 주관적인면에서는 좋지만, myMap을 보았을 때는 솔루션에서 그렇습니다. 당신은 이름과 점수의 유형이 무엇인지 모릅니다. –

1

가 개인적으로 나는 쉽게 그것을 사용하지 않는 것이 좋습니다 네임 스페이스에 대한 일반적인 생각으로 using namespace std; 쓰기,하지만 std 그렇게이다 유비 쿼터스 IMHO 그것은 완벽하게 괜찮아요, 그리고 많은 타이핑을 절약 할 수 있습니다. 위의 적어도 일부 경험이있는 모든 C++ 프로그래머

map<string, vector<int> > myMap; 

은 (때문에 훨씬 덜 불필요한 std:: 구문의, 그리고 아마도 이상)로 읽을 수 있습니다. 나는 이름을 제거했음을 주목하라 : 나는 그들이 실제 코드에서 많은 것을 추가한다고 생각하지 않는다. 정말 중요한 경우, 짧은 코멘트를 던져 :

// maps names to an array of scores 
map<string, vector<int> > myMap; 

일반적인 인수 에 대한 의견들이 코드에 대한 진정한 의미 값이 없기 때문에 그들은이 유지되지 것입니다. 제안 된 구문의 이름에 대해서도 마찬가지이므로 구문을 더 추가하지 않아도됩니다.

+0

제안 된 구문에 의해 무엇이 추가되는지는 코드의 자체 문서화 전에 언급 한 바와 같습니다. –

0

myMap에 대한 설명이 포함 된 이름이 더 도움이됩니다 (예 : scores_by_name).

std::map<std::string /*name*/, std::vector<int> /*scores*/> myMap; 

또는

std::map<std::string, std::vector<int> > myMap; //name - scores 

새로운 구문

정말 코멘트보다 더 아무것도 할 것 :

그리고 무엇에 대한

. (자기 주석 코드는 장점이 있습니다. 주석은 사실이지만,이 경우 식별자의 구문론적인 의미는 0입니다.)

아마도 제안은 intellisense를 돕는 데 도움이 될 수 있지만, 그렇다면 wouldn

std::string name myString; 

+0

왜 std :: string name myString;을 허용해야합니까? 내가하고있는 일은 전형적인 var 문법이다. var에 별칭을 줄 수있는 선언문을 제안하고있다. –

+0

typename은 typename입니다. 'int myInt; '의 목적을 알 수 없다면 왜 템플릿이 특별한 설명이 필요하다고 생각합니까? – visitor

1

C++ 표준위원회 10 년 동안 논쟁 것, 그것은 거부 't 당신은 또한 수 있도록해야합니다.

std::map<...> NameToScoreMap; 

그리고 너무 좋은 편집기 완전히 당신이지도를 사용할 때마다 그를 입력 할 필요가 없습니다 : 좋은 변수 이름을 선택, 그리드에는 myMap 꽤 쓸모가 없다. 기능적인 헝가리 인은 본질적으로 같은 생각입니다.