From 757bd6b3ce0d718607b7b606c517e2ebc529797c Mon Sep 17 00:00:00 2001
From: Sjesc <49368329+Sjesc@users.noreply.github.com>
Date: Thu, 3 Oct 2019 00:06:54 -0400
Subject: [PATCH 01/17] Traducir articulo ninja code
---
1-js/03-code-quality/04-ninja-code/article.md | 108 +++++++++---------
1 file changed, 54 insertions(+), 54 deletions(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 9019242f2..8d4773a2f 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -1,124 +1,124 @@
# Ninja code
-```quote author="Confucius"
-Learning without thought is labor lost; thought without learning is perilous.
+```quote author="Confucio"
+Aprender sin pensar es inútil. Pensar sin aprender peligroso.
```
-Programmer ninjas of the past used these tricks to sharpen the mind of code maintainers.
-
-Code review gurus look for them in test tasks.
+Los programadores ninjas del pasado usaron estos trucos para afilar la mente de los mantenedores de código.
-Novice developers sometimes use them even better than programmer ninjas.
+Los gurus de revisión de código los buscan en tareas de prueba.
-Read them carefully and find out who you are -- a ninja, a novice, or maybe a code reviewer?
+Los desarrolladores novatos algunas veces los usan incluso mejor que los programadores ninjas.
+Leelos detenidamente y encuentra quien eres -- ¿un ninja?, ¿un novato?, o tal vez ¿un revisor de código?
-```warn header="Irony detected"
-Many try to follow ninja paths. Few succeed.
+```warn header="Ironía detectada"
+Muchos intentan seguir los caminos de los ninjas. Pocos tiene éxito.
```
-## Brevity is the soul of wit
+## La brevedad es el alma del ingenio
-Make the code as short as possible. Show how smart you are.
+Has el código lo más corto posible. Demuestra cuan inteligente eres.
-Let subtle language features guide you.
+Deja que las características sutiles del lenguaje te guíen.
-For instance, take a look at this ternary operator `'?'`:
+Por ejemplo, echa un vistazo a este operador ternario ``? '':
```js
-// taken from a well-known javascript library
+// tomado de una librería de javascript muy conocida
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
```
-Cool, right? If you write like that, a developer who comes across this line and tries to understand what is the value of `i` is going to have a merry time. Then come to you, seeking for an answer.
+Fascinante, ¿cierto?. Si escribes de esa forma, un desarollador que se encuentre esta linea e intente entender cual es el valor de `i` la va a pasar muy mal. Por lo que tendra que venir a ti, buscando una respuesta.
-Tell them that shorter is always better. Initiate them into the paths of ninja.
+Diles que mientras mas corto mucho mejor. Guialos a los caminos del ninja.
-## One-letter variables
+## Variables de una sola letra
```quote author="Laozi (Tao Te Ching)"
-The Dao hides in wordlessness. Only the Dao is well begun and well
-completed.
+El Dao se esconde sin palabras. Solo el Dao está bien comenzado y bien
+terminado.
```
-Another way to code faster is to use single-letter variable names everywhere. Like `a`, `b` or `c`.
+Otra forma de programar más rápido es usando variables de una sola letra en todas partes. Como `a`, `b` o `c`.
-A short variable disappears in the code like a real ninja in the forest. No one will be able to find it using "search" of the editor. And even if someone does, they won't be able to "decipher" what the name `a` or `b` means.
+Una variable corta desaparece en el código como lo hace un ninja en un bosque. Nadie será capaz de encontrarla usando "buscar" en el editor. E incluso si alguien lo hace, no será capaz de "descifrar" el significado de `a` o `b`.
-...But there's an exception. A real ninja will never use `i` as the counter in a `"for"` loop. Anywhere, but not here. Look around, there are many more exotic letters. For instance, `x` or `y`.
+...Pero hay una excepción. Un verdadero ninja nunca usaría `i` como el contador en un bucle `"for"`. En cualquier otro lugar, pero no aquí. Mira alrededor, hay muchas mas letras exóticas. Por ejemplo, `x` o `y`.
-An exotic variable as a loop counter is especially cool if the loop body takes 1-2 pages (make it longer if you can). Then if someone looks deep inside the loop, they won't be able to quickly figure out that the variable named `x` is the loop counter.
+Una variable exótica como el contador de un bucle es especialmente genial si el cuerpo del bucle toma 1-2 páginas (hazlo más grande si puedes). Entonces si alguien mira en las profundidades del bucle, no será capaz de figurar rápidamente que la variable llamada `x` es el contador del bucle.
-## Use abbreviations
+## Usa abreviaciones
-If the team rules forbid the use of one-letter and vague names -- shorten them, make abbreviations.
+Si las reglas del equipo prohíbe el uso de nombres de una sola letra o nombres vagos -- acórtalos, has abreviaciones.
-Like this:
+Como esto:
- `list` -> `lst`.
- `userAgent` -> `ua`.
- `browser` -> `brsr`.
- ...etc
-Only the one with truly good intuition will be able to understand such names. Try to shorten everything. Only a worthy person should be able to uphold the development of your code.
+Solo aquel con buena intuición será capaz de entender dichos nombres. Intenta acortar todo. Solo una persona digna debería ser capaz de sostener el desarrollo de tu código.
-## Soar high. Be abstract.
+## Vuela alto. Se abstracto
```quote author="Laozi (Tao Te Ching)"
-The great square is cornerless
-The great vessel is last complete,
-The great note is rarified sound,
-The great image has no form.
+El gran cuadrado no tiene esquina
+La gran vasija se completa por última vez,
+La gran nota es un sonido enrarecido,
+La gran imagen no tiene forma.
```
-While choosing a name try to use the most abstract word. Like `obj`, `data`, `value`, `item`, `elem` and so on.
+Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como `obj`, `data`, `value`, `item`, `elem`, etc.
-- **The ideal name for a variable is `data`.** Use it everywhere you can. Indeed, every variable holds *data*, right?
+- **El nombre ideal para una variable es `data`.** Usalo lo más que puedas. En efecto, toda variable sostiene *data*, ¿no?
- ...But what to do if `data` is already taken? Try `value`, it's also universal. After all, a variable eventually gets a *value*.
+ ...¿Pero que hacer si `data` ya esta siendo usado? Intenta con `value`, también es universal. Después de todo, una variable eventualmente obtiene un *value*(valor).
-- **Name a variable by its type: `str`, `num`...**
+- **Nombra una variable por su tipo: `str`, `num`...**
- Give them a try. A young initiate may wonder -- are such names really useful for a ninja? Indeed, they are!
+ Dales un intento. Un recién iniciado puede preguntarse -- ¿Son dichos nombres realmente útiles para un ninja? En efecto, ¡lo son!
- Sure, the variable name still means something. It says what's inside the variable: a string, a number or something else. But when an outsider tries to understand the code, they'll be surprised to see that there's actually no information at all! And will ultimately fail to alter your well-thought code.
+ Claro, el nombre de la variable sigue significando algo. Dice que hay en el interior de la variable: una cadena de texto, un número o cualquier otra cosa. Pero cuando un forastero intenta entender el código, se verá sorprendido al ver que en realidad no hay información. Y finalmente fracasara en el intento de alterar tu código bien pensado.
- The value type is easy to find out by debugging. But what's the meaning of the variable? Which string/number does it store?
+ El valor del tipo es fácil de encontrar con una depuración. Pero, ¿cuál es el significado de la variable? ¿Qué cadena de texto o número guarda?
- There's just no way to figure out without a good meditation!
+ ¡No hay forma de saberlo sin una buena meditación!
-- **...But what if there are no more such names?** Just add a number: `data1, item2, elem5`...
+- **...Pero, ¿Y si ya no hay dichos nombres?** Simplemente añade un número: `data1, item2, elem5`...
-## Attention test
+## Prueba de atención
-Only a truly attentive programmer should be able to understand your code. But how to check that?
+Solo un realmente atento programador deberia ser capaz de entender tu código. Pero, ¿cómo comprobarlo?
-**One of the ways -- use similar variable names, like `date` and `data`.**
+**Una de las maneras -- usa nombre de variables similares, como `date` y `data`.**
-Mix them where you can.
+Combinalos donde puedas.
-A quick read of such code becomes impossible. And when there's a typo... Ummm... We're stuck for long, time to drink tea.
+Una lectura rapida de dicho código se hace imposible. Y cuando hay un error de tipografía.... Ummm...
+A quick read of such code becomes impossible. And when there's a typo... Ummm... Estamos atrapados por mucho tiempo, tiempo para tomar té.
-## Smart synonyms
+## Sinonimos inteligentes
```quote author="Confucius"
-The hardest thing of all is to find a black cat in a dark room, especially if there is no cat.
+Es difícil encontrar un gato negro en una habitación oscura, sobre todo cuando no está.
```
-Using *similar* names for *same* things makes life more interesting and shows your creativity to the public.
+Usando nombres *similar* para las mismas cosas hace tu vida mas interesante y le muestra al público tu creatividad.
-For instance, consider function prefixes. If a function shows a message on the screen -- start it with `display…`, like `displayMessage`. And then if another function shows on the screen something else, like a user name, start it with `show…` (like `showName`).
+Por ejemplo, considera prefijos de funciones. Si una función muestra un mensaje en la pantalla -- comienzalo con `display...`(mostrar), como `displayMessage`(mostrarMensaje). Y entonces si otra función muestra en la pantalla otra cosa, como un nombre de usuario, comienzalo con `show...`(presentar) (como `showName`(presentarNombre)).
-Insinuate that there's a subtle difference between such functions, while there is none.
+Insinua que hay una diferencia sútil entre dichas funciones, cuando no lo hay.
-Make a pact with fellow ninjas of the team: if John starts "showing" functions with `display...` in his code, then Peter could use `render..`, and Ann -- `paint...`. Note how much more interesting and diverse the code became.
+Has un pacto con tus compañeros ninjas del equipo: si John comienza funciones de "mostrar" con `presentar...` en su código, entonces Peter podría usar `exhibir..`, y Ann -- `pintar...`. Nota como el código es mucho más interesante y diverso ahora.
-...And now the hat trick!
+...¡Y ahora el truco del sombrero!
-For two functions with important differences -- use the same prefix!
+Para dos funciones con diferencias importantes -- ¡usa el mismo prefijo!
For instance, the function `printPage(page)` will use a printer. And the function `printText(text)` will put the text on-screen. Let an unfamiliar reader think well over similarly named function `printMessage`: "Where does it put the message? To a printer or on the screen?". To make it really shine, `printMessage(message)` should output it in the new window!
From d31b843b017f273358dada1520995ce8f639d805 Mon Sep 17 00:00:00 2001
From: Sjesc <49368329+Sjesc@users.noreply.github.com>
Date: Fri, 4 Oct 2019 19:12:55 -0400
Subject: [PATCH 02/17] terminar traduccion del articulo
---
1-js/03-code-quality/04-ninja-code/article.md | 137 +++++++++---------
1 file changed, 67 insertions(+), 70 deletions(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 8d4773a2f..6bcaf03b6 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -1,4 +1,4 @@
-# Ninja code
+# Código ninja
```quote author="Confucio"
@@ -7,14 +7,14 @@ Aprender sin pensar es inútil. Pensar sin aprender peligroso.
Los programadores ninjas del pasado usaron estos trucos para afilar la mente de los mantenedores de código.
-Los gurus de revisión de código los buscan en tareas de prueba.
+Los gurús de revisión de código los buscan en tareas de prueba.
Los desarrolladores novatos algunas veces los usan incluso mejor que los programadores ninjas.
-Leelos detenidamente y encuentra quien eres -- ¿un ninja?, ¿un novato?, o tal vez ¿un revisor de código?
+Léelos detenidamente y encuentra quién eres -- ¿un ninja?, ¿un novato?, o tal vez ¿un revisor de código?
```warn header="Ironía detectada"
-Muchos intentan seguir los caminos de los ninjas. Pocos tiene éxito.
+Muchos intentan seguir los caminos de los ninjas. Pocos tienen éxito.
```
@@ -24,16 +24,16 @@ Has el código lo más corto posible. Demuestra cuan inteligente eres.
Deja que las características sutiles del lenguaje te guíen.
-Por ejemplo, echa un vistazo a este operador ternario ``? '':
+Por ejemplo, echa un vistazo a este operador ternario `'?'`:
```js
// tomado de una librería de javascript muy conocida
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
```
-Fascinante, ¿cierto?. Si escribes de esa forma, un desarollador que se encuentre esta linea e intente entender cual es el valor de `i` la va a pasar muy mal. Por lo que tendra que venir a ti, buscando una respuesta.
+Fascinante, ¿cierto?. Si escribes de esa forma, un desarrollador que se encuentre esta línea e intente entender cuál es el valor de `i` la va a pasar muy mal. Por lo que tendrá que venir a ti, buscando una respuesta.
-Diles que mientras mas corto mucho mejor. Guialos a los caminos del ninja.
+Diles que mientras más corto mucho mejor. Guíalos a los caminos del ninja.
## Variables de una sola letra
@@ -46,13 +46,13 @@ Otra forma de programar más rápido es usando variables de una sola letra en to
Una variable corta desaparece en el código como lo hace un ninja en un bosque. Nadie será capaz de encontrarla usando "buscar" en el editor. E incluso si alguien lo hace, no será capaz de "descifrar" el significado de `a` o `b`.
-...Pero hay una excepción. Un verdadero ninja nunca usaría `i` como el contador en un bucle `"for"`. En cualquier otro lugar, pero no aquí. Mira alrededor, hay muchas mas letras exóticas. Por ejemplo, `x` o `y`.
+...Pero hay una excepción. Un verdadero ninja nunca usaría `i` como el contador en un bucle `"for"`. En cualquier otro lugar, pero no aquí. Mira alrededor, hay muchas más letras exóticas. Por ejemplo, `x` o `y`.
Una variable exótica como el contador de un bucle es especialmente genial si el cuerpo del bucle toma 1-2 páginas (hazlo más grande si puedes). Entonces si alguien mira en las profundidades del bucle, no será capaz de figurar rápidamente que la variable llamada `x` es el contador del bucle.
## Usa abreviaciones
-Si las reglas del equipo prohíbe el uso de nombres de una sola letra o nombres vagos -- acórtalos, has abreviaciones.
+Si las reglas del equipo prohíben el uso de nombres de una sola letra o nombres vagos -- acórtalos, has abreviaciones.
Como esto:
@@ -76,7 +76,7 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
- **El nombre ideal para una variable es `data`.** Usalo lo más que puedas. En efecto, toda variable sostiene *data*, ¿no?
- ...¿Pero que hacer si `data` ya esta siendo usado? Intenta con `value`, también es universal. Después de todo, una variable eventualmente obtiene un *value*(valor).
+ ...¿Pero qué hacer si `data` ya está siendo usado? Intenta con `value`, también es universal. Después de todo, una variable eventualmente obtiene un *value*(valor).
- **Nombra una variable por su tipo: `str`, `num`...**
@@ -92,17 +92,17 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
## Prueba de atención
-Solo un realmente atento programador deberia ser capaz de entender tu código. Pero, ¿cómo comprobarlo?
+Solo un realmente atento programador debería ser capaz de entender tu código. Pero, ¿cómo comprobarlo?
**Una de las maneras -- usa nombre de variables similares, como `date` y `data`.**
-Combinalos donde puedas.
+Combínalos donde puedas.
-Una lectura rapida de dicho código se hace imposible. Y cuando hay un error de tipografía.... Ummm...
+Una lectura rápida de dicho código se hace imposible. Y cuando hay un error de tipografía.... Ummm...
A quick read of such code becomes impossible. And when there's a typo... Ummm... Estamos atrapados por mucho tiempo, tiempo para tomar té.
-## Sinonimos inteligentes
+## Sinónimos inteligentes
```quote author="Confucius"
Es difícil encontrar un gato negro en una habitación oscura, sobre todo cuando no está.
@@ -110,77 +110,76 @@ Es difícil encontrar un gato negro en una habitación oscura, sobre todo cuando
Usando nombres *similar* para las mismas cosas hace tu vida mas interesante y le muestra al público tu creatividad.
-Por ejemplo, considera prefijos de funciones. Si una función muestra un mensaje en la pantalla -- comienzalo con `display...`(mostrar), como `displayMessage`(mostrarMensaje). Y entonces si otra función muestra en la pantalla otra cosa, como un nombre de usuario, comienzalo con `show...`(presentar) (como `showName`(presentarNombre)).
+Por ejemplo, considera prefijos de funciones. Si una función muestra un mensaje en la pantalla -- comiénzalo con `mostrar...`, como `mostarMensaje`. Y entonces si otra función muestra en la pantalla otra cosa, como un nombre de usuario, comiénzalo con `presentar...` (como `presentarNombre`).
-Insinua que hay una diferencia sútil entre dichas funciones, cuando no lo hay.
+Insinúa que hay una diferencia sutil entre dichas funciones, cuando no lo hay.
Has un pacto con tus compañeros ninjas del equipo: si John comienza funciones de "mostrar" con `presentar...` en su código, entonces Peter podría usar `exhibir..`, y Ann -- `pintar...`. Nota como el código es mucho más interesante y diverso ahora.
...¡Y ahora el truco del sombrero!
-Para dos funciones con diferencias importantes -- ¡usa el mismo prefijo!
+Para dos funciones con importantes diferencias -- ¡usa el mismo prefijo!
-For instance, the function `printPage(page)` will use a printer. And the function `printText(text)` will put the text on-screen. Let an unfamiliar reader think well over similarly named function `printMessage`: "Where does it put the message? To a printer or on the screen?". To make it really shine, `printMessage(message)` should output it in the new window!
+Por ejemplo, la función `imprimirPagina(pagina)` usara una impresora. Y la función `imprimirTexto(texto)` mostrará el texto en la pantalla.. Deja que un lector no familiar a tu código piense sobre una función llamada de forma similar `imprimirMensaje`: "¿Dónde coloca el mensaje? ¿A una impresora o en la pantalla?. Como guinda al pastel, ¡`imprimirMensaje(mensaje)` debería mostrar el mensaje en una nueva ventana!
-## Reuse names
+## Reúsa nombres
```quote author="Laozi (Tao Te Ching)"
-Once the whole is divided, the parts
-need names.
-There are already enough names.
-One must know when to stop.
+Una vez que el todo se divide, las partes
+necesitan nombres.
+Ya hay suficientes nombres.
+Uno debe saber cuándo parar.
```
-Add a new variable only when absolutely necessary.
+Añade una nueva variable solo cuando sea necesario.
-Instead, reuse existing names. Just write new values into them.
+En lugar, reúsa nombres que ya existen. Simplemente escribe nuevo valores en ellos.
-In a function try to use only variables passed as parameters.
+En una función intenta solo usar las variables pasadas como parámetro.
-That would make it really hard to identify what's exactly in the variable *now*. And also where it comes from. A person with weak intuition would have to analyze the code line-by-line and track the changes through every code branch.
+Eso hará que sea realmente difícil identificar qué es exactamente la variable *ahora*. Y además de donde viene. Una persona con intuición débil tendrá que analizar el código línea por línea y seguir los cambios en cada rama de código.
-**An advanced variant of the approach is to covertly (!) replace the value with something alike in the middle of a loop or a function.**
+**Una variante avanzada del enfoque es reemplazar los valores de forma encubierta con algo igual en la mitad de un bucle o una función.**
-For instance:
+Por ejemplo:
```js
function ninjaFunction(elem) {
- // 20 lines of code working with elem
+ // 20 líneas de código trabajando con elem
elem = clone(elem);
- // 20 more lines, now working with the clone of the elem!
+ // 20 líneas más, ¡ahora trabajando con el clon de elem!
}
```
-A fellow programmer who wants to work with `elem` in the second half of the function will be surprised... Only during the debugging, after examining the code they will find out that they're working with a clone!
+Un compañero de programación que quiera trabajar con `elem` en la segunda mitad de la función será sorprendido... Solo durante la depuración, después de examinar el código encontrara que está trabajando con un clon.
-Seen in code regularly. Deadly effective even against an experienced ninja.
+Visto regularmente en códigos. Letalmente efectivo, incluso contra ninjas experimentados.
-## Underscores for fun
+## Guiones bajos por diversión
-Put underscores `_` and `__` before variable names. Like `_name` or `__value`. It would be great if only you knew their meaning. Or, better, add them just for fun, without particular meaning at all. Or different meanings in different places.
+Coloca guiones bajos `_` y `__` antes de los nombres de las variables. Como `_name` o `__value`. Sería genial si solo tú sabes su significado. O, mejor, añádelos simplemente por diversión, sin ningún significado especial. O diferentes significados en diferentes lugares.
-You kill two rabbits with one shot. First, the code becomes longer and less readable, and the second, a fellow developer may spend a long time trying to figure out what the underscores mean.
+Matarás dos pájaros de un solo tiro. Primero, el código se hará más largo y menos legible, y segundo, un desarrollador colega podría gastar una gran cantidad de tiempo intentado entender el significado del guion bajo.
-A smart ninja puts underscores at one spot of code and evades them at other places. That makes the code even more fragile and increases the probability of future errors.
+Un ninja inteligente coloca los guiones bajos en un solo lugar del código y los evita en otros lugars. Eso hace que el código sea mucho más frágil y aumenta la probabilidad de errores futuros.
-## Show your love
+## Muestra tu amor
-Let everyone see how magnificent your entities are! Names like `superElement`, `megaFrame` and `niceItem` will definitely enlighten a reader.
+¡Deja que todos vean cuán magníficas son tus entidades! Nombres como `superElement`, `megaFrame` and `niceItem` iluminaran sin duda al lector.
-Indeed, from one hand, something is written: `super..`, `mega..`, `nice..` But from the other hand -- that brings no details. A reader may decide to look for a hidden meaning and meditate for an hour or two.
+En efecto, por una parte, algo es escrito: `super..`, `mega..`, `nice..`, pero por otra parte -- no trae ningún detalle. Un lector podría decidir mirar por un significado oculto y meditar por una hora o dos.
-
-## Overlap outer variables
+## Superpón variables externas
```quote author="Guan Yin Zi"
-When in the light, can't see anything in the darkness.
-When in the darkness, can see everything in the light.
+Cuando está a la luz, no puede ver nada en la oscuridad.
+Cuando está en la oscuridad, puede ver todo a la luz.
```
-Use same names for variables inside and outside a function. As simple. No efforts required.
+Usa los mismos nombres para variables dentro y fuera de una función. Así de simple. Sin esfuerzo.
```js
let *!*user*/!* = authenticateUser();
@@ -190,52 +189,50 @@ function render() {
...
...many lines...
...
- ... // <-- a programmer wants to work with user here and...
+ ... // <-- un programador quiere trabajar con user aquí y...
...
}
```
-A programmer who jumps inside the `render` will probably fail to notice that there's a local `user` shadowing the outer one.
-
-Then they'll try to work with `user` assuming that it's the external variable, the result of `authenticateUser()`... The trap is sprung! Hello, debugger...
-
+Un programador que se adentra en `render` probablemente no notara que hay un `user` local opacando al de afuera.
-## Side-effects everywhere!
+Entonces intentaran trabajar con `user` asumiendo que es la variable externa, el resultado de `authenticateUser()`...
+Then they'll try to work with `user` assuming that it's the external variable, the result of `authenticateUser()`... ¡Se activa la trampa! Hola, depurador...
-There are functions that look like they don't change anything. Like `isReady()`, `checkPermission()`, `findTags()`... They are assumed to carry out calculations, find and return the data, without changing anything outside of them. In other words, without "side-effects".
-**A really beautiful trick is to add a "useful" action to them, besides the main task.**
+## ¡Efectos secundarios en todas partes!
-An expression of dazed surprise on the face of your colleague when they see a function named `is..`, `check..` or `find...` changing something -- will definitely broaden your boundaries of reason.
+Hay muchas funciones que parecen que no cambian nada. Como `estaListo()`, `comprobarPermiso()`, `encontrarEtiquetas()`... Se asume que sacan los cálculos, encuentran y regresan los datos, sin cambiar nada fuera de ellos. En otras palabras, sin "efectos secundarios".
-**Another way to surprise is to return a non-standard result.**
+**Un truco realmente bello es añadirles una acción "útil", además de su tarea principal.**
-Show your original thinking! Let the call of `checkPermission` return not `true/false`, but a complex object with the results of the check.
+Una expresión de sorpresa aturdida aparecerá en la cara de tus colegas cuando vean que la función llamada `es..`, `comprobar..` o `encontrar...` cambia algo -- definitivamente ampliará tus límites de razón.
-Those developers who try to write `if (checkPermission(..))`, will wonder why it doesn't work. Tell them: "Read the docs!". And give this article.
+**Otra forma de sorprender es retornar un resultado no estándar**
+¡Muestra tu pensamiento original! Deja que la llamada de `comprobarPermiso` retorne no `true/false`, pero un objeto complejo con los resultados de tu comprobación.
-## Powerful functions!
+## Funciones poderosas!
```quote author="Laozi (Tao Te Ching)"
-The great Tao flows everywhere,
-both to the left and to the right.
+El gran Tao fluye por todas partes,
+tanto a la izquierda como a la derecha.
```
-Don't limit the function by what's written in its name. Be broader.
+No limites la función por lo que está escrito en el nombre. Se más abierto.
-For instance, a function `validateEmail(email)` could (besides checking the email for correctness) show an error message and ask to re-enter the email.
+Por ejemplo, una función `validarEmail(email)` podría (además de comprobar el email por exactitud) muestra un mensaje de error y preguntar de nuevo por el email.
-Additional actions should not be obvious from the function name. A true ninja coder will make them not obvious from the code as well.
+Acciones adicionales no deberían ser obvias por el nombre de la función. Un verdadero programador ninja no las hará obvias por el código tampoco.
-**Joining several actions into one protects your code from reuse.**
+**Uniendo muchas acciones en una proteje tu código de reusos.**
-Imagine, another developer wants only to check the email, and not output any message. Your function `validateEmail(email)` that does both will not suit them. So they won't break your meditation by asking anything about it.
+Imagina, otro desarrollador quiere solo comprobar el correo, y no mostrar ningún mensaje. Tu función `validarEmail(email)` que hace ambas no le será de utilidad. Así que no romperán tu meditación preguntando cualquier cosa sobre ello.
-## Summary
+## Resumen
-All "pieces of advice" above are from the real code... Sometimes, written by experienced developers. Maybe even more experienced than you are ;)
+Todos los *consejos* anteriores son de código real... Algunas veces, escrito por desarrolladores experimentados. Tal vez incluso mas experiencia que tu ;)
-- Follow some of them, and your code will become full of surprises.
-- Follow many of them, and your code will become truly yours, no one would want to change it.
-- Follow all, and your code will become a valuable lesson for young developers looking for enlightenment.
+- Sigue alguno de ellos, y tu código estará lleno de sorpresas.
+- Sigue muchos de ellos, y tu código será realmente tuyo, nadie quera cambiarlo.
+- Sigue todos, y tu código será una lección valiosa para desarrolladores jóvenes buscando iluminación.
From 55b0703fc9a43e99f3a4b9974fc3108ff3f5ffae Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:44:40 -0400
Subject: [PATCH 03/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 1413b8333..8b560914f 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -74,7 +74,7 @@ La gran imagen no tiene forma.
Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como `obj`, `data`, `value`, `item`, `elem`, etc.
-- **El nombre ideal para una variable es `data`.** Usalo lo más que puedas. En efecto, toda variable sostiene *data*, ¿no?
+- **El nombre ideal para una variable es `data`.** Usalo lo más que puedas. En efecto, toda variable contiene *data*, ¿no?
...¿Pero qué hacer si `data` ya está siendo usado? Intenta con `value`, también es universal. Después de todo, una variable eventualmente obtiene un *value*(valor).
From 8d66ef6ac2d1e352b9c6d8a1941b84bdbf9d1694 Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:44:51 -0400
Subject: [PATCH 04/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 8b560914f..8f8d218ca 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -76,7 +76,7 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
- **El nombre ideal para una variable es `data`.** Usalo lo más que puedas. En efecto, toda variable contiene *data*, ¿no?
- ...¿Pero qué hacer si `data` ya está siendo usado? Intenta con `value`, también es universal. Después de todo, una variable eventualmente obtiene un *value*(valor).
+ ...¿Pero qué hacer si `data` ya está siendo usado? Intenta con `value`, también es universal. Después de todo, una variable eventualmente recibe un *value* (valor).
- **Nombra una variable por su tipo: `str`, `num`...**
From 0bfb298405aaf46b7bc6103a2c4721986a68a2fa Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:45:03 -0400
Subject: [PATCH 05/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 8f8d218ca..0a59db84d 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -80,7 +80,7 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
- **Nombra una variable por su tipo: `str`, `num`...**
- Dales un intento. Un recién iniciado puede preguntarse -- ¿Son dichos nombres realmente útiles para un ninja? En efecto, ¡lo son!
+ Pruébalos. Un recién iniciado puede preguntarse -- ¿Son estos nombres realmente útiles para un ninja? En efecto, ¡lo son!
Claro, el nombre de la variable sigue significando algo. Dice que hay en el interior de la variable: una cadena de texto, un número o cualquier otra cosa. Pero cuando un forastero intenta entender el código, se verá sorprendido al ver que en realidad no hay información. Y finalmente fracasara en el intento de alterar tu código bien pensado.
From 4b859edb503395b0c82fc35dc8d3277d3098ac0c Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:45:13 -0400
Subject: [PATCH 06/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 0a59db84d..123ef3f35 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -82,7 +82,7 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
Pruébalos. Un recién iniciado puede preguntarse -- ¿Son estos nombres realmente útiles para un ninja? En efecto, ¡lo son!
- Claro, el nombre de la variable sigue significando algo. Dice que hay en el interior de la variable: una cadena de texto, un número o cualquier otra cosa. Pero cuando un forastero intenta entender el código, se verá sorprendido al ver que en realidad no hay información. Y finalmente fracasara en el intento de alterar tu código bien pensado.
+ Claro, el nombre de la variable sigue significando algo. Dice que hay en el interior de la variable: una cadena de texto, un número o cualquier otra cosa. Pero cuando una persona ajena intenta entender el código, se verá sorprendido al ver que en realidad no hay información. Y finalmente fracasara en el intento de alterar tu código bien pensado.
El valor del tipo es fácil de encontrar con una depuración. Pero, ¿cuál es el significado de la variable? ¿Qué cadena de texto o número guarda?
From 6403c9cf37b5b7d2be7dbfaf91d7cc7125599804 Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:45:36 -0400
Subject: [PATCH 07/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 123ef3f35..5ec7dd044 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -161,7 +161,7 @@ Visto regularmente en códigos. Letalmente efectivo, incluso contra ninjas exper
Coloca guiones bajos `_` y `__` antes de los nombres de las variables. Como `_name` o `__value`. Sería genial si solo tú sabes su significado. O, mejor, añádelos simplemente por diversión, sin ningún significado especial. O diferentes significados en diferentes lugares.
-Matarás dos pájaros de un solo tiro. Primero, el código se hará más largo y menos legible, y segundo, un desarrollador colega podría gastar una gran cantidad de tiempo intentado entender el significado del guion bajo.
+Matarás dos pájaros de un solo tiro. Primero, el código se hará más largo y menos legible, y segundo, un colega desarrollador podría gastar una gran cantidad de tiempo intentado entender el significado del guion bajo.
Un ninja inteligente coloca los guiones bajos en un solo lugar del código y los evita en otros lugars. Eso hace que el código sea mucho más frágil y aumenta la probabilidad de errores futuros.
From 131d030a4e81913462f628878df5db25dfe1be2d Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:45:50 -0400
Subject: [PATCH 08/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 5ec7dd044..20db466b9 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -231,7 +231,7 @@ Imagina, otro desarrollador quiere solo comprobar el correo, y no mostrar ningú
## Resumen
-Todos los *consejos* anteriores son de código real... Algunas veces, escrito por desarrolladores experimentados. Tal vez incluso mas experiencia que tu ;)
+Todos los *consejos* anteriores son de código real... Algunas veces, escrito por desarrolladores experimentados. Quizás incluso más experimentado que tú ;)
- Sigue alguno de ellos, y tu código estará lleno de sorpresas.
- Sigue muchos de ellos, y tu código será realmente tuyo, nadie quera cambiarlo.
From 82e2a7b6cfb1b93726868df24bd267ba06c412b9 Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:46:13 -0400
Subject: [PATCH 09/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 20db466b9..d5452ce4d 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -84,7 +84,7 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
Claro, el nombre de la variable sigue significando algo. Dice que hay en el interior de la variable: una cadena de texto, un número o cualquier otra cosa. Pero cuando una persona ajena intenta entender el código, se verá sorprendido al ver que en realidad no hay información. Y finalmente fracasara en el intento de alterar tu código bien pensado.
- El valor del tipo es fácil de encontrar con una depuración. Pero, ¿cuál es el significado de la variable? ¿Qué cadena de texto o número guarda?
+ El tipo de valor es fácil de encontrar con una depuración. Pero, ¿cuál es el significado de la variable? ¿Qué cadena de texto o número guarda?
¡No hay forma de saberlo sin una buena meditación!
From 4ab0735181f155ce6408f937a908051b0f4e31ea Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:46:50 -0400
Subject: [PATCH 10/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index d5452ce4d..5906b3a25 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -88,7 +88,7 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
¡No hay forma de saberlo sin una buena meditación!
-- **...Pero, ¿Y si ya no hay dichos nombres?** Simplemente añade un número: `data1, item2, elem5`...
+- **...Pero, ¿Y si ya no hay más de tales nombres?** Simplemente añade un número: `data1, item2, elem5`...
## Prueba de atención
From 7e4afd438d58b24d23415562e9ee0695b10b8f44 Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:47:07 -0400
Subject: [PATCH 11/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 5906b3a25..0e243431a 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -92,7 +92,8 @@ Cuando estés escogiendo un nombre intenta usar la palabra más abstracta. Como
## Prueba de atención
-Solo un realmente atento programador debería ser capaz de entender tu código. Pero, ¿cómo comprobarlo?
+Solo un programador realmente atento debería ser capaz de entender tu código. Pero, ¿cómo comprobarlo?
+``
**Una de las maneras -- usa nombre de variables similares, como `date` y `data`.**
From 4a958df128e0d26fcef031de986ae715bfa91466 Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:47:26 -0400
Subject: [PATCH 12/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 0e243431a..7238962de 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -198,7 +198,6 @@ function render() {
Un programador que se adentra en `render` probablemente no notara que hay un `user` local opacando al de afuera.
Entonces intentaran trabajar con `user` asumiendo que es la variable externa, el resultado de `authenticateUser()`...
-Then they'll try to work with `user` assuming that it's the external variable, the result of `authenticateUser()`... ¡Se activa la trampa! Hola, depurador...
## ¡Efectos secundarios en todas partes!
From 82938572d15c4285f5551a5752a2f3659c590397 Mon Sep 17 00:00:00 2001
From: Valentina VP <34555644+vplentinax@users.noreply.github.com>
Date: Sat, 6 Jun 2020 00:47:39 -0400
Subject: [PATCH 13/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 7238962de..84e345c3e 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -197,7 +197,7 @@ function render() {
Un programador que se adentra en `render` probablemente no notara que hay un `user` local opacando al de afuera.
-Entonces intentaran trabajar con `user` asumiendo que es la variable externa, el resultado de `authenticateUser()`...
+Entonces intentaran trabajar con `user` asumiendo que es la variable externa, el resultado de `authenticateUser()`... ¡Se activa la trampa! Hola, depurador...
## ¡Efectos secundarios en todas partes!
From 6eea6356376fca6a19c42bb594fdd43f4751387d Mon Sep 17 00:00:00 2001
From: joaquinelio
Date: Sun, 7 Jun 2020 01:45:17 -0300
Subject: [PATCH 14/17] Update 1-js/03-code-quality/04-ninja-code/article.md
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 84e345c3e..cd2f1a1e4 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -99,7 +99,7 @@ Solo un programador realmente atento debería ser capaz de entender tu código.
Combínalos donde puedas.
-Una lectura rápida de dicho código se hace imposible. Y cuando hay un error de tipografía.... Ummm...
+Una lectura rápida de dicho código se hace imposible. Y cuando hay un error de tipografía.... Ummm... Estamos atrapados por mucho tiempo, hora de tomar té.
A quick read of such code becomes impossible. And when there's a typo... Ummm... Estamos atrapados por mucho tiempo, tiempo para tomar té.
From 071d440fe47c199e98266d550e83f5e00d66310e Mon Sep 17 00:00:00 2001
From: joaquinelio
Date: Sun, 7 Jun 2020 02:12:24 -0300
Subject: [PATCH 15/17] Apply suggestions from code review
11 sugerencias ok
Co-authored-by: Ezequiel Castellanos <51804994+ezzep66@users.noreply.github.com>
---
1-js/03-code-quality/04-ninja-code/article.md | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index cd2f1a1e4..f99fe0f05 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -20,7 +20,7 @@ Muchos intentan seguir los caminos de los ninjas. Pocos tienen éxito.
## La brevedad es el alma del ingenio
-Has el código lo más corto posible. Demuestra cuan inteligente eres.
+Haz el código lo más corto posible. Demuestra cuán inteligente eres.
Deja que las características sutiles del lenguaje te guíen.
@@ -52,7 +52,7 @@ Una variable exótica como el contador de un bucle es especialmente genial si el
## Usa abreviaciones
-Si las reglas del equipo prohíben el uso de nombres de una sola letra o nombres vagos -- acórtalos, has abreviaciones.
+Si las reglas del equipo prohíben el uso de nombres de una sola letra o nombres vagos -- acórtalos, haz abreviaciones.
Como esto:
@@ -63,7 +63,7 @@ Como esto:
Solo aquel con buena intuición será capaz de entender dichos nombres. Intenta acortar todo. Solo una persona digna debería ser capaz de sostener el desarrollo de tu código.
-## Vuela alto. Se abstracto
+## Vuela alto. Sé abstracto
```quote author="Laozi (Tao Te Ching)"
El gran cuadrado no tiene esquina
@@ -109,7 +109,7 @@ A quick read of such code becomes impossible. And when there's a typo... Ummm...
Es difícil encontrar un gato negro en una habitación oscura, sobre todo cuando no está.
```
-Usando nombres *similar* para las mismas cosas hace tu vida mas interesante y le muestra al público tu creatividad.
+Usando nombres *similares* para las mismas cosas hace tu vida mas interesante y le muestra al público tu creatividad.
Por ejemplo, considera prefijos de funciones. Si una función muestra un mensaje en la pantalla -- comiénzalo con `mostrar...`, como `mostarMensaje`. Y entonces si otra función muestra en la pantalla otra cosa, como un nombre de usuario, comiénzalo con `presentar...` (como `presentarNombre`).
@@ -121,9 +121,9 @@ Has un pacto con tus compañeros ninjas del equipo: si John comienza funciones d
Para dos funciones con importantes diferencias -- ¡usa el mismo prefijo!
-Por ejemplo, la función `imprimirPagina(pagina)` usara una impresora. Y la función `imprimirTexto(texto)` mostrará el texto en la pantalla.. Deja que un lector no familiar a tu código piense sobre una función llamada de forma similar `imprimirMensaje`: "¿Dónde coloca el mensaje? ¿A una impresora o en la pantalla?. Como guinda al pastel, ¡`imprimirMensaje(mensaje)` debería mostrar el mensaje en una nueva ventana!
+Por ejemplo, la función `imprimirPágina(página)` usara una impresora. Y la función `imprimirTexto(texto)` mostrará el texto en la pantalla.. Deja que un lector no familiar a tu código piense bien sobre una función llamada de forma similar `imprimirMensaje`: "¿Dónde coloca el mensaje? ¿A una impresora o en la pantalla?. Para que realmente se destaque, ¡`imprimirMensaje(mensaje)` debería mostrar el mensaje en una nueva ventana!
-## Reúsa nombres
+## Reutilizar nombres
```quote author="Laozi (Tao Te Ching)"
Una vez que el todo se divide, las partes
@@ -132,15 +132,15 @@ Ya hay suficientes nombres.
Uno debe saber cuándo parar.
```
-Añade una nueva variable solo cuando sea necesario.
+Añade una nueva variable sólo cuando sea necesario.
-En lugar, reúsa nombres que ya existen. Simplemente escribe nuevo valores en ellos.
+En lugar, reutiliza nombres que ya existen. Simplemente escribe nuevo valores en ellos.
-En una función intenta solo usar las variables pasadas como parámetro.
+En una función intenta sólo usar las variables pasadas como parámetros.
Eso hará que sea realmente difícil identificar qué es exactamente la variable *ahora*. Y además de donde viene. El propósito es desarrollar la intuición y memoria de la persona que lee el código. Una persona con intuición débil tendrá que analizar el código línea por línea y seguir los cambios en cada rama de código.
-**Una variante avanzada del enfoque es reemplazar los valores de forma encubierta con algo igual en la mitad de un bucle o una función.**
+**Una variante avanzada del enfoque es reemplazar los valores de forma encubierta con algo parecido en la mitad de un bucle o una función.**
Por ejemplo:
@@ -210,7 +210,7 @@ Una expresión de sorpresa aturdida aparecerá en la cara de tus colegas cuando
**Otra forma de sorprender es retornar un resultado no estándar**
-¡Muestra tu pensamiento original! Deja que la llamada de `comprobarPermiso` retorne no `true/false`, pero un objeto complejo con los resultados de tu comprobación.
+¡Muestra tu pensamiento original! Deja que la llamada de `comprobarPermiso` retorne no `true/false` sino un objeto complejo con los resultados de tu comprobación.
## Funciones poderosas!
From d80ddf05b23fd4f29e760bfac033cc57f9b98feb Mon Sep 17 00:00:00 2001
From: joaquinelio
Date: Sun, 7 Jun 2020 02:17:42 -0300
Subject: [PATCH 16/17] Update article.md
---
1-js/03-code-quality/04-ninja-code/article.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index f99fe0f05..6a39c8b23 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -100,7 +100,6 @@ Solo un programador realmente atento debería ser capaz de entender tu código.
Combínalos donde puedas.
Una lectura rápida de dicho código se hace imposible. Y cuando hay un error de tipografía.... Ummm... Estamos atrapados por mucho tiempo, hora de tomar té.
-A quick read of such code becomes impossible. And when there's a typo... Ummm... Estamos atrapados por mucho tiempo, tiempo para tomar té.
## Sinónimos inteligentes
From bef085b4d23c4bb20aab2c4cc14765d7585e9f29 Mon Sep 17 00:00:00 2001
From: joaquinelio
Date: Sun, 7 Jun 2020 02:19:02 -0300
Subject: [PATCH 17/17] Update article.md
---
1-js/03-code-quality/04-ninja-code/article.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md
index 6a39c8b23..6459dd6d4 100644
--- a/1-js/03-code-quality/04-ninja-code/article.md
+++ b/1-js/03-code-quality/04-ninja-code/article.md
@@ -233,5 +233,5 @@ Imagina, otro desarrollador quiere solo comprobar el correo, y no mostrar ningú
Todos los *consejos* anteriores son de código real... Algunas veces, escrito por desarrolladores experimentados. Quizás incluso más experimentado que tú ;)
- Sigue alguno de ellos, y tu código estará lleno de sorpresas.
-- Sigue muchos de ellos, y tu código será realmente tuyo, nadie quera cambiarlo.
+- Sigue muchos de ellos, y tu código será realmente tuyo, nadie querrá cambiarlo.
- Sigue todos, y tu código será una lección valiosa para desarrolladores jóvenes buscando iluminación.