코딩인터뷰 퀘스천"메모+후기" 디자인(설계), 마무리
.
.
책 읽으면서 메모했던 내용들 옮겨봅니다.
-
챕터21 디자인(설계)
디자인 패턴
- 특정 종류의 문제를 해결하기 위함
- 문제를 이해하고 사용할 패턴을 좁힘.
- 서로 다른 패턴들 사이의 관계성 찾고, 안정적으로 사용할 패턴들과 변경 사항들 결정.
리팩토링
외부동작 변경 없이 내부 구조 변경.
- 여러 디자인패턴 공부로는 좋은 설계자가 되는데 불충분.
- 패턴들을 이해하고 장점을 더 활용할 수 있어야
좀 더 이해하기 쉽고 수정하기 편하도록 소프트웨어 내부 구조를 변경.
패턴
- 생성 패턴 : 객체의 생성을 다룸
Factory, Abstract Factory, Builder, Prototype, Singleton
- 구조 패턴 : 클래스들이 커다란 구조를 형성하기 위해 결합될 수 있는 방법들
Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
- 행위 패턴 : 객체 사이의 상호 작용/통신과 관련
Cain of Responsibility, Command, interpreter, Iterator, Mediatior, Memento Observer, State, Strategy, Template, Visitor
팁
- 일관/직관적 인터페이스 제공
- 기본 클래스에서 클래스들의 공용 속성 제공
- 공용 클래스에 구현 상세를 노출하지 말 것
- 느슨한 결합 유지
- 생성자 가상함수 호출 피할 것
- 클래스의 정적 멤버만 있다면 생성자는 private 로. (인스턴스화 불필요)
- RTT(Runtime Type identification)), 구문 형변환 보다는 가상 함수로 재설계
- 객체 모델링할 때는 상속은 잊는다.
- 테스트 주도 개발(Test-Driven development)
- 큰 클래스 설계, 도우미 클래스 제공
- 단지 클래스들간의 값이 다른 경우 상속은 ㄴㄴ
- 팩토리 메서드 제공이 좋다.
- 네임스페이스는 계층적 분할
이 다음 챕터들은 운영체제, 네트워크, DB 등과 관련된 내용들인데, 굳이 정리할 필욘 없을 것 같아 다루지 않았습니다.
좋은 책이고 광범위하고 어려운 책이었습니다. 가볍게 기본기 연습삼아 읽어보자 하고 시작했는데 생각보다 내용이 깊고 넓고 어려운 내용들이 많았습니다. 기본기를 잡기에도 부족함이 없어보이는 책입니다. 그도 그럴 것이, 책 초반의 저자의 말에서 이런 구절이 나옵니다.
"이 책의 내용은 필요한 모든 주제를 자세하게 다루고 있다"
"이 책을 읽고 전부 이해했다면 면접에 도전해도 된다고 확신한다.
이 책은 대학 공학 학사, 석사 준비하는 학생들에게도 매우 유용하다"
프로그래밍 관련 학사/석사 수준의 내용들을 다루고 있다고 하니, 어려워도 이상할 게 없어보입니다. 아무튼 매우 좋은 책이고 나중에 한번은 더 읽어보고 내용을 이해해보려 노력해봐야겠다는 생각도 들게 합니다.
.
.
.