364
2
부
객체로서의 함수
8
.
7
불완전 타이핑과 강력한 테스팅
대형 기업 코드베이스를 유지보수하는 개발자들에 따르면 코드가 제품에서 실행된 후에 버그
를 발견할 때보다 정적 자료형 검사기로 버그를 발견해 수정할 때가 훨씬 비용이 적게 든다고
한다. 그러나 필자가 아는 기업들에서는 정적 타이핑을 적용하기 훨씬 전부터 자동화된 테스트
를 표준 프로세스에 광범위하게 적용해 왔음을 주지해야 한다.
아주 큰 도움이 되기는 하지만, 정적 타이핑을 궁극적인 검사자로서 항상 신뢰할 수는 없다. 다
음과 같은 에러가 심심치 않게 발생한다.
위양성
false
positive
올바른 코드에 자료형 에러가 있다고 경고하는 경우
위음성
false
negative
잘못된 코드에 자료형 에러가 있음을 경고하지 못하는 경우
게다가 모든 코드에 자료형 검사를 강제로 적용하다 보면 파이썬의 강력한 표현력을 활용하지
못할 수 있다.
●
일부 유용한 기능은 정적으로 검사할 수 없다. 예를 들어
config
(**
settings
)
와 같은 인수 언패킹이
그렇다.
●
프로퍼티, 디스크립터, 메타클래스, 그리고 전반적인 메타프로그래밍은 자료형 검사기가 제대로 지원하거나
이해하지 못한다.
●
자료형 검사기는 파이썬 버전보다 뒤처지므로 새로운 (그러나 심지어 발표된 지
1
년이 넘은) 언어 기능을
사용한 코드를 거부하거나 심지어 충돌할 때도 있다.
데이터 제약은 간단한 경우조차도 자료형 검사 시스템으로 표현할 수 없다. 예를 들어 ‘수량을
나타내는 변수는
0
보다 큰 정수여야 한다’라거나 ‘레이블은 ...