항목 18. 최소한의 완전한 클래스 인터페이스를 구축한다.

클래스 클라이언트 인터페이스란?
클래스를 이용하는 프로그래머가 접근할 수 있는 인터페이스다
(public)

이유
1. 인터페이스 내에 함수들이 많아짐에 따라 미래의 클라이언트들은 이해하기 어려워진다.
2. 적은 함수들을 가진 클래스보다 많은 함수들을 가진 클래스를 관리 또는  수정하기 더 어렵다.
3. 길다란 클래스 정의는 길다란 헤더파일을 초래하여, 컴파일 시간에 상당한 불이익을 가져올수 있다.

해결 방법
1. 한번만 Set 하면 되는 경우 생성자를 통하여 값을 넣어라.
2. operator= 으로 한번만 Set 하면 되는 멤버 변수의 값이 변경된다면, Get 함수 사용시 const 로써 불려지게 만들어라. (이건 매우 속편하다. 이런것까지 고려하여 생각한다면, 정말 피곤한 작업이 따로 없을것이다.) 2008/06/07 15:47 수정
2. operator= 으로 한번만 변경되는 멤버 변수도 수정된다면, 참조자를 const 키워드를 넣어두어야 한다. 왜냐하면 값 변경을 막기 위함이다.(개인적으로 이런 것은 operator= 할때 별도로 연산해야 할 필요가 있다고 생각된다)
3. 비교 연산 및 입출력 연산이 필요할 경우, friend 를 통하여 구현해 놓아라.(여기에 대해서는 항목 19에서 언급할것이다.)


주 의 점

1. 과도한 절약은 오히려 독이다.
- 최소한의 함수 이상을 제공하는 것이 정당한 경우도 있다.
(예를 들어 그 클래스를 더 잘 이해하도록 돕는 메소들을 추가 할 경우.)

2. 클래스를 풍만하게 만드는것은 나약하게 만드는것보다 더 많은 단점이 있다
(이부분은 어느정도 동감하지만 어느정도는 힘들다. 나약한 클래스를 통하여, 많은것을 얻기 위해서는 설계 단계에서 많은 뇌가 필요하기 때문이다)
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기