매개변수가 유효한지 검사하라
인덱스 값은 음수이면 안되며, 객체 참조는 null이 아니어야 한다. 뭐 이런 제약은 문서화 해서 남겨야 한다. 또한 메소드 시작점에 검사해서 오류를 미리 방지해야 한다. 이 검사를 소홀이 하면 메소드 수행 중간 에러를 던지거나, 잘 실행됐는데 잘못된 결과를 반환하거나, 메소드 결과는 정상이지만 나중에 보면 객체가 오염되어 있다던가 결론적으로 실패 원자성을 어기는 결과를 낳을 수 있다.
이런 검사를 위해서 자바7에서 추가된 java.util.Objects.requireNonNull 등의 유틸 메소드로 검사를 하는 방법이 있다. 자바9에서는 checkFromIndexSize,
checkFromToIndex, checkIndex 등의 메소드가 추가됐다. 혹은 assert로 유효성 검증을 할 수도 있다.
또한 생성자 매개변수 유효성 검사는 클래스 불변식을 어기는 객체가 만들어지지 않도록 하기 위해서 필요하다. 몸체 실행 전, 그러니까 시작하자마자 검사해야한다는 규칙에도 예외는 있다. 유효성 검사 비용이 너무 높거나 실용적이지 않으면 혹은 계산 중 암묵적으로 검사가 수행될 때말이다. 그러나 암묵적 유효성 검사는 어디까지나 암묵적이다. 실패 원자성을 해칠 여지가 여전히 존재한다.