Design patterns·Objects, messages and the principles
there is a rule that is true of the object at every moment a caller can see it, and the constructor is where it starts being true.
Class invariant
Also calledinvariant, object invariant
A condition an object guarantees between every public operation: a date range whose end is never before its start, an order whose total always equals the sum of its lines. The value is that once it holds, no method needs to re-check it, which removes a large amount of defensive branching. It is also the argument for constructors that validate and for immutability, because both remove the windows in which it could be false.