-
패턴 그리고 객체지향적 코딩의 법칙 미완(2016.03.29)예전에 읽은 책들/2016년 읽은 책 2025. 7. 16. 07:43
Class: 공통의 성질을 가진 종류, 부류
내가 정말 잘 올바르게 작성한 것일까? 하고 고민해 본 적이 있을 것이다.
아쉽게도 그런 정답은 존재하지 않는다.
장말 잘 만들어진 코드란 요구사항을 정확히 만족하는 코드이다. 그런데 현실에선 요구 사항들이 끊임없이 변하기 때문에 만족시키기란 쉽지 않다.
개발 방법의 기본
- 개발을 체계적으로 진행할 수 있는가?
- 개발하기 쉬운가?
- 관리하기 쉬운가?
- 확장하기 쉬운가?
- 안정적인가?
공통점 묶기 조금만 알기
공통점 묶기와 조금만 알기는 객체지향 언어에서 상속, 다형성, 캡슐화보다 더 중요한 개념이다. 공통점을 묶고 조금만 알기 위해 노력하다 보니 상속, 다형성, 캡슐화가 필요하게 되고 더불어 추상화, 일반화라고 세분화도 저절로 이루어지는 것이다.
회사에선 사원, 군대에선 군인, 편의점에선 손님class 사원 { public: virtual void 건강검진()=0; }; class 예비군 { public: virtual void 지겨운훈련()=0; }; class 편의점손님 { public: virtual void 계산하기()=0; };
C++ 다중 상속을 이용해 구현class 나초보: public 사원, public 예비군, public 편의점손님 { public :// 사원 virtual void 건강검진(){...구현...} public :// 예비군 virtual void 지겨운훈련(){...구현...} public :// 편의점 virtual void 계산하기(){...구현...} };
나초보씨가 만났던 세 사람은 각자 클래스가 있겠지만 나초보씨와 만났던 부분에 함수void 닥터::건강검진(사원 a_employee) { a_employee.건강검진(); } void 조교::훈련(예비군 a_reserve) { a_reserve.지겨운훈련(); } void 편의점알바::물건팔기(편의점손님 a_customer) { a_customer.계산하기(); } void Foo() { 나초보 Na; 닥터 Kim; 조교 Yun; 편의점알바 Oh; Kim.건강검진(Na); Yun.훈련(Na); Oh.물건팔기(Na); }
모든 클래스는 하나의 책임만 가진다.
interface : 경계면, 접점, 공유(접촉)영역
깨끗한 코드의 선순환
깨끗한 코드 → 새로운 요구사항 발생 → 요구사항 적용이 쉬움 → 동일성 있는 수정
깨끗한 코드 작성하기 위한 원칙
- 다른 개발자들에게 API를 제공한다는 마음으로 개발하라
- 남이 봐도 쉬운 코드를 만들어라
- 역사적인 이류를 만들지 말아라
- 자신의 코드만 보지 말아라
- 기존의 코드와 통일성 있는 코드를 작성하라
- 커뮤니케이션 하라
- 항상 1년 뒤에 이 소스를 본다면이라고 생각하라
- 리팩토링 하라
완벽함이란 더 이상 무엇인가를 더할 것이 없을 때 이루어지는 것이 아니라, 더 이상 무엇인가를 뺄 것이 없을 때 이루어진다. - 앙뜨완느 마리 로제 드 생떽쥐페리
객체지향 코딩 원칙
- 클래스가 꼭 필요한 변수와 함수만을 가지고 있는가?
- 클래스 사이의 연관성이 너무 높지 않은가?
- 중복된 코드가 너무 많지 않은가?
- 클래스가 너무 크지 않은가?
- 코드를 이해하기 쉬운가?
- 변하는 부분과 변화지 않는 부분은 무엇인가?
구현 퍼포먼스 향상
- 코딩 중에는 마우스를 최대한 만지지 마라
- 자신이 사용하는 툴의 모든 단축키를 외워라
- 디버깅하기 쉽도록 코드를 작성하라
- 반복되는 작업을 편하게 해줄 도구를 찾아라
- 목적지로 가는 가장 빠른 길을 탐색하라
- 구현 중에 흐름을 끊지 말아라
네이밍(Naming)int nCount=0; int nMagazineCount=0, nNovelCount=0, nOthersCount=0; int nTotalBookCount=0; int nMagazineCount=0, nNovelCount=0, nOthersCount=0;
접두사(Prefix) 붙이기타입Prefix예제boolbbool bRunning;intnint nIndex;charchchar chCode;floatffloat fRate;doubledbldouble dblPi;팩토리 패턴입력 → 팩토리(Factory)→출력싱글턴 패턴은 흔히들 시스템에 하나밖에 존재하지 않는 객체의 생성과 접근을 위해 사용된다.p197'예전에 읽은 책들 > 2016년 읽은 책' 카테고리의 다른 글
이야기로 이해하는 5대 종교이야기(2016.03.27) (2) 2025.07.15 읽기 좋은 코드가 좋은 코드다(2016.03.27) (0) 2025.07.12 마흔 두번째 스무살을 준비하다(2016.03.23) (6) 2025.07.11 죽을 때 후회하는 스물다섯 가지(2016.03.16) (3) 2025.07.11 스티브 잡스 아저씨의 세상을 바꾼 도전(2016.03.13) (0) 2025.07.10