Skip to content

Latest commit

 

History

History
68 lines (33 loc) · 2.64 KB

4c7a5-c2e4-c6a9-c8fc-c758-d3b8-c9d1-c99d.md

File metadata and controls

68 lines (33 loc) · 2.64 KB

(팁30)완벽한 소프트웨어는 만들 수 없다.

21) 계약에 의한 설계

 - Design By Contract (DBC)

 - 선행조건 : 요구사항

 - 후행조건 : 자기가 할 것이라 보장하는 것.

 - 클래스 불변식 : 호출자 입장에서 항상 참이라고 클래스가 보장함.

(팁31) 계약에 따른 설계를 하라.

 - 서브 클래스는 사용자가 차이점을 모르고서도 기반 클래스 인터페이스를 통해 사용할 수 있어야 한다.

 - 선행, 후행에 대한 조건들을 주석으로 기록

 - 단정문 : 선행조건들을 체크한다.

 - 언어 지원 : 컴파일러 혹은 런타임에서 자동으로 검사하게 선처리 시킨다.

 - 루프 불변식 : 최소값, 최대값등의 불변하는 최종 목적에 대한 체크

 - 의미론족 불변식 : 오류 발생시 소비자의 입장을 우선하라.

 - 동적 계약과 에이전트 : 계약 조건의 변화에 따른 생산성 위기의 대처와 계약사항의 설계

22) 죽은 프로그램은 거짓말 하지 않는다.

 - '그런 일은 절대 일어날 리 없어' 라는 사고에 빠지기 쉽다.

(팁32) 일찍 작동을 멈추게 하라.

 - 망치지 말고 멈추라.

23) 단정적 프로그래밍

(팁33) 단정문을 사용해서 불가능한 상황을 예방하라.

 - 진짜 에러처리 대신에 단정문을 사용하지 마라. (단정문은 결코 일어나서는 안되는 걸 검사한다.)

 - 성능이나 필요에 따라 단정 기능을 On/Off 하자.

24) 언제 예외를 사용할까

(팁34) 예외는 예외적인 문제에 사용하라. (일반적인 예외사항은과는 따로 처리하자.)

 - 에러 처리기를 이용한 에러 감지

25) 리소스 사용의 균형

(팁35) 시작한 것은 끝내라.

 - 리소스를 할당하는 루틴이 해제 역시 책임져야 한다. ( 할당과 해제의 책임소제를 분명하게 하자.)

 - 중첩 할당 : 리소스를 할당한 순서의 반대로 해제. 여러곳에서 동일 리소스 집합을 할당할 경우는 할당순서를 항상 같게처리.

 - 객체와 예외 : 예외로 인한 리소스 해제가 방해받는 경우에 가지고 있는 리소스를 해제한다.

 - 균형과 예외 : 지역 객체는 자신의 블럭을 나갈때 자동 파괴된다. (auto_ptr : 노드 나갈때 자동 해제)

 - 리소스 사용의 균형을 못잡는 이유 : 선택한 방법에 대해 일관성 있게 구현해야 한다. (하지만 사용하는 데이터 구조의 상황은 달라진다.)

 - 균형 점검 : 메모리 누수 체크, 리소스 사용량 체크 등.