Escribir un limpiador de c贸digo usando patrones de desestructuraci贸n
Probablemente ya est茅 familiarizado con la reestructuraci贸n en JavaScript. Nos lleg贸 en 2015 en la especificaci贸n ES6 , pero si necesita actualizar sus conocimientos, en el sitio web de Mozilla puede leer un gran art铆culo detallado sobre c贸mo funciona todo .
Pero saber c贸mo funciona no es lo mismo que saber c贸mo usarlo. 隆Aqu铆 hay tres patrones para ayudarlo a hacer que su c贸digo sea m谩s limpio, m谩s confiable y m谩s f谩cil de leer!
1. Argumentos de funciones nombradas
Los argumentos con nombre son una forma alternativa de manejar par谩metros de funci贸n para argumentos posicionales. En lugar de especificar argumentos en un orden bien definido, simplemente proporcione su nombre. En Python, por ejemplo, se ve as铆:
def sum(a=1,b=2,c=3): return a+b+c sum(b=5,a=10)
驴Ves? El orden no es importante si especific贸 expl铆citamente el nombre del par谩metro. Las ventajas sobre los argumentos posicionales son que:
- Puede omitir uno o m谩s par谩metros al llamar a una funci贸n
- El orden al pasar los argumentos ahora no es importante
- El c贸digo se ha vuelto m谩s legible
Aunque los argumentos con nombre nativo no son compatibles con JavaScript, podemos usar el patr贸n de desestructuraci贸n para lograr las tres ventajas anteriores. Este ser谩 el 煤ltimo ejemplo ya en JavaScript:
function sum({a = 1, b = 2, c = 3}) { return a + b + c } sum({b: 10, a: 5})
Se han alcanzado todos los objetivos: puede omitir c , el orden ahora no es importante y los argumentos van seguidos de sus propios nombres. Todo esto es posible precisamente debido a la desestructuraci贸n.
2. An谩lisis de respuesta del servidor m谩s limpio
A menudo, en la respuesta del servidor, solo nos interesa un bloque de datos o incluso un solo valor espec铆fico de este bloque. Si este es su caso, utilice la desestructuraci贸n para ignorar todo lo que el servidor generalmente env铆a. Un ejemplo:
function mockServerCall () { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ 'status': 200, 'content-type': 'application/json', 'data' : { dataOfInterest: 42 } }) }, 250) }) } mockServerCall() .then(({data: { dataOfInterest = 100 }}) => { console.log(dataOfInterest)
Este patr贸n le permite extraer los datos que nos interesan a medida que se analizan los argumentos. Y tiene la oportunidad de ajustar los valores predeterminados como un bono. Lo que sin problemas nos lleva al siguiente patr贸n ...
Establecer valores predeterminados durante la asignaci贸n
Si una variable no existe en el espacio de nombres, a menudo necesitamos establecerla en su valor predeterminado.
Antes de que llegara la desestructuraci贸n, podr铆a hacer algo como esto:
Pero este enfoque requerir谩 una l铆nea de c贸digo para cada tarea. La desestructuraci贸n te permitir谩 hacer todo de una sola vez:
const userSettings = {nightMode: true, fontSize: 'large'} const { nightMode = false, language = 'en', fontSize = 'normal' } = userSettings console.log(nightMode)
Este patr贸n se puede utilizar para establecer el estado de los componentes React!
隆Espero que estos patrones sean 煤tiles! Para leer m谩s sobre la desestructuraci贸n, siga los enlaces a continuaci贸n (informaci贸n en ingl茅s - aprox. Transl.) :
ES6 en profundidad: Desestructuraci贸n
Aprenda los conceptos b谩sicos de la desestructuraci贸n de accesorios en React