18. 인터페이스 설계는 제대로 쓰기는쉽게, 엉터리로 쓰기는 어렵게
Posted 2012. 10. 19. 11:15흔하게 할 수 있는 실수들 중에서
매개변수 순서를 잘 못 입력한 경우가 생길 수 있다.
class Data
{
public:
Date( int Month, int Day, int Year );
}
Date( 3, 10, 1999 ) ; 라도 제대로 기입 한다면 문제가 없겠지만
입력중 오타 라던지, 여러 사람이 사용 할 경우 순서가 헤깔리는 경우가 생 길 수 있다.
이럴때 명시적으로 각자를 구분하는 간단한 랩퍼(wrapper)타입을 만들고 이 타입을
Date 생성자 안에 둘 수 있다.
struct Day{ struct Month{ struct Year{
explcit Day( int d ) explcit Month( int m ) explcit Year( int y )
: val( d ) {} : val( m ) {} : val( y ) {}
int val; int val; int val;
}; }; };
class Date{
public:
Date( const Month& m, const Day& d, const Year& y );
};
Date d(30, 3, 1995); // error
Date d( Day(30), Month(3), Year(1995) ); // error
Date d( Month(3), Day(30), Year(1995) ); // Ok
이렇게 명시적으로 사용 하면 실수를 줄일 수 있다.
사용자의 실수를 방지하는 방법으로 새로운 타입만들기, 타입에 대한 연산을 제어하기,
객체의 값에 대한 제약걸기, 자원 관리 작업을 사용자 책음으로 놓지 않기가 있다.
'BOOK > Effective C++ 3판' 카테고리의 다른 글
20. 값에 의한 전달보다 상수객체 참조자에 의한 전달 방식을 택하는 편이 낫다 (0) | 2012.10.19 |
---|---|
19. 클래스 설계는 타입 설계와 똑같이 취급하자 (0) | 2012.10.19 |
16. new와 delete를 사용 할 때는 형태를 반드시 맞추자 (0) | 2012.10.18 |
13. 자원 관리에는 객체가 그만! (0) | 2012.10.18 |
12. 객체의 모든 부분을 빠짐 없이 복사 하자 (0) | 2012.10.18 |
- Filed under : BOOK/Effective C++ 3판