2015-01-07 3 views
0

, 그 사용을 권장하기위한);두 메소드 인수하거나 새 클래스 .. (X와 Y 코드) 로버트 C. 마틴 책 '클린 코드'에서

makeCircle 원형 (더블 X, Y 더블 이중 반경)

이상;

그는 기본적으로 여러 메소드 인수를 사용하지 않도록 클래스를 만드는 것이 바람직하다고 주장합니다.

귀하의 의견은 무엇입니까? 나에게 혜택이나 단점을 설명해주십시오.

+3

int HowManyMinutesToAirport(int AirportIdentifier, string AirportName, int PlainIdentifier, string PlainName, int PlaneSpeed, string PlaneCompassDirection); 

대 :

이 예를 생각해 보자. –

+1

이것을 쓰는 다른 방법들도 있습니다. C++에서 : 벡터 centerCoord, double * centerCoord가 있습니다. 각각은 장점을 가질 수 있습니다. 이 질문은 스타일 전쟁으로 이어질 가능성이 있습니다. 스타일 전쟁을 일으키는 또 하나의 관련 주제는 배열 구조체 대 배열 구조체입니다. 어떤 종류의 큰 시스템을 사용하고 있으며 어떤 종류의 협약이 이미 사용되고 있는지 고려해야합니다. – dwn

답변

0

여기에는 몇 가지 이유가 있습니다.

먼저 매개 변수를 의미있게 그룹화하는 것이 좋습니다. 이 간단한 예제에서는 x와 y가 함께 사용된다는 것이 즉시 명백해 지지만, 더 모호한 예제를 다루는 경우에는 즉시 명확하지 않을 수 있습니다.

아마도 더 중요한 것은 매개 변수가 너무 많아 의미있는 정보를 추적하지 못하는 것입니다. 3 개 또는 4 개 이상의 매개 변수를 사용하는 메소드를 사용하면 어느 매개 변수인지 추적하는 것이 점점 더 번거로워집니다. 클래스 또는 구조체에 매개 변수를 함께 바인딩하면이를 방지 할 수 있습니다. 나는이 질문이 하나, 분명히 올바른 대답을 수 있다고 생각하지 않습니다

int HowManyMinutesToAirport(Airport airport, Plane plane); 
+0

"매개 변수를 추적하는 것이 점점 더 번거로워집니다"- 그리고 다른 한편으로는 코드의 여러 위치에서 좌표에 대해 두 개의 별도 'double'값을받을 때마다 그리고 항상 'makeCircle'에 질문을 전달해야 할 때마다 'x, y'대신'new Point (x, y)'를 쓰는 것이 점점 더 번거로웠다. 그리고 저는이 사건에 대한 또 다른 예외가 있다는 것을 확신합니다. -이 질문은 너무 일반적입니다. 응답은 문맥에 많이 의존합니다. –

+0

사소한 경우에 나는 이것이 아마도 필요하지 않을 것이라는 점에 동의한다. 함께 바인딩 할 여러 매개 변수가있는 경우가되면 더 의미가 있습니다. –