Tipos para todo
Consejos para desarrolladores: Si un programa tiene que manejar una
entidad, por más mínima que sea, no subestimes el poder que tiene
crear un tipo de dato para esa entidad. Por ejemplo: un DNI (Documento
Nacional de Identidad) se pueden representar con un string
o un
entero de 64 bits, pero tal vez sea mejor usar un tipo de dato propio
(ej: una clase); una coordenada X podría ser un entero, o realmente
una clase CoordenadaX
(o un simple typedef
de C++ como para comenzar).
¿Ventajas? En lenguajes de tipado estático, podemos obtener muchísimas validaciones en tiempo de compilación. Por ejemplo, validaciones del tipo “aquí espero un DNI, no espero cualquier entero”; o validaciones de unidades como “aquí espero gramos, no un double cualquiera”.
No me extrañaría ver en un futuro que Java y C# adopten los sufijos personalizables de C++11. Estos sufijos permiten hacer más sencillo definir literales de nuestro propios tipos. Ejemplos:
DNI algunDni = 14304890_dni;
CoordenadaX posicion = 32_x;
Width ancho = 320_width;
Gramos peso = 10_kg + 500_g;
Bits datosCrudos = 10010_bits;
Sí, todas son posibles expresiones de C++11 definiendo los tipos de
datos correctos y sobrecargando el operator""
.
(Vale la pena ver la implementación del _bits
en esta
respuesta de StackOverflow.)