Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 6. 상속, 그리고 객체 지향 설계 (1) 항목 32 : public 상속 모형은 반드시 "is-a(...는 ...의 일종이다)"를 따르도록 만들자 public 상속의 의미는 "is-a(...는 ...의 일종)"입니다. 기본 클래스에 적용되는 모든 것들이 파생 클래스에 그대로 적용되어야 합니다. 왜냐하면 모든 파생 클래스 객체는 기본 클래스 객체의 일종이기 때문입니다. 항목 33 : 상속된 이름을 숨기는 일은 피하자 1. 문제 class Base { private: int x; public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void mf3(); vo..
Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 5. 구현 항목 30 : 인라인 함수는 미주알고주알 따져서 이해해 두자 함수 인라인은 작고, 자주 호출되는 함수에 대해서만 하는 것으로 묶어둡시다. 이렇게 하면 디버깅 및 라이브러리의 바이너리 업그레이드가 용이해지고, 자칫 생길 수 있는 코드 부풀림 현상이 최소화되며, 프로그램의 속력이 더 빨라질 수 있는 여지가 최고로 많아집니다. 생성자와 소멸자 인라인은 피하자. 함수 템플릿이 대개 헤더 파일에 들어간다는 일반적인 부분만 생각해서 이들을 inline으로 선언하면 안 됩니다. 항목 31 : 파일 사이의 컴파일 의존성을 최대로 줄이자 객체 참조자 및 포인터로 충분한 경우에는 객체를 직접 쓰지 않습니다. 할 수 있으면 클래스 정의 대신 클..
Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 5. 구현 항목 26 : 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 변수 정의는 늦출 수 있을 때까지 늦춥시다. 프로그램이 더 깔끔해지며 효율도 좋아집니다. 항목 27 : 캐스팅은 절약, 또 절약! 잊지 말자 다른 방법이 가능하다면 캐스팅은 피하십시오. 특히 수행 성능에 민감한 코드에서 dynamic_cast는 몇 번이고 다시 생각하십시오. 설계 중에 캐스팅이 필요해졌다면, 캐스팅을 쓰지 않는 다른 방법을 시도해 보십시오. 캐스팅이 어쩔 수 없이 필요하다면, 함수 안에 숨길 수 있도록 해 보십시오. 이렇게 하면 최소한 사용자는 자신의 코드에 캐스팅을 넣지 않고 이 함수를 호출할 수 있게 됩니다. 구형 스타일의 캐스트를 쓰..
Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 4. 설계 및 선언 항목 18 : 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 좋은 인터페이스는 제대로 쓰기에 쉬우며 엉터리로 쓰기에 어렵습니다. 인터페이스를 만들때는 이 특성을 지닐 수 있도록 고민하고 또 고민합시다. 인터페이스의 올바른 사용을 이끄는 방법으로는 인터페이스 사이의 일관성 잡아주기, 그리고 기본제공 타입과의 동작 호환성 유지하기가 있습니다. 사용자의 실수를 방지하는 방법으로는 새로운 타입 만들기, 타입에 대한 연산을 제한하기, 객체의 값에 대해 제약 걸기, 자원 관리 작업을 사용자 책임으로 놓지 않기가 있습니다. tr1::shared_ptr은 사용자 정의 삭제자를 지원합니다. 이 특징 때문에 tr..
Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 3. 자원 관리 항목 13 : 자원 관리에는 객체가 그만! 자원 누출을 막기 위해, 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII 객체를 사용합시다. 일반적으로 널리 쓰이는 RAII 클래스는 tr1::shared_ptr 그리고 auto_ptr입니다. 이 둘 가운데 tr1::shared_ptr이 복사 시의 동작이 직관적인기 때문에 대개 더 좋습니다. 반면, auto_ptr은 복사되는 객체(원본 객체)를 null로 만들어 버립니다. 참고 : [TR1] shared_ptr 항목 14 : 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자 RAII 객체의 복사는 그 객체가 관리하는 자원의 복사 문제를 안고 가기 때문에,..
미움받을 용기 기시미 이치로,고가 후미타케 공저/전경아 역/김정운 감수 본문 중에서... 목적론 경험에 의해 결정되는 것이 아니라, 경험에 부여한 의미에 따라 자신을 결정하는 것이다. 인간은 과거의 원인에 영향 받아 행동하는 것이 아니라 스스로 정한 목적을 향해 움직인다. 중요한 것은 무엇이 주어졌느냐가 아니라 주어진 것을 어떻게 활용하느냐이다. 인간 관계 건전한 열등감이란 타인과 비교해서 생기는 것이 아니라 '이상적인 나'와 비교해서 생기는 것이다. 행동의 목표 1. 자립할 것 (자기 수용) 2. 사회와 조화를 이루며 살아갈 것 (타자 신뢰, 타자 공헌) 위의 행동을 뒷받침하는 심리적 목표 1. 내게는 능력이 있다는 의식을 가질 것 (자기 수용) 2. 사람들은 내 친구라는 의식을 가질 것 (타자 신뢰,..
Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 2. 생성자, 소멸자 및 대입 연산자 항목 5 : C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 컴파일러는 경우에 따라 클래스에 대해 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 암시적으로 만들어 놓을 수 있습니다. 항목 6 : 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 컴파일러에서 자동으로 제공하는 기능을 허용치 않으려면, 대응되는 멤버 함수를 private으로 선언한 후에 구현은 하지 않은 채로 두십시오. Uncopyable과 비슷한 기본 클래스를 쓰는 것도 한 방법입니다. 항목 7 : 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 다형성을 가진 기..
Effective C++ 이펙티브 C++ 스콧 마이어스 저/곽용재 역 1. C++에 왔으면 C++의 법을 따릅시다 항목 1 : C++를 언어들의 연합체로 바라보는 안목은 필수 C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라집니다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐입니다. 항목 2 : #define을 쓰려거든 const, enum, inline을 떠올리자 단순한 상수를 쓸 때는, #define보다 const 객체 혹은 enum을 우선 생각합니다. 함수처럼 쓰이는 매크로를 만들려면, #define 매크로보다 인라인 함수를 우선 생각합시다. 항목 3 : 낌새만 보이면 const를 들이대 보자! const를 붙여 선언하면 컴파일러가 사용상의 에러를 잡아내는 데 도움을 줍니다. con..
조훈현, 고수의 생각법 조훈현 저 바둑에 대해 문외한인 나는 조훈현 국수의 명성은 많이 들었지만 그분이 어떤 삶을 살았는지 전혀 아는 바가 없었다. 그분의 명성에 기대어 단지 호기심으로 읽기 시작했다. 하지만 어느새 고수에게서 인생의 가르침을 받는 기분으로 책을 읽어 나갔다. 한 평생 바둑만 하면서 얻은 그의 깨달음들은 신기하게도 우리 삶에 많은 조언을 해 준다. 그분의 삶이 평탄하지만은 않았기에 그 조언들이 더 마음에 와 닿지 않나 싶다. 본문 중에서... 죽을힘을 다해 싸웠다면, 그것으로 우리는 이긴 것이다. 나는 그저 생각 속으로 들어갔을 뿐이다. 내가 답을 찾은 것이 아니라 생각이 답을 찾아낸 것이다. 그 근성이란, 바로 생각이다. 해결할 수 있다는 긍정성. 반드시 해결해야겠다는 의지. 그리고 해..
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 Meyers, Scott Item 2 : Understand auto type deduction auto 타입 추론 = 템플릿 타입 추론 (Direct Mapping) template void f(ParamType param); f(expr); // call f with some expression auto x = 27; const auto cx = x; const auto& rx = x auto = 템플릿의 T역할, 타입 지정자 = ParamType 역할 template // conceptual template for void func_for_x(T param); ..
- #팀개발
- #알고리즘
- #클린코드
- #build2016
- 상속
- #로버트마틴
- #techdays2015
- 책
- 객체 지향 설계
- Effective Modern C++
- #EffectiveModernCpp
- Effective C++
- #cplusplus
- #세미나
- #제럴드와인버그
- Scott Meyers
- #자녀교육
- #마이클페더스
- #scottmeyers
- #csharp
- #스콧마이어스
- #mva
- #ndc
- #cpp
- #코드최적화
- #임백준
- #프로그래밍심리학
- #uwp
- #ModernCPP
- #레거시코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |