본문 바로가기
프로그래밍 놀이터/Tips

[실용주의 프로그래머] 단정적 프로그래밍

by 돼지왕 왕돼지 2018. 10. 26.
반응형

[실용주의 프로그래머] 단정적 프로그래밍


[실용주의 프로그래머] 단정적 프로그래밍, 단정 기능을 켜두라, 단정문( assert)을 사용해서 불가능한 상황을 예방하라, 이런 일은 절대 일어날 리 없어


-

자기 비난에는 사치성이 있다. 우리가 자신을 비난할 때, 다른 사람은 우리를 비난할 권리가 없다고 우리는 느낀다. - 오스카 와일드



-

이런 일은 절대 일어날 리 없어.


이 코드를 지금부터 30년 동안이나 사용하지는 않을 테니까, 연도에 두 자리 수를 사용해도 괜찮아.

이 앱을 외국에서 사용하는 일은 절대 없을 텐데 뭐하러 국제화하지?

count 는 음수가 될 수 없어.

이 printf 는 실패할 수 없어.


이런 류의 자기기만을 훈련하지 말자, 특히 코딩할 떄는..



-

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



-

컴파일 중에 단정 기능이 꺼져 있을 수도 있다는 걸 기억해야 한다.

그리고 실행되어야만 하는 코드는 절대 assert 속에 두면 안된다.


진짜 에러 처리 대신으로 단정을 사용하지 말아라.

단정은 결코 일어나면 안 되는 것들을 검사한다.





단정 기능을 켜두라


-

컴파일러와 언어 환경을 만드는 사람들에 의해 단정문에 관한 한 가지 일반적인 오해라 있다.


단정은 코드에 과부하(overhead)를 준다.

단정은 결코 일어날 수 없는 것들을 검사하기 때문에 코드 속 버그에 의해서만 촉발될 것이다.

일단 코드가 테스트되고 선적된 다음에는 더 이상 단정이 필요하지 않고, 코드 실행이 빨라지도록 단정을 꺼버려야 한다.

단정은 디버깅 도구일 뿐이다.


여기에는 두 가지 공공연한 잘못된 가정이 있다.


1. 테스트가 모든 버그를 발견한다는 가정이다.

2. 낙관주의자들은 여러분의 프로그램이 험한 세상에서 돌아간다는 사실을 잊는다.



-

첫째 방어선은 모든 가능한 에러를 체크하는 것이고,

둘째는 놓친 것들을 잡아내기 위해 단정문을 쓰는 것이다.




반응형

댓글