[실용주의 프로그래머] 단정적 프로그래밍 |
-
자기 비난에는 사치성이 있다. 우리가 자신을 비난할 때, 다른 사람은 우리를 비난할 권리가 없다고 우리는 느낀다. - 오스카 와일드
-
이런 일은 절대 일어날 리 없어.
이 코드를 지금부터 30년 동안이나 사용하지는 않을 테니까, 연도에 두 자리 수를 사용해도 괜찮아.
이 앱을 외국에서 사용하는 일은 절대 없을 텐데 뭐하러 국제화하지?
count 는 음수가 될 수 없어.
이 printf 는 실패할 수 없어.
이런 류의 자기기만을 훈련하지 말자, 특히 코딩할 떄는..
-
단정문(assert)을 사용해서 불가능한 상황을 예방하라.
-
컴파일 중에 단정 기능이 꺼져 있을 수도 있다는 걸 기억해야 한다.
그리고 실행되어야만 하는 코드는 절대 assert 속에 두면 안된다.
진짜 에러 처리 대신으로 단정을 사용하지 말아라.
단정은 결코 일어나면 안 되는 것들을 검사한다.
단정 기능을 켜두라
-
컴파일러와 언어 환경을 만드는 사람들에 의해 단정문에 관한 한 가지 일반적인 오해라 있다.
단정은 코드에 과부하(overhead)를 준다.
단정은 결코 일어날 수 없는 것들을 검사하기 때문에 코드 속 버그에 의해서만 촉발될 것이다.
일단 코드가 테스트되고 선적된 다음에는 더 이상 단정이 필요하지 않고, 코드 실행이 빨라지도록 단정을 꺼버려야 한다.
단정은 디버깅 도구일 뿐이다.
여기에는 두 가지 공공연한 잘못된 가정이 있다.
1. 테스트가 모든 버그를 발견한다는 가정이다.
2. 낙관주의자들은 여러분의 프로그램이 험한 세상에서 돌아간다는 사실을 잊는다.
-
첫째 방어선은 모든 가능한 에러를 체크하는 것이고,
둘째는 놓친 것들을 잡아내기 위해 단정문을 쓰는 것이다.
'프로그래밍 놀이터 > Tips' 카테고리의 다른 글
[실용주의 프로그래머] 리소스 사용의 균형 (0) | 2018.10.28 |
---|---|
[실용주의 프로그래머] 언제 예외를 사용할까 (0) | 2018.10.27 |
[실용주의 프로그래머] 죽은 프로그램은 거짓말을 하지 않는다 (0) | 2018.10.25 |
[실용주의 프로그래머] 계약에 의한 설계 (0) | 2018.10.24 |
[실용주의 프로그래머] 코드 생성기 (0) | 2018.10.23 |
댓글