어떻게 이런 질문을 할 수 있을까 한다. "추구할 가치가 있는가?" .. 나는 단연코 추구할 가치가 있다고 생각한다. 여러가지가 있지만, 에러가 한번 터졌다 하면, 어디서 부터 봐야 하는지 난감할 때, 이 때문에 나는 단연코 추구해야 한다고 생각한다.
어느정도 알고 있을 때의 코딩과 그냥 막무가네로 찾아야 하는 코딩은 분명 차이가 있기 때문이다.
이번 항목은 "추구할 가치가 있는가?" 로 생각하는 논쟁에 대해서 정리하는 항목이라 할 수 있겠다.
1 ) Abrahams의 예외 안전성 보장들을 강략히 정의하라.
기본 보장(basic guarantee) : 자원 누수는 일어나지 않으며, 연산 실패된 객체의 파괴가 가능하다는 보장, : 쉽게 말해서 RAII 를 들 수 있겠다.
강한 보장(strong guarantee) : 연산이 실패 하여도, 객체의 상태를 건들이지 않고, 프로그램의 상태를 변화시키지 않는 보장, 쉽게 말한다면, 임시 객체에 작업하고, 나중에 바꾸어 버리는 방법이 여기에 속한다고 할 수 있겠다.
무실패 보장(nofail guarantee) : 이것은 초강력 보장으로, 절대 예외가 발생하지 않는 다는 것을 보장하는 것이다. 어떠한 경우에서건 예외가 발생하지 않는다. 예를 들면, 임시 객체 생성에서 예외가 발생할 순 있지만, 임시 객체에 작업하는 것들은 예외를 발생시키지 않을 수 있다. 또는 작업하는것에 예외는 발생 할 순 있지만, swap할 때, 예외를 발생 시키지 않을 수 있다.
2 ) 다음의 보장들을 위한 코드를 작성할 필요가 있을 때는 언제인가?
(a) 기본 보장
(b) 강한 보장
(c) 무실패 보장
좋은 코딩 하자는데, 안 쓸 필요가 있는가? 다음의 이유를 보면 꼭 쓸 필요가 있다.
1. 예외는 항상 발생 될 수 있다.(.. 요즘 참 많이 느낀다.)
2. 예외에 안전한 코드를 작성하는 것은 프로그래머 자신에게 도움이 된다.(스택이 꼬여서 생긴 오류는 찾기 참 힘들다.)
총평
1. 언제나 무실패 보장을 할 수 있도록 노력 할 것,
2. 생성자, 소멸자, swap 함수에는 예외를 던지지 말 것,
3. 아무리 못해도, 메모리 누수만은 꼭 막을 것
'책 정리 > Exceptional C++ Style' 카테고리의 다른 글
항목 17 : 캡슐화 ( 난이도 : 4 ) (0) | 2009.01.16 |
---|---|
항목 16 : private는 얼마나 비공개적인가? ( 난이도 : 5 ) (0) | 2009.01.15 |
항목 15 : 접근 권한의 사용과 오용 ( 난이도 : 6 ) (1) | 2009.01.15 |
항목 14 : 순서의 중요성 ( 난이도 : 2 ) (1) | 2009.01.14 |
항목 13 : 예외 명세에 대한 실용적인 고찰 ( 난이도 : 6 ) (1) | 2009.01.14 |
항목 11 : try 와 catch ( 난이도 : 3 ) (1) | 2009.01.13 |
항목 10 : export의 한계, 2부 : 상호작용, 유용성 문제, 지침들 ( 난이도 : 9 ) (1) | 2009.01.13 |
항목 9 : export의 한계, 1부 : 기초 ( 난이도 : 7 ) (1) | 2009.01.13 |
항목 8 : 템플릿 친구 만들기 ( 난이도 : 4 ) (1) | 2009.01.12 |
항목 7 : 함수 템플릿을 특수화하지 말아야 하는 이유 ( 난이도 : 8 ) (4) | 2009.01.09 |
최근댓글