Алгоритм - це повторюваний процес. Якщо він повторюється, він повинен мати атрибути, які не змінюються при повторенні. Це ваші інваріанти. Інваріанти поєднуються з та / або працюють на (потенційно) різних даних, які будуть передані у ваш алгоритм.
Таким чином, вся суть програмування полягає у визначенні того, що не змінюється, - це по суті ваша програма.
У об'єктно-орієнтованій програмі існує поняття, що кожен об’єкт повинен добре робити одну річ. Це по суті означає, що (для OOP на основі класу) клас визначає інваріанти для одного алгоритму, а також заповнювачі місць (змінних) для будь-яких варіантів даних, які можуть знадобитися його об'єктам. В ідеалі в OO ви виділите те, що змінюється наскільки це можливо, так що кожен об'єкт здебільшого інваріантний.