1 | Define appropriate exception types to be thrown to indicate the failure |
2 | Check preconditions and conditionally return failure before taking any irreversible action in the method |
3 | Make public accessor methods so that clients can avoid or minimize failures |