Design by Contract (DbC) ถือว่าความสัมพันธ์ระหว่างเมธอดและผู้เรียกใช้งานเป็นข้อตกลงอย่างเป็นทางการ ซึ่งนิยามโดยสามสิ่ง: preconditions (สิ่งที่ผู้เรียกใช้งานต้องรับประกัน), postconditions (สิ่งที่เมธอดรับประกันเพื่อตอบแทน) และ invariants (สิ่งที่ยังคงเป็นจริงสำหรับอ็อบเจ็กต์ตลอดเวลา)
ข้อบัญชาสามประการ
PRECONDITION → caller's duty: inputs/state the method requires to run correctly
POSTCONDITION → method's duty: what it promises on return (if precondition held)
INVARIANT → always-true property of the object, before and after every method
