SlideShare a Scribd company logo
1 of 12
C++ API 디자인
Chapter1. 소개
애플리케이션 프로그래밍 인터페이스

•
•

API 란 기능을 모듈화하는 재사용 가능한 블록을 뜻한다
간단한 함수에서부터 수백 개의 클래스일수 도 있음

애플리케이션 코드

API

API

API

API

API
계약과 계약자

•

집을 혼자 다 지을 수도 있지만 , 전문 계약자들을 고용 ( 계약 ) 함으
로써 일을 위임해서 더 효율적으로 집을 지을 수 있다
– 일의 분업이 가능하며
– 운이 좋을 경우 공짜로 일해줄 사람을 찾을 수 도 있음
– 무엇보다 전문 지식이 없어도 집을 지을 수 있다

•

API 를 전문 계약자들이라 한다면 , 적당한 API 를 사용하여 애플리
케이션을 구현하는 것을 계약에 비유할 수 있다
C++ API

•

C++ API 는 다음과 같은 요소를 포함한다
– 헤더 : 인터페이스를 정의하는 .h 파일의 모음
– 라이브러리 : API 를 구현하는 라이브러리
– 문서화 : API 를 사용하는 방법 . API 의 모든 클래스나 생성된 메타데이터

•

윈도우 API, 표준 템플릿 라이브러리 C++ API 의 예이다
API 설계는 어떻게 틀린가 ?

•
•
•
•
•
•

API 수많은 개발자들에 의해서 다양하게 쓰이는 인터페이스를 작성
하는 것이다
API 의 수정은 자신과 의존 관계를 맺는 모든 애플리케이션에 영향을
미친다
API 를 변경할 때 하위 호환을 제공해야 한다
계획 , 설계 , 버전 관리 및 리뷰에 많은 자원을 소비한다
문서화가 꼭 필요하다
테스트 자동화가 필요하다
왜 API 를 쓰는가 ? - 코드

•
•
•
•
•
•
•

구현을 은닉할 수 있다
지속성을 향상 시킨다
모듈화 한다
중복 코드 제거
가정하에 작성된 하드코드 제거
쉬운 코드 변경
쉬운 최적화
왜 API 를 쓰는가 ? - 재사용

•
•
•
•

기존 코드를 재사용함으로 효율적 개발을 가능하게 한다
필요한 기능을 직접 구현하기 보다 오픈 소스 등을 사용할 수 있다
구체적인 구현 내용을 알 필요 없으며 , 개발기간이 단축된다
API 사용의 단점 중 하나는 API 는 내가 원하는 것 보다 일반적인 형
태의 인터페이스를 가지기 때문에 이를 위한 추가 작업이 필요하다는
것이다
왜 API 를 쓰는가 ? - 병렬 개발

•
•
•

내가 개발하는 코드가 동료가 개발하는 코드에 의존성을 가지고 있다
고 가정하자
내가 개발하는 API 가 다 완성되어야 , 동료가 API 를 개발할 수도
있는 것일까 ?
나와 동료가 미리 API 정의한다면 동시에 개발이 가능하게 된다
API 를 사용하지 말아야 할 때

•

사용하려는 API 에 라이선스 제한이 있을 경우
– GPL 라이선스라면 코드를 공개해야 한다
– 라이선스 비용이 비쌀 경우

•

기능이 부적합할 때
– 환경을 지원하지 못할 때
– 성능이 나쁘거나 원하는 처리결과를 제공하지 못할 때

•

소스 코드의 부재
– 라이브러리에 버그가 있을 경우

•

충실하지 못한 문서화
– 사용법이 충분하게 설명되지 않는 경우
파일 포맷과 네트워크 프로토콜

•
•
•
•
•

정보 교환을 위한 표준 인터페이스 또는 명세를 정의
애플리케이션을 프로그래밍하기 위한 인터페이스가 아님
오히려 명세 변경을 관리하기 위한 API 의 구현이 필요
파일 포맷을 일고 쓰는 API 를 개발하면 , 파일 포맷이 바뀌었을 때
구현만 바꾸면 된다
네트워크 접근을 API 로 추상화 하였다면 , UDP 가 TCP 로 바뀌어
도 인터페이스에는 영향이 미치지 않는다
책의 구성

