domingo, 8 de marzo de 2015

!Apunte semanal - De objetos inmutables, proxies inversos y otras finas hierbas

En nuestra disciplina, carrera, medio o como lo queramos llamar, existen diversas palabras técnicas las cuales suenan bastante complejas, y que pueden poner nuestra imaginación a volar cuando las escuchamos, y aunque lo más probable es que las usemos todos los días sin darnos cuenta, no sepamos su significado u objetivo, como por ejemplo, cuántos términos te son familiares de la siguiente lista?


:Pues sí, es bastante conocida y graciosa esta imagen o generador de excusas aleatorias para los informáticos, y como vemos hay muchos términos que son para dejar con la boca abierta a muchos, y otra frase que podríamos encajar perfectamente en la primera columna del generador de excusas es "Cuando logremos cambiar el valor del objeto inmutable" - "de las clases de abstracción" - "del acelerador de transacciones" o_O no suena nada mal!

Pues bien, de eso va este apunte semanal, y no se trata precisamente de enriquecer nuestro generador de excusas, si no de comprender de qué se tratan los objetos inmutables, objetos que usamos a diario en nuestra profesión como desarrolladores.


Un objeto inmutable es un objeto cuyo valor no puede cambiar una vez es creado, a diferencia de los objetos mutables, los cuales pueden sufrir cambios después de su creación.


En C# suelen manejarse muchos tipos inmutables, es por esto que debemos tener cuidado con su uso, y para comprender esto vamos a usar como ejemplo, un tipo que usamos todos los días, y que es inmutable "string" a eso me refería con que usamos todos los días objetos inmutables.

Por si no lo sabías cuando concatenamos otra cadena a una variable de tipo string, en realidad no estamos modificando directamente su contenido, si no que estamos creando otra variable la cual contiene el nuevo valor, aja! es por esto que siempre es recomendable usar en estos casos en los cuales tenemos que cambiar repetitivamente el valor inicial de la cadena, el tipo StringBuilder ya que es un tipo mutable, y debido a esto podemos cambiar su valor sin que el compilador tenga que crear nuevas cadenas.

string  mensaje = "este es el primer mensaje";
        mensaje += "(mensaje 1)";
        mensaje += "(mensaje 2)";

En el caso anterior tendríamos tres variables de tipo string, mientras que en el siguiente caso estaríamos creando una variable de tipo StringBuilder y la modificaremos en varias oportunidades.

var sb = new StringBuilder("este es ");
    sb.Append("el primer");
    sb.Append("mensaje");
    sb.Append("(mensaje 1)");
    sb.Append("(mensaje 2)");

Bueno y eso es todo de este apunte semanal, espero sea de utilidad y nos pueda servir para optimizar nuestro código.

Saludos y buena suerte!

1 comentario:

  1. Gracias por el apunte, me gustaria puedas hacer una referencia a objetos imputables e inmutables

    ResponderEliminar