Я знаю, что для этого есть технический термин, и я не могу его вспомнить:
При проектировании класса (или чего-то подобного с функциями и данными) каждый вызов методов объекта должен оставлять данные объекта в согласованном состоянии. «Согласованный» означает в соответствии с рядом (желательно документированных, обычно не запрограммированных) ограничений, называемых [X] s.