•
•
•
•
•
•
•
•
•

2 장 품질 : 정보 은폐 , 완전성 최소화 , 느슨한 연결과 같이 품질에
관련된 내용
3 장 패턴 : 디자인 패턴과 관용법
4 장 설계 : 구조 , 유즈 케이스 모델링과 프로젝트 진행시 직면하는
어려움을 해결하는 방법
5 장 API 개발 방법 : API 구현 방법과 예시
6 장 C++ 의 올바른 사용법 : API 설계에 영향을 미치는 C++ 의 다
양한 기능
7 장 성능 : 고성능 API 를 구현하는 방법
8 장 버전 관리 : API 버전 관리 및 호환성 유지
9 장 문서화 : API 문서화
10 장 테스트 : 자동화 테스트 방법
책의 구성

•
•

11 장 스크립팅 : 스크립트 언어에서 C++ API 를 사용하는 경우
12 장 확장성 : 플러그 인을 통한 확장

More Related Content

What's hot

Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
Visual studio 사용 설명서(고급)
Visual studio 사용 설명서(고급)Visual studio 사용 설명서(고급)
Visual studio 사용 설명서(고급)Lusain Kim
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니Lusain Kim
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다wonmin lee
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
초보를 위한 C++11
초보를 위한 C++11초보를 위한 C++11
초보를 위한 C++11Minhyuk Kwon
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1현찬 양
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Dong Chan Shin
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부JiHyung Lee
 
C++ 개요와 표준안
C++ 개요와 표준안C++ 개요와 표준안
C++ 개요와 표준안Jaewon Choi
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2현찬 양
 
Clean code
Clean codeClean code
Clean codebbongcsu
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉MinGeun Park
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2현찬 양
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basicsJaewon Choi
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guideSungchul Park
 

What's hot (20)

Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
Visual studio 사용 설명서(고급)
Visual studio 사용 설명서(고급)Visual studio 사용 설명서(고급)
Visual studio 사용 설명서(고급)
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
What’s new in c++11
What’s new in c++11What’s new in c++11
What’s new in c++11
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
초보를 위한 C++11
초보를 위한 C++11초보를 위한 C++11
초보를 위한 C++11
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부
 
C++ 개요와 표준안
C++ 개요와 표준안C++ 개요와 표준안
C++ 개요와 표준안
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
7 8 1
7 8 17 8 1
7 8 1
 
Effective c++ 2
Effective c++ 2Effective c++ 2
Effective c++ 2
 
Clean code
Clean codeClean code
Clean code
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basics
 
Kotlin
KotlinKotlin
Kotlin
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 

Similar to C++api디자인 1장

ABI란 무엇인가요?
ABI란 무엇인가요?ABI란 무엇인가요?
ABI란 무엇인가요?진상 문
 
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Channy Yun
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Junyoung Sung
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8흥래 김
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기NAVER D2
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자Young Min Shin
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반arundine
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기KTH, 케이티하이텔
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Eunchong Yu
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf정민 안
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxssuser2601f7
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술중선 곽
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐Terry Cho
 

Similar to C++api디자인 1장 (20)

ABI란 무엇인가요?
ABI란 무엇인가요?ABI란 무엇인가요?
ABI란 무엇인가요?
 
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 

