Topic 23 계약에 의한 설계
- 서동우: 시작하기 전에 자신이 수용할 것은 엄격하게 확인하고, 내어 줄 것에 대해서는 최소한도를 약속하는 것이다. 무엇이든 수용하고 결과로는 무엇이든 다 준다고 계약에 쓰여있다면, 여러분은 정말이지 많은 코드를 작성해야 할 것이다.
- 남혜민: 코드를 작성하기 전, 소프트웨어 모듈의 권리와 책임(유효한 입력 범위, 경계 조건, 루틴의 역할 등)을 문서화하고 미리 정의한다.
- 장준환:
- 변현정: 계약에 부응하지 못하는 것은 버그라는 것이다.
오류 발생 시 소비자의 입장을 우선하라.
- 엄나윤: 자신과 상대편의 권리 및 책임을 정의한다.
- 이정근: 정직한 거래를 보장하는 최선의 해법 중 하나는 계약이다.
Topic 24 죽은 프로그램은 거짓말을 하지 않는다
- 서동우: 망치지 말고 멈춰라.
- 남혜민: 죽은 프로그램이 끼치는 피해는 이상한 상태의 프로그램이 끼치는 피해보다 적다.
- 장준환:
- 변현정: 모든 오류는 정보를 준다.
- 엄나윤: 방어적 프로그래밍은 시간낭비다 그냥 멈추는게 낫다.
- 이정근:
- 문제가 발견되면 즉각 멈춰야 한다. 하지만 기획자는 싫어한다.
유저에게는 나쁜 경험이지만 개발자에게는 지옥이 될 수 있다.
Topic 25 단정적 프로그래밍
- 서동우: 진짜 오류 처리를 해야 하는 곳에 단정을 대신 사용하지는 말라. 단정은 결코 일어나면 안 되는 것들을 검사한다.
- 남혜민: 단정문으로 불가능한 상황을 예방하라. 잘 모를 땐 스코프를 줄이는 편이 낫다.
- 장준환:
- 변현정: ‘하지만 물론 그런 일은 절대 일어나지 않을 거야.’ 라는 생각이 든다면 그런 일을 확인하는 코드를 추가하라.
- 엄나윤:
- 단정문으로 불가능한 상황을 예방하라
- 그런일은 절대로 일어날리 없어 라는 식으로 자신을 기만하지 말자
- 그런일을 확인하는 코드를 추가하라
- 명시적으로 검사하라
- 테스트가 모든 버그를 발견한다는 가정은 틀렸다