Para los tipos, ¿Enteros o Caracteres?

Hace un tiempo, encontramos la disyuntiva ante los escenarios de variables estilo tipo, entiéndase por ejemplo, un factura puede ser de tipo compra, venta, nota de débito o nota de crédito.

Al momento de hacer un modelado orientado a objetos, pudiéramos decir que se representa por un atributo llamado “type” de la clase cadenas de caracteres. Entonces, el código sería algo como:

<?php

class Invoice extends Model
{
/**
* @const TYPE
*/
const TYPE = [
‘purchase’ => ‘factura compra’,
‘sale’ => ‘factura venta’,
‘debit’ => ‘nota de débito’,
‘credit’ => ‘nota de crédito,
];

/**
* @var string
*/
protected $type;

public __construct()
{
$this->type = self::TYPE[‘sale’];
}
}

El otro escenario planteado, es modelar como el tipo como un entero, entonces el modelado sería algo como:

<?php

class Invoice extends Model
{
/**
* @const TYPE
*/
const TYPE = [
‘purchase’ => 0,
‘sale’ => 1,
‘debit’ => 2,
‘credit’ => 3,
];

/**
* @var int
*/
protected $type;

public __construct()
{
$this->type = self::TYPE[‘sale’];
}
}

De allí surgen varios argumentos que traemos a discusión. Según Sebastían Paaske, con lo enteros, las comparaciones se pueden llevar a cabo en un solo ciclo del procesador, que por el contrario, una cadena de caracteres, suponen un arreglo de varios caracteres, por lo que, en el peor caso, se deben revisar todos los caracteres de la cadena (string).

Aunado, si hablamos en términos de motores SQL, Gail nos muestra sus pruebas de rendimiento, comparando consultas para valores enteros y cadenas de caracteres. Allí se pudo concluir que los rendimientos son más eficientes si manejamos tipo enteros en lugar de cadenas de caracteres.

Asimismo, los enteros son mas eficientes, en cuanto al uso de recursos de espacio de almacenamiento. Un entero (INT) ocupa 4 bytes y entero tipo TINYINT, el cuál se ajuta para modelar un tipo de factura  solamente 1 byte. Por su lado, un VARCHAR para representar ‘factura compra’ utilizaría 15 bytes.

En conclusión, podemos decir que es preferible utilizar tipos numéricos que se puedan representar como enteros en lugar de cadenas de caracteres.

Laracon Online

Esta semana termino el Laracon Online, la conferencia en línea acerca del framework Laravel.

El pasado 8 de Marzo de 2017, se llevo a cabo la conferencia con la participación de desarrolladores apasionados por el framework Laravel creado por Taylor Otwell, el mismo que participo como facilitador con una vista del nuevo Laravel 5.4, preparándonos para el próximo lanzamiento LTS 5.5 del framework.

Por otro lado, las presentaciones de Jeffrey Way, fundador de Laracasts hablando sobre Laravel Mix, Evan You creador de Vue.Js y Jason McCreary creador de Laravel Shift conversando sobre el poder de Git sobresalieron en lo que fue la jornada de todo el día.

En slack se pudo ver con euforia como está comunidad de desarrolladores esta creciendo y tomando auge cada día en las aplicaciones web, haciendo un excelente antesala para lo que será el LaraconUS 2017 en New York el venidero mes de Julio.

Esperamos con ansias que se publiquen los vídeos, para los que no pudimos atender la jornada.