2013-06-20 6 views
6

나는 다음 두 선언의 차이점은 내가 모두 건너 이러한 스타일 기능 프로토 타입은

void some_method(int); 

두 번째 스타일 한 헤더 파일에 무엇인지 알고 싶어 파일 :

void some_method(int a); 

하나의 스타일이 다른 스타일보다 이점이 있습니까? 내게는 하나의 스타일은 변수의 이름을 가지고 있지 않으며 변수의 이름은 동반 된 cpp 파일에서 구현되어야한다.

답변

9

이 기능에는 차이가 없지만, 나는 종종과 같이, 문서의 형태로 매개 변수 이름을 사용 : 내가 추가 할 가치가 아무것도없는 경우

void verbTheThing(int verbId, int thingId); 

, 나는 그냥 추가하지 않습니다

int max(int, int); 
+1

선언과 정의를 동일하게 유지하는 워크 플로우 이점이 있습니다. 다음 중 하나를 쉽게 복사하여 붙여 넣을 수 있습니다. 선언을 위해 더 짧은 양식을 사용하십시오. –

+0

감사합니다. – MistyD

+0

@PaulR 좋은 지적. 필자는 헤더 파일에 프로토 타입을 넣을 때 의미가없는 (잠재적으로 혼란스럽게하는) 매개 변수 이름을 제거하기 위해 노력한다고 말했을 수도 있습니다. –

4

주 관심사는 일관성입니다. 하나 고르고 그것에 충실하십시오. 필자는 매개 변수 이름이 기능 및 코드를 설명 할 수 있기 때문에 개인적으로 두 번째 방법을 선호합니다. 이는 자체 문서화가 대안보다 낫습니다.

+0

+1; 나는 보통 디폴트와 삭제 된 특수 함수에 대한 예외를 만든다. –

3

주요 차이점은 가독성입니다. 두 번째 버전은 더 길지만 인수의 이름을 갖는 것이 실제 도움이 될 수 있습니다. 작은 예 :

int move(int, int, int, int); 

int move (int fromX, int fromY, int toX, int toY); 
1

두 가지 모두 컴파일과 관련하여 차이가 없습니다. 그러나 매개 변수의 이름을 지정하면 코드의 가독성이 높아져 사람들이 더 잘 이해할 수있게되므로 두 번째 옵션이 더 좋습니다.

1

두 옵션 모두 유효합니다. 그러나 헤더에 매개 변수 이름을 지정하면 함수 서명을 읽는 사람이 실제로 수행하는 작업과 매개 변수가 나타내는 데이터를 빠르게 파악하는 데 큰 도움이됩니다.

2

( 대괄호를 입력하면 일부 개발 환경 (Visual Studio, Borland C++ Builder, 예를 들어 이클립스에는이 기능이 있어야 함)이 자동으로 함수 인수를 나열합니다. 그 십오 들어

list parameters

그들이 문서의 역할을하기 때문에 확인 (헤더 내에서) 그 함수 인수의 이름은 가능한 한 설명입니다 수 있도록하는 것이 일반적인 예의입니다.

프로그래머에게이 기능이있는 IDE가 없더라도 (헤더의) 전달 함수 선언은 항상 가능한 한 서술 적이어야합니다. 같은 이유로 - 머리글을 열고 더 많은 숫자의 함수 본문을 찾기 위해 매개 변수가 의미하는 바를 읽는 것이 더 쉽습니다.

일부 기능에서는 매개 변수 이름없이 어떤 매개 변수를 의미하는지 알 수 없습니다.

Image::blitRect(int, int, int, int); 

은 물론

Image::blitRect(int x1, int x2, int y1, int y2); 
Image::blitRect(int x1, int y1, int x2, int y2); 
Image::blitRect(int x, int y, int width, int height); 

될 수 있습니다 예를 들어

,이 상황에서 포인트 및 크기에 대한 클래스를 추가,하지만 그건 또 다른 이야기 것 C++ 프로그래머.

0

실제로 차이점은 없습니다. 그것은 당신의 메소드 선언 위치로 귀결됩니다 ... 예를 들어, "main()"func 전에 함수를 선언 할 때. 아마도 매개 변수 이름을 신경 쓸 필요가 없을 것입니다. 그러나 앞에 메서드 선언을 사용하여 매개 변수 이름을 정의해야합니다. 코드 스타일을 사용하면 코드를 읽을 수 있습니다.

관련 문제