Comparator Contract
비교 함수는 정답 배열보다 순서 계약이 먼저다
cmp_to_key나 사용자 비교 함수는 추이성, 동치성, 예외값 정책이 깨지면 정렬 결과가 흔들립니다.
추이성
A < B, B < C라면 A < C도 참이어야 합니다.
동치성
같은 값으로 보는 항목은 어느 화면에서도 같은 그룹이어야 합니다.
예외값
None, 빈 문자열, locale 차이는 비교 전에 정규화합니다.
좋은 방식
key = (normalized, tie_key)
위험 방식
cmp(a,b) returns random tie
가능하면 comparator보다 key 함수를 먼저 쓰고, comparator는 계약 테스트와 함께 둡니다.