¿Qué son los invariantes en informática?

Una invariante es como una regla o una suposición que se puede utilizar para dictar la lógica de su programa.

Por ejemplo, suponga que tiene alguna aplicación de software que realiza un seguimiento de las cuentas de usuario. Supongamos también que el usuario puede tener múltiples cuentas, pero por cualquier razón, necesita diferenciar entre la cuenta principal de un usuario y las cuentas “alias”.

Esto podría ser un registro de base de datos u otra cosa, pero por ahora supongamos que cada cuenta de usuario está representada por un objeto de clase.

clase userAccount {private char * pUserName; private char * pParentAccountUserName;

…}

Una invariante podría ser la suposición de que si pParentAccountUserName es NULL o está vacío, entonces este objeto es la cuenta principal. Puede usar este invariante para distinguir diferentes tipos de cuenta. Probablemente haya mejores métodos para distinguir los diferentes tipos de cuentas de usuario, así que tenga en cuenta que este es solo un ejemplo para mostrar cómo se puede usar un invariante.

El término se usa principalmente con respecto a algún tipo de acción, por ejemplo, ejecución de un programa, un solo ciclo, una transacción de base de datos, etc.

Una invariante es una condición lógica que se mantiene antes de la ejecución de la acción y luego. Por ejemplo, una invariante podría ser que cada persona en una base de datos debe estar asociada con un pasaporte. Esto significa que antes de cada transacción, debe haber un pasaporte para cada persona y después de que la transacción se haya confirmado, esto aún debe ser cierto.