우선
잠재적 모호성이란?

#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. .. 항상 노력하고 염두하고, 설계 해야 한다.

부스러기 이야기
일전에 이런일이 있어 참 난감했었다. 그때는 네임스페이스의 난발로 모든 코드가 지저분했다.
그래서 좋은 프로그래머란,
"모든 것을 하는 프로그래머"가 아닌 "모든 것을 설계 하는 프로그래머" 라고 생각된다.

.. 모든 것을 어거지로 구현할 순 있다.
하지만 어거지 프로그램이 되니까 문제다!
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요