이 경우 코드의 오류가 발생하기 쉽기 때문에 동일한 멤버 이름을 갖는 것은 나쁜 생각이라고 생각합니다.
시나리오를 상상해보십시오. 두 개의 직교 점이 있습니다 : pntA와 pntB. 그런 다음 어떤 이유로 든 극좌표로 표시하는 것이 더 좋다고 결정하고 선언과 생성자를 변경하십시오.
이제 모든 작업이 다음과 같은 메소드 호출 인 경우 :
double distance = pntA.distanceFrom(pntB);
그럼 괜찮아 그러나 멤버를 명시 적으로 사용한 경우 어떻게해야합니까? 비교
double leftMargin = abs(pntA.x - pntB.x);
double leftMargin = abs(pntA.first - pntB.first);
첫 번째 경우 코드가 컴파일되지 않습니다. 오류가 즉시 표시되고 수정할 수 있습니다. 그러나 동일한 멤버 이름을 사용하는 경우 오류는 논리적 수준에서만 발생하므로 감지하기가 훨씬 어렵습니다.
객체 지향이 아닌 언어로 작성하면 잘못된 구조체를 함수에 전달하는 것이 더 쉽습니다. 다음 코드를 작성하지 못하게하는 이유는 무엇입니까?
double distance = calculate_distance_polar(cartesianPointA, polarPointB);
반면에 다른 데이터 유형을 사용하면 컴파일 중에 오류를 찾을 수 있습니다.