책 정리/Effective C++ 2판
항목 26. 잠재적 모호성을 경계한다.
최익필
2008. 5. 10. 16:16
우선
잠재적 모호성이란?
이런 경우를 잠재적 모호성이라 한다.
이유.
1. 컴파일 타임 중 예상치도 않은 오류가 날수 있다.
2. 라이브러리 파일의 이식성이 엄청나게 떨어진다.
해결방법
1. 네임스페이스를 사용한다.( 이 방법은 가독성을 떨어 뜨릴수 있다...)
2. 항상 디버깅이 가능한 코딩 습관을 길러야 한다;
3. 설계를 잘 하는 방법밖에 없다.
개인적인 생각
1. 이 이야기에 대한 해결 방법은 오로지 프로그래머의 몫이다.
2. .. 항상 노력하고 염두하고, 설계 해야 한다.
부스러기 이야기
일전에 이런일이 있어 참 난감했었다. 그때는 네임스페이스의 난발로 모든 코드가 지저분했다.
그래서 좋은 프로그래머란,
"모든 것을 하는 프로그래머"가 아닌 "모든 것을 설계 하는 프로그래머" 라고 생각된다.
.. 모든 것을 어거지로 구현할 순 있다.
하지만 어거지 프로그램이 되니까 문제다!
잠재적 모호성이란?
#include <iostream>
class A
{
public:
A(const B&);
};
class B
{
public:
operator A() const;
};
int main()
{
void f(const A&);
B b;
f(b);
// B클래스의 operator A() 가 호출될까?
// A클래스의 생성자 A() 가 호출될까?
}
이런 경우를 잠재적 모호성이라 한다.
이유.
1. 컴파일 타임 중 예상치도 않은 오류가 날수 있다.
2. 라이브러리 파일의 이식성이 엄청나게 떨어진다.
해결방법
1. 네임스페이스를 사용한다.( 이 방법은 가독성을 떨어 뜨릴수 있다...)
2. 항상 디버깅이 가능한 코딩 습관을 길러야 한다;
3. 설계를 잘 하는 방법밖에 없다.
개인적인 생각
1. 이 이야기에 대한 해결 방법은 오로지 프로그래머의 몫이다.
2. .. 항상 노력하고 염두하고, 설계 해야 한다.
부스러기 이야기
일전에 이런일이 있어 참 난감했었다. 그때는 네임스페이스의 난발로 모든 코드가 지저분했다.
그래서 좋은 프로그래머란,
"모든 것을 하는 프로그래머"가 아닌 "모든 것을 설계 하는 프로그래머" 라고 생각된다.
.. 모든 것을 어거지로 구현할 순 있다.
하지만 어거지 프로그램이 되니까 문제다!