티스토리 뷰

이 글은 "실용주의 프로그래머" 도서를 읽고 내용과 느낌을 정리한 글입니다 :)



완벽한 소프트웨어는 만들 수 없다.

- 이것을 기정 사실로 받아들이지 않는다면, 불가능한 꿈을 뒤쫓으며 시간과 노력을 낭비하게 될 것이다.

- 이 암울한 현실을 어떻게 장점으로 바꿀 수 있는가가 본 장의 주제다.

- 우리는 다른 사람의 코드와 접촉하고, 적절하거나 혹은 그렇지 못한 입력을 받는다. 그래서 방어적으로 코딩하도록 가르침 받았다.

- 실용주의 프로그래머들은 자기 자신 역시 믿지 않는다. 따라서 그들은 '계약에 의한 설계'를 이용한다.



계약에 의한 설계

- 프로그램의 정확성을 보장하기 위해 모듈들의 권리와 책임을 문서화하고 검증하는 것이 DBC(계약에 의한 설계: Design By Contract)의 핵심이다.

- 선행조건(precondition) : 루틴이 호출되기 위해 참이어야 하는 것.

- 후행조건(postcondition) : 루틴이 자기가 할 것이라고 보자하는 것.

- 클래스 불변식(class invariant) : 호출자 입장에서 볼 때는 이 조건이 언제나 참이라고 클래스가 보장한다.

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



DBC

- 요구사항과 보증의 문제를 전면으로 내세운다. (입력 도메인의 범위가 무엇인지, 경계 조건이 무엇인지, 루틴이 뭘 전달한다고 약속하는지, 무엇을 전달한다고 약속하지 않는지)

- 이런 것들을 명시하지 않으면 우연에 맡기는 프로그래밍으로 돌아가게 될 것이다.

- 오류 발생시 소비자의 입장을 우선하라.



단정적 프로그래밍

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



언제 예외를 사용할까

- 프로그래밍 언어에서 예외를 지원한다면, if else로 덕지덕지 된 코드를 깔끔하게 하나의 try catch문으로 잡아서 흐름을 명확하게 할 수 있다.

- 예외는 예외적인 문제에 사용하라.



시작한 것은 끝내라

- 리소스를 할당하는 루틴이나 객체가 리소스를 해제하는 책임 역시 져야한다.

- 리소스를 할당한 순서의 반대로 해제하라. 이렇게 해야 한 리소스가 다른 리소스를 참조하는 경우에도 리소스를 고아로 만들지 않는다.

- 여러 곳에서 동일한 리소스 집합을 할당하는 경우, 할당 순서를 언제나 같게 하라. 이렇게 해야 교찰(deadlock) 가능성이 줄어들 것이다.

- 최상위 구조 자신이 자기 안에 들어있는 하위 구조들의 할당을 해제할 책임이 있다.

- 최상위 구조에서 그냥 할당이 해제된다. 최상위 구조는 하나라도 하위 구조를 가지고 있을 경우 자기의 할당 해제를 거부한다.

- 정말 리소스가 적절하게 해제되었는지 점검하는 코드를 작성하라. 리소스의 할당과 해제를 기록해두어라.

'Book > 실용주의 프로그래머' 카테고리의 다른 글

6장. 코딩하는 동안 해야 할 일들  (0) 2018.09.29
5장. 구부러지거나 부러지거나  (0) 2018.09.29
3장. 기본적인 도구  (0) 2018.09.18
2장. 실용주의 접근법  (0) 2018.09.14
1장. 실용주의 철학  (0) 2018.09.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 29 30 31
글 보관함