Skip to content

Commit abb5ad5

Browse files
corregido
1 parent c975ddd commit abb5ad5

File tree

1 file changed

+96
-68
lines changed

1 file changed

+96
-68
lines changed

1-js/03-code-quality/02-coding-style/article.md

Lines changed: 96 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Estilo de codificacion
1+
# Estilo de codificación
22

3-
Nuestro codigo debe ser lo mas limpio y facil de leer como sea posible
3+
Nuestro código debe ser lo más limpio y fácil de leer como sea posible.
44

5-
Eso es actualmente el arte de programar -- tomar una tarea compleja y codificarla de una manera que sea correcta y legible por otros.
5+
Ese es en realidad el arte de la programación: tomar una tarea compleja y codificarla de manera correcta y legible para los humanos. Un buen estilo de código ayuda mucho en eso.
66

77
## Sintaxis
88

9-
Aqui hay un cheatsheet con algunas reglas sugeridas(ver abajo para mas detalles):
9+
Aqui hay un cheatsheet con algunas reglas sugeridas (ver abajo para más detalles):
1010

1111
![](code-style.svg)
1212
<!--
@@ -34,14 +34,16 @@ if (n < 0) {
3434
3535
-->
3636

37-
Ahora vamos a discutir las reglas y razones de ellos en detalle.
38-
```warn header="Irony Detected"
37+
Ahora discutamos en detalle las reglas y las razones para ellas.
38+
39+
```warn header="No existen reglas \"usted debe\""
3940
Nada está escrito en piedra aqui. Estos son preferencias de estilos, no dogmas religiosos.
4041
```
4142

4243
### Llaves
4344

4445
En la mayoria de proyectos de Javascript las llaves estan escritas en estilo "Egipcio" con la llave de apertura en la misma linea como la correspondiente palabra clave -- no en una nueva linea. Debe haber tambien un espacio despues de la llave de apertura, como esto:
46+
4547
```js
4648
if (condition) {
4749
// hacer esto
@@ -50,45 +52,71 @@ if (condition) {
5052
}
5153
```
5254

53-
En una construccion de una sola linea es un caso extremo importante. ¿Debemos usar llaves? Si si, entonces ¿donde?
55+
Una construcción de una sola línea, como `if (condition) doSomething()`, es un caso límite importante. ¿Deberíamos usar llaves?
5456

5557
Aqui estan las variantes anotadas para que puedas juzgar la legibilidad por ti mismo.
56-
<!--
57-
```js no-beautify
58-
if (n < 0) {alert(`Power ${n} is not supported`);}
5958

60-
if (n < 0) alert(`Power ${n} is not supported`);
59+
1. 😠 Los principiantes a veces hacen eso. ¡Malo! Las llaves no son necesarias:
60+
```js
61+
if (n < 0) *!*{*/!*alert(`Power ${n} is not supported`);*!*}*/!*
62+
```
63+
2. 😠 Dividir en una línea separada sin llaves. Nunca haga eso, es fácil cometer un error al agregar nuevas líneas:
64+
```js
65+
if (n < 0)
66+
alert(`Power ${n} is not supported`);
67+
```
68+
3. 😏 Una línea sin llaves: aceptable, si es corta:
69+
```js
70+
if (n < 0) alert(`Power ${n} is not supported`);
71+
```
72+
4. 😃 La mejor variante:
73+
```js
74+
if (n < 0) {
75+
alert(`Power ${n} is not supported`);
76+
}
77+
```
6178
62-
if (n < 0)
63-
alert(`Power ${n} is not supported`);
79+
Para un código muy breve, se permite una línea, p. `if (cond) return null`. Pero un bloque de código (la última variante) suele ser más legible.
6480
65-
if (n < 0) {
66-
alert(`Power ${n} is not supported`);
67-
}
81+
### Tamaño de línea
82+
83+
A nadie le gusta leer una larga línea horizontal de código. Es una buena práctica dividirlos.
84+
85+
Por ejemplo:
86+
```js
87+
// acento grave ` permite dividir la cadena de caracteres en múltiples líneas
88+
let str = `
89+
ECMA International's TC39 is a group of JavaScript developers,
90+
implementers, academics, and more, collaborating with the community
91+
to maintain and evolve the definition of JavaScript.
92+
`;
6893
```
69-
-->
70-
![](figure-bracket-style.png)
7194
72-
En resumen:
73-
- Para codigo muy corto, una linea es aceptable. Por ejemplo: `if (cond) return null`
74-
- Pero en una linea separada por cada sentencia en llaves es usualmente mas facil de leer.
95+
Y para sentencias `if`:
7596
76-
### Tamaño de linea
97+
```js
98+
if (
99+
id === 123 &&
100+
moonPhase === 'Waning Gibbous' &&
101+
zodiacSign === 'Libra'
102+
) {
103+
letTheSorceryBegin();
104+
}
105+
```
77106
78-
Nadie le gusta leer una linea horizontal larga de codigo. Es una mejor practica dividirlas y limitar el tamaño de tus lineas.
107+
La longitud máxima de la línea debe acordarse a nivel de equipo. Suele tener 80 o 120 caracteres.
79108
80-
El maximo tamaño de linea deberia ser acordado en el livel de equipo. Es usualmente 80 o 120 caracteres.
81109
### Identaciones
82110
83111
Hay dos tipo de identaciones:
84112
85113
- **Identacion horizontal: 2 o 4 espacios.**
86114
87-
Una identacion horizontal es hecha usando 2 o 4 espacios o el simbolo "Tab". ¿Cual elegir? es una vieja guerra santa. Espacios son mas comunes en estos dias.
115+
Se realiza una sangría horizontal utilizando 2 o 4 espacios o el símbolo de tabulación horizontal (key `key:Tabulador`). Cuál elegir es una vieja guerra santa. Los espacios son más comunes hoy en día.
88116
89-
Una ventaja de los espacios sobre las tabulaciones es que los espacios permiten mas configuraciones flexibles de identaciones en lugar del simbolo "Tab".
117+
Una ventaja de los espacios sobre las tabulaciones es que los espacios permiten configuraciones de sangría más flexibles que el símbolo del tabulador.
90118
91-
Por instancia, nosotros podemos alinear los argumentos con la llave de apertura, como esto:
119+
Por ejemplo, podemos alinear los argumentos con el paréntesis de apertura, así:
92120
93121
```js no-beautify
94122
show(parameters,
@@ -101,9 +129,9 @@ Hay dos tipo de identaciones:
101129
}
102130
```
103131
104-
- **Identacion vertical: lineas vacias para dividir codigo en bloques logicos.**
132+
- **Identación vertical: líneas vacias para dividir código en bloques lógicos.**
105133
106-
Aun una simple funcion puede a menudo ser dividida en bloques logicos. En el ejemplo abajo, la inicializacion de variables, el bucle principal y el retorno del resultado son divididos verticalmente:
134+
Incluso una sola función a menudo se puede dividir en bloques lógicos. En el siguiente ejemplo, la inicialización de variables, el bucle principal y la devolución del resultado se dividen verticalmente:
107135
108136
```js
109137
function pow(x, n) {
@@ -117,19 +145,19 @@ Hay dos tipo de identaciones:
117145
}
118146
```
119147
120-
Insertar una nueva linea extra donde ayude a hacer el codigo mas legible. No debe de haber mas de nueve lineas de codigo sin una identacion vertical.
148+
Insertar una nueva línea extra donde ayude a hacer el código mas legible. No debe de haber más de nueve líneas de código sin una identación vertical.
121149
122150
### Punto y coma
123151
124-
Un punto y coma debe estar presente despues de cada sentencia, aun si podria posiblemente ser omitido.
152+
Debe haber un punto y coma después de cada declaración, incluso si se puede omitir.
125153
126-
Hay lenguajes donde un punto y coma es verdaderamente opcional y es raramente usado. En Javascript, hay casos donde un salto de linea no es interpretado como un punto y coma, dejando el codigo vulnerable a errores.
154+
Hay idiomas en los que un punto y coma es realmente opcional y rara vez se usa. Sin embargo, en JavaScript, hay casos en los que un salto de línea no se interpreta como un punto y coma, lo que deja el código vulnerable a errores. Vea más sobre eso en el capítulo <info:structure#semicolon>.
127155
128-
A medida tu te conviertas en un programador mas maduro, podrias escoger un estilo no-semicolon como [StandardJS](https://standardjs.com/). Hasta entonces, es mejor usar puntos y comas para evitar posibles dificultades.
156+
Si eres un programador de JavaScript experimentado, puedes elegir un estilo de código sin punto y coma como [StandardJS](https://standardjs.com/). De lo contrario, es mejor usar punto y coma para evitar posibles escollos. La mayoría de los desarrolladores ponen punto y coma.
129157
130158
### Niveles anidados
131159
132-
Intenta evitar anidar el codigo en demasiados niveles de profuncidad.
160+
Intenta evitar anidar el código en demasiados niveles de profundidad.
133161
134162
Algunas veces es buena idea usar la directiva ["continue"](info:while-for#continue) en un bucle para evitar anidamiento extra.
135163
@@ -138,7 +166,7 @@ Por ejemplo, en lugar de añadir un `if` anidado como este:
138166
```js
139167
for (let i = 0; i < 10; i++) {
140168
if (cond) {
141-
... // <- un nivel mas de anidamiento
169+
... // <- un nivel más de anidamiento
142170
}
143171
}
144172
```
@@ -152,11 +180,11 @@ for (let i = 0; i < 10; i++) {
152180
}
153181
```
154182
155-
Una similar cosa puede ser hecho con `if/else` y `return`.
183+
Algo similar se puede hacer con `if/else` y `return`.
156184
157-
Por ejemplo, dos construcciones abajo son identicas.
185+
Por ejemplo, las dos construcciones siguientes son idénticas.
158186
159-
Opcion 1:
187+
Opción 1:
160188
161189
```js
162190
function pow(x, n) {
@@ -174,7 +202,7 @@ function pow(x, n) {
174202
}
175203
```
176204
177-
Opcion 2:
205+
Opción 2:
178206
179207
```js
180208
function pow(x, n) {
@@ -193,16 +221,16 @@ function pow(x, n) {
193221
}
194222
```
195223
196-
El segundo es mas legible porque el "caso extremo" de `n < 0` se maneja desde el principio. Una vez el chequeo es terminado nosotros nos podemos mover a el codigo "main" el codigo fluye sin necesidad de anidamientos adicionales.
224+
El segundo es más legible porque el "caso especial" de `n < 0` se maneja desde el principio. Una vez que se realiza la verificación, podemos pasar al flujo de código "principal" sin la necesidad de anidamiento adicional.
197225
198-
## Colocacion de funciones
226+
## Colocación de funciones
199227
200-
Si estas escribiendo varias funciones "auxiliares" y el codigo que las usan, hay tres maneras de organizar funciones.
228+
Si está escribiendo varias funciones "auxiliares" y el código que las usa, hay tres formas de organizar las funciones.
201229
202-
1. Funciones declaradas sobre el codigo que las usan:
230+
1. Declare las funciones *anteriores* al código que las usa:
203231
204232
```js
205-
// *!*declaracion de funciones*/!*
233+
// *!*declaración de funciones*/!*
206234
function createElement() {
207235
...
208236
}
@@ -215,15 +243,15 @@ Si estas escribiendo varias funciones "auxiliares" y el codigo que las usan, hay
215243
...
216244
}
217245

218-
// *!*el codigo que las usan*/!*
246+
// *!*el código que las usan*/!*
219247
let elem = createElement();
220248
setHandler(elem);
221249
walkAround();
222250
```
223-
2. Codigo primero, despues funciones
251+
2. Código primero, después funciones
224252
225253
```js
226-
// *!*El codigo que usa a las funciones*/!*
254+
// *!*El código que usa a las funciones*/!*
227255
let elem = createElement();
228256
setHandler(elem);
229257
walkAround();
@@ -241,19 +269,19 @@ Si estas escribiendo varias funciones "auxiliares" y el codigo que las usan, hay
241269
...
242270
}
243271
```
244-
3. Mixto: una funcion es declarada donde se usa por primera vez.
272+
3. Mixto: una función es declarada donde se usa por primera vez.
245273
246274
La mayoria del tiempo, la segunda variante es preferida.
247275
248-
Eso es por que cuando leemos codigo, nosotros primero queremos saber *Que hace*. Si el codigo va primero, entonces provee esa informacion. entonces, quizas nosotros no necesitaremos leer las funciones, especialmente si sus nombres son descriptivos de lo que realmente hacen.
276+
Eso es porque al leer el código, primero queremos saber *qué hace*. Si el código va primero, entonces queda claro desde el principio. Entonces, tal vez no necesitemos leer las funciones, especialmente si sus nombres son descriptivos de lo que realmente hacen.
249277
250-
## Guias de estilo
278+
## Guías de estilo
251279
252-
Una guia de estilo contine reglas generales acerca de "Como escribir codigo", por ejemplo. Que comillas usar, cuantos espacios de identacion, donde poner los saltos de linea, etc. Muchas cosas pequeñas.
280+
Una guía de estilo contiene reglas generales sobre "cómo escribir" el código, cúales comillas usar, cuántos espacios para endentar, la longitud máxima de la línea, etc. Muchas cosas menores.
253281
254-
Cuando todos los mienbros de un equipo usan la misma guia de estilos, el codigo se ve uniforme, sin importar de cual mienbro del equipo lo escriba.
282+
Cuando todos los miembros de un equipo usan la misma guía de estilo, el código se ve uniforme, independientemente de qué miembro del equipo lo haya escrito.
255283
256-
Por supuesto, un equipo puede siempre escribir su propia guia de estilos. Aunque la mayoria del tiempo, no es necesario. Hay varios otros existentes probados y verdaderas opciones para escoger, asi adoptando una de estas es usualmente tu mejor opcion.
284+
Por supuesto, un equipo siempre puede escribir su propia guía de estilo, pero generalmente no es necesario. Hay muchas guías existentes para elegir.
257285
258286
Algunas opciones populares:
259287
@@ -263,32 +291,32 @@ Algunas opciones populares:
263291
- [StandardJS](https://standardjs.com/)
264292
- (y mucho mas)
265293
266-
Si tu eres un desarrollador novato, empieza con la cheatsheet al inicio de este capitulo. Una vez tu hayas dominado eso, puedes explorar otras guias de estilos para coger principios comunes y decidir cual te gusta mas.
294+
Si eres un desarrollador novato, puedes comenzar con la cheet sheet al comienzo de este capítulo. Luego, puedes buscar otras guías de estilo para recoger más ideas y decidir cuál te gusta más.
267295
268296
## Linters automatizados
269297
270-
Linters son herramientas que pueden automaticamente verificar el estilo de tu codigo y hacer sugerencias y refactorizacion.
298+
Linters son herramientas que pueden verificar automáticamente el estilo de su código y hacer sugerencias de mejora.
271299
272-
Lo grandioso de ellos es que la comprobacion de estilo tambien puede encontrar algunos bugs, como errores gramaticales en variables o nombres de funciones. Debido a estas caracteristicas, Instalar un linter es comendado aun si tu no quieres apegarte a un "estilo de codigo" en particular.
300+
Lo mejor de ellos es que la comprobación de estilo también puede encontrar algunos errores, como errores tipográficos en nombres de variables o funciones. Debido a esta característica, se recomienda usar un linter incluso si no desea apegarse a un "estilo de código" en particular.
273301
274-
Estas son las herramientas de linting mas conocidas:
302+
Aquí hay algunas herramientas de linting conocidas:
275303
276304
- [JSLint](http://www.jslint.com/) -- uno de los primeros linters.
277305
- [JSHint](http://www.jshint.com/) -- mas ajustes que JSLint.
278306
- [ESLint](http://eslint.org/) -- probablemente el mas reciente.
279307
280-
Todos ellos pueden hacer el trabajo. El author usa [ESLint](http://eslint.org/).
308+
Todos ellos pueden hacer el trabajo. El autor usa [ESLint](http://eslint.org/).
281309
282-
Muchos linters son integrados con varios editores populares: solo habilite el plugin en el editor y configure el estilo.
310+
La mayoría de las linters están integradas con muchos editores populares: solo habilite el complemento en el editor y configure el estilo.
283311
284-
Por ejemplo, para ESLint tu puedes hacer lo siguiente:
312+
Por ejemplo, para ESLint debe hacer lo siguiente:
285313
286314
1. Instala [Node.JS](https://nodejs.org/).
287315
2. Instala ESLint con el comando `npm install -g eslint` (npm es un instalador de paquetes de Javascript).
288-
3. Crea un archivo de configuracion llamado `.eslintrc` en la raiz de tu proyecto de javascript (en el folder que contiene todos tus archivos).
316+
3. Crea un archivo de configuracion llamado `.eslintrc` en la raiz de tu proyecto de javascript (en la carpeta que contiene todos tus archivos).
289317
4. Instala/Habilita el plugin para que tu editor se integre con ESLint. La mayoria de editores tienen uno.
290318
291-
Aqui un ejemplo de un archivo `.eslintrc`:
319+
Aquí un ejemplo de un archivo `.eslintrc`:
292320
293321
```js
294322
{
@@ -305,16 +333,16 @@ Aqui un ejemplo de un archivo `.eslintrc`:
305333
}
306334
```
307335
308-
Aqui la directiva `"extends"` denota que la confifuracion es basada en el conjunto de ajustes "eslint:recommended". Despues de eso, especificamos el nuestro.
336+
Aquí la directiva `"extends"` denota que la configuración se basa en el conjunto de configuraciones "eslint: recomendado". Después de eso, especificamos el nuestro.
309337
310-
Es tambien posible descargar el conjunto de reglas de la web y extenderlos en su lugar. Ver <http://eslint.org/docs/user-guide/getting-started> para mas detalles de su instalacion.
338+
También es posible descargar conjuntos de reglas de estilo de la web y extenderlos en su lugar. Consulte <http://eslint.org/docs/user-guide/getting-started> para obtener más detalles sobre la instalación.
311339
312-
Tambien ciertos IDEs tiene linting incorporado, lo cual es conveniente pero no como un ESLint personalizable.
340+
También algunos IDE tienen linting incorporado, lo cual es conveniente pero no tan personalizable como ESLint.
313341
314342
## Resumen
315343
316-
Todas las reglas de sintaxis descritas en este capitulo (y en las guias de estilos referenciados) tienen como objetivo incrementar la legibilidad de tu codigo, pero todos ellos son debatibles.
344+
Todas las reglas de sintaxis descritas en este capítulo (y en las guías de estilo mencionadas) tienen como objetivo aumentar la legibilidad de su código. Todos ellos son discutibles.
317345
318-
Cuando nosotros pensamos acerca de escribir "mejor" codigo, las sugerencias que nosotros debemos preguntar son, "¿Que hace que el codigo sea mas legible y facil de entender?" y "¿Que puede ayudarnos a evitar errores?" Estos son las principales cosas a tener en cuenta cuando escogemos y debatimos estilos de codigo.
346+
Cuando pensamos en escribir un código "mejor", las preguntas que debemos hacernos son: "¿Qué hace que el código sea más legible y fácil de entender?" y "¿Qué puede ayudarnos a evitar errores?" Estas son las principales cosas a tener en cuenta al elegir y debatir estilos de código.
319347
320-
Leer guias de estilos populares te permitiran mantenerte al dia con las ultimas ideas acerca de tendencias estilos de codigo y mejores practicas.
348+
La lectura de guías de estilo populares le permitirá mantenerse al día con las últimas ideas sobre las tendencias de estilo de código y las mejores prácticas.

0 commit comments

Comments
 (0)