C++api디자인 1장

  • 2. 애플리케이션 프로그래밍 인터페이스 • • API 란 기능을 모듈화하는 재사용 가능한 블록을 뜻한다 간단한 함수에서부터 수백 개의 클래스일수 도 있음 애플리케이션 코드 API API API API API
  • 3. 계약과 계약자 • 집을 혼자 다 지을 수도 있지만 , 전문 계약자들을 고용 ( 계약 ) 함으 로써 일을 위임해서 더 효율적으로 집을 지을 수 있다 – 일의 분업이 가능하며 – 운이 좋을 경우 공짜로 일해줄 사람을 찾을 수 도 있음 – 무엇보다 전문 지식이 없어도 집을 지을 수 있다 • API 를 전문 계약자들이라 한다면 , 적당한 API 를 사용하여 애플리 케이션을 구현하는 것을 계약에 비유할 수 있다
  • 4. C++ API • C++ API 는 다음과 같은 요소를 포함한다 – 헤더 : 인터페이스를 정의하는 .h 파일의 모음 – 라이브러리 : API 를 구현하는 라이브러리 – 문서화 : API 를 사용하는 방법 . API 의 모든 클래스나 생성된 메타데이터 • 윈도우 API, 표준 템플릿 라이브러리 C++ API 의 예이다
  • 5. API 설계는 어떻게 틀린가 ? • • • • • • API 수많은 개발자들에 의해서 다양하게 쓰이는 인터페이스를 작성 하는 것이다 API 의 수정은 자신과 의존 관계를 맺는 모든 애플리케이션에 영향을 미친다 API 를 변경할 때 하위 호환을 제공해야 한다 계획 , 설계 , 버전 관리 및 리뷰에 많은 자원을 소비한다 문서화가 꼭 필요하다 테스트 자동화가 필요하다
  • 6. 왜 API 를 쓰는가 ? - 코드 • • • • • • • 구현을 은닉할 수 있다 지속성을 향상 시킨다 모듈화 한다 중복 코드 제거 가정하에 작성된 하드코드 제거 쉬운 코드 변경 쉬운 최적화
  • 7. 왜 API 를 쓰는가 ? - 재사용 • • • • 기존 코드를 재사용함으로 효율적 개발을 가능하게 한다 필요한 기능을 직접 구현하기 보다 오픈 소스 등을 사용할 수 있다 구체적인 구현 내용을 알 필요 없으며 , 개발기간이 단축된다 API 사용의 단점 중 하나는 API 는 내가 원하는 것 보다 일반적인 형 태의 인터페이스를 가지기 때문에 이를 위한 추가 작업이 필요하다는 것이다
  • 8. 왜 API 를 쓰는가 ? - 병렬 개발 • • • 내가 개발하는 코드가 동료가 개발하는 코드에 의존성을 가지고 있다 고 가정하자 내가 개발하는 API 가 다 완성되어야 , 동료가 API 를 개발할 수도 있는 것일까 ? 나와 동료가 미리 API 정의한다면 동시에 개발이 가능하게 된다
  • 9. API 를 사용하지 말아야 할 때 • 사용하려는 API 에 라이선스 제한이 있을 경우 – GPL 라이선스라면 코드를 공개해야 한다 – 라이선스 비용이 비쌀 경우 • 기능이 부적합할 때 – 환경을 지원하지 못할 때 – 성능이 나쁘거나 원하는 처리결과를 제공하지 못할 때 • 소스 코드의 부재 – 라이브러리에 버그가 있을 경우 • 충실하지 못한 문서화 – 사용법이 충분하게 설명되지 않는 경우
  • 10. 파일 포맷과 네트워크 프로토콜 • • • • • 정보 교환을 위한 표준 인터페이스 또는 명세를 정의 애플리케이션을 프로그래밍하기 위한 인터페이스가 아님 오히려 명세 변경을 관리하기 위한 API 의 구현이 필요 파일 포맷을 일고 쓰는 API 를 개발하면 , 파일 포맷이 바뀌었을 때 구현만 바꾸면 된다 네트워크 접근을 API 로 추상화 하였다면 , UDP 가 TCP 로 바뀌어 도 인터페이스에는 영향이 미치지 않는다
  • 11. 책의 구성 • • • • • • • • • 2 장 품질 : 정보 은폐 , 완전성 최소화 , 느슨한 연결과 같이 품질에 관련된 내용 3 장 패턴 : 디자인 패턴과 관용법 4 장 설계 : 구조 , 유즈 케이스 모델링과 프로젝트 진행시 직면하는 어려움을 해결하는 방법 5 장 API 개발 방법 : API 구현 방법과 예시 6 장 C++ 의 올바른 사용법 : API 설계에 영향을 미치는 C++ 의 다 양한 기능 7 장 성능 : 고성능 API 를 구현하는 방법 8 장 버전 관리 : API 버전 관리 및 호환성 유지 9 장 문서화 : API 문서화 10 장 테스트 : 자동화 테스트 방법
  • 12. 책의 구성 • • 11 장 스크립팅 : 스크립트 언어에서 C++ API 를 사용하는 경우 12 장 확장성 : 플러그 인을 통한 확장