Frases informáticas

El código sin pruebas no es código.

lunes, 2 de agosto de 2021

Definición: Software

Hay varias definiciones. Sin entrar en temas demasiado técnicos, serían estas dos, de las mas aceptadas:

"Es la información que le suministra el desarrollador a la computadora para que manipule la información que suministra el usuario."
Cox

"Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones de un sistema de computación. "
IEEE 729

domingo, 1 de agosto de 2021

Buenas prácticas: Nomenclatura API

Este es un extracto traducido de algunos de los 22 puntos de este artículo de Mohammad Faisal, al que recomiendo seguir, así como al canal BetterProgramming.

Link del artículo original: https://link.medium.com/urkTEwQzmib

Link de Mohammad Faisal: https://56faisal.medium.com/

Link de BetterProgramming: https://betterprogramming.pub/

Solo he obtenido los puntos relativos a nomenclatura, pero todos los demás son muy interesantes.

1. Usar kebab-case para las URLs. 

Mal

/systemOrders
/system_orders

Bien

/system-orders

2.Usar camelCase para los parámetros.

Mal

/system-orders/{order_id}
/system-orders/{OrderId}

Bien

/system-orders/{OrderId}

3. Usa plurales para apuntar a una colección.

Si quieres obtener todos los usuarios de un sistema:

Mal

GET /user
GET /User

Bien

GET /users

4. No utilices verbos en la URL

Mal

POST /updateuser/{userId}
GET /getusers

Bien

PUT /user/{userId}

5. Usa camelCase para propiedades JSON

Mal

{
user_name: "Mohammad Faisal"
user_id: "1"
}

Bien

{
userName: "Mohammad Faisal"
userId: "1"
}

6. No expongas tu arquitectura, como el nombre de tu tabla como un recurso.

Mal: product_order

Bien: product-orders

7. Usa ordinales simples como versión.

Usa el código de versión de forma simple, con versiones enteras lo mas a la izquierda  posible. Esto permitirá tener colecciones de endpoint y modificar enpoints a su derecha sin romper la funcionalidad de versiones anteriores.

http://api.domain.com/v1/shops/3/products

8. Incluye el número total de recursos en tu respuesta.

Mal

{
    users: [
     ...
    ]
}

Bien

{
    users: [
    ...
    ],
    total: 34
}

9. Usar métodos HTTP para funciones CRUD. 
Se relaciona con el 4.

GET: Obtiene una representación de un recurdo

POST: Crea un nuevo recurso y subrecursos

PUT: Actualiza recursos existentes

PATCH: Actualiza recursos existentes, pero solo actualiza los campos que fueron utilizados, dejando los demás como estaban.

DELETE: Borra un recurso


sábado, 31 de julio de 2021

Definición: Estructurado

Algo se considera estructurado cuando sus partes están anidadas dentro, y todo proceso que comience dentro de una estructura termina dentro, en ningún momento salta fuera.

No hay cabida por ejemplo para gotos que permitían pasar de una estructura a otra.

JSON, YAML o XML son estructurados. A mitad de un JSON no puede empezar otro JSON diferente, ni terminar fuera del original.


Diagramas de componentes vs diagramas de paquetes

El diagrama de paquetes sirve basicamente para agrupar y tener jerarquizado y accesible conjuntos de elementos preferentemente del mismo tipo. Puedes agrupar dentro del mismo paquete un conjunto de casos de uso similares, o de nodos de hardware, o de clases, o de cualquier tipo de elemento.

Un componente indica elementos y conjuntos desplegables en una maquina. Una librería de clases sería un componente, pero no lo serían niveles por debajo como clase, métodos,etc porque no son elementos desplegables.

Un conjunto de clases de un paquete que forman un programa ejecutable, si sería un componente, porque ese paquete formaría parte del componente.

Pero no hay una relación entre componentes y paquetes como para compararlos.

Abstracción vs Modelo

Se define modelo a la obtención a través de la abstracción de la esencia o de lo fundamental de algo que es objeto de nuestro interés. 

La abstracción es el proceso mediante el cual extraemos la esencia de algo, siendo el modelo la consecuencia de ello.

Mediante un proceso de abstracción se obtiene un conjunto de conceptos (el modelo) a partir del cual estudiar el problema.

Un modelo de un partido de fútbol, se podría generar, organizando las extracciones útiles mediante la abstracciones fundamentales que podrían ser: Jugador, Equipo, Balón...

Colaboración vs Relación

Hay que atender aquí a que tratan sobre elementos diferentes. Unos sobre clases y otros sobre objetos instanciados de clases.

Se llama colaboración cuando los objetos de una clase lanzan mensajes a objetos de otra clase. Se dice simplificando que un objeto colabora con otro objeto.

El término relación se aplica para definir las relaciones entre clases, por ejemplo Composición, agregación, asociación...etc

Siguiendo el ejemplo de composición, cuando un objeto es parte de un todo, es una colaboración porque esa estructura se creó precisamente para poder lanzar esos mensajes. 


Definición: Efecto lateral

Es un problema típico en la programación estructurada que fue afrontado por el paradigma funcional. Se basa en el problema de utilizar variables globales que serán modificadas por uno o más métodos. 

int x=0;
function foo(int y)
{
    x++;
    return x+y;
}

Esto implica que llamar a un método varias veces, con los mismos parámetros de entrada, provocará resultados diferentes.

foo(3) = 3
foo(3) = 4
foo(3) = 5

Esto no sucede en el paradigma funcional que tiene como premisa la transparencia referencial.

Definición: Software

Hay varias definiciones. Sin entrar en temas demasiado técnicos, serían estas dos, de las mas aceptadas: "Es la información que le sumi...