Propiedades Computadas en Swift: Uso y Ejemplos Prácticos

Clase 7 de 27Curso de Programación Orientada a Objetos en Swift

Resumen

¿Qué son las computed properties y cómo se diferencian?

Las propiedades calculadas, o computed properties, son una herramienta poderosa que se utiliza para definir variables cuyo valor se calcula automáticamente mediante un algoritmo, en lugar de ser asignado directamente. A diferencia de las propiedades almacenadas o stored properties, estas no retienen un valor por sí solas. Se utilizan allí donde el valor depende de algún tipo de cálculo, basado en otras propiedades. Las computed properties permiten mantener valores dinámicamente actualizados sin la necesidad de almacenamiento redundante.

¿Cómo se declaran las computed properties?

Para declarar una computed property en Swift, se abre una llave después de declarar la variable y se definen los métodos get y, opcionalmente, set. Veamos un ejemplo para ilustrar:

struct Rectangle {
    var origin: Point
    var size: Size
    var center: Point {
        get {
            let centerX = origin.x + size.width / 2
            let centerY = origin.y + size.height / 2
            return Point(x: centerX, y: centerY)
        }
        set {
            origin.x = newValue.x - size.width / 2
            origin.y = newValue.y - size.height / 2
        }
    }
}

En este ejemplo, el centro de un rectángulo se calcula en base a su origen y tamaño. El método get devolvemos las coordenadas del centro calculándolas cada vez que se accede a la propiedad center. El método set permite actualizar el origen del rectángulo al asignar un nuevo centro.

¿Cuáles son las ventajas de usar computed properties?

Las computed properties presentan varias ventajas importantes:

  • Mantenimiento de consistencia de datos: Al calcular el valor sólo cuando es necesario, se asegura que está siempre actualizado y consistente.
  • Reducir la redundancia: Evitan la duplicación de datos al no necesitar una variable para cada posible estado de un objeto.
  • Omisión de valor inicial: No es obligatorio inicializar estas propiedades, ya que su valor se calcula bajo demanda.
  • Flexibilidad: Permiten crear interfaces de objetos más intuitivas y fáciles de entender, sin exponer detalles de implementación interna.

Ejemplo práctico de uso de computed properties

Imaginemos un cuadrado con origen (0, 0) y tamaño (10 \times 10). Queremos calcular su centro y además, modificar la posición del origen cuando se actualiza el centro:

var square = Rectangle(origin: Point(x: 0, y: 0), size: Size(width: 10, height: 10))
print(square.center) // Saída: (5, 5)

square.center = Point(x: 20, y: 20)
print(square.origin) // Saída: (15, 15)

Aquí, modificamos el centro, lo que automáticamente ajustó el origen del cuadrado gracias al método set en la propiedad center.

¿Qué debemos considerar al optimizar nuestras computed properties?

Para optimizar el uso de computed properties, considera los siguientes consejos:

  • Simplicidad: Mantén el código del método get y set lo más sencillo posible; incluso podrías usar la opción de líneas simples, removiendo el return en Swift.
  • Uso de newValue: En el método set, puedes omitir el nombre del nuevo valor, usando newValue directamente para simplificar el código.
  • Estandariza operaciones matemáticas: Concentra cálculos dentro de las propiedades para evitar repetición y minimizar el uso de variables temporales.

Aplicar estos principios te permitirá crear soluciones limpias y eficientes, ayudando a que tu código Swift sea más manejable y menos propenso a errores. ¡Sigue explorando, y verás cómo estas herramientas mejoran el modelado de tus datos de manera dinámica y precisa!