객체 상태를 전혀 사용하지 않는 등 객체 메소드로 부적절한 것은 아닌지
혹 다른 클래스에 정의하는 것이 더 적절한 것은 아닌지
외부와 상호 작용을 위해 필요한 것만 public
메소드의 매개 변수 수가 너무 많으면
메소드의 호출자가 지켜야 하는 요구사항
주로 오동작 방지, 오류를 찾을 때 사용
ex) BankAccount의 deposit 메소드의 사전조건 : amount > 0
위배된 상태에서 메소드가 호출되면 그 결과에 대해서는 메소드 구현자는 책임을 지지 않음
사전 조건에 따라 메소드가 호출되었을 때 메소드 실행 후 보장되는 조건
보통 반환 값 또는 객체의 상태를 말한다.
주로 검사를 위해 사용
이 클래스의 객체가 항상 만족해야 하는 조건
클래스를 설계할때 어떤 클래스 invariant가 있는지 찾아내는 것이 필요하며, 메소드를 구현할 때 invariant들이 항상 만족되도록 구현하여야 함