You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/02-coding-style/article.md
+96-68Lines changed: 96 additions & 68 deletions
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,12 @@
1
-
# Estilo de codificacion
1
+
# Estilo de codificación
2
2
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.
4
4
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.
6
6
7
7
## Sintaxis
8
8
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):
10
10
11
11

12
12
<!--
@@ -34,14 +34,16 @@ if (n < 0) {
34
34
35
35
-->
36
36
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\""
39
40
Nada está escrito en piedra aqui. Estos son preferencias de estilos, no dogmas religiosos.
40
41
```
41
42
42
43
### Llaves
43
44
44
45
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
+
45
47
```js
46
48
if (condition) {
47
49
// hacer esto
@@ -50,45 +52,71 @@ if (condition) {
50
52
}
51
53
```
52
54
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?
54
56
55
57
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`);}
59
58
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
+
```
61
78
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) returnnull`. Pero un bloque de código (la última variante) suele ser más legible.
64
80
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
+
`;
68
93
```
69
-
-->
70
-

71
94
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`:
75
96
76
-
### Tamaño de linea
97
+
```js
98
+
if (
99
+
id ===123&&
100
+
moonPhase ==='Waning Gibbous'&&
101
+
zodiacSign ==='Libra'
102
+
) {
103
+
letTheSorceryBegin();
104
+
}
105
+
```
77
106
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.
79
108
80
-
El maximo tamaño de linea deberia ser acordado en el livel de equipo. Es usualmente 80 o 120 caracteres.
81
109
### Identaciones
82
110
83
111
Hay dos tipo de identaciones:
84
112
85
113
- **Identacion horizontal: 2 o 4 espacios.**
86
114
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.
88
116
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.
90
118
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í:
92
120
93
121
```js no-beautify
94
122
show(parameters,
@@ -101,9 +129,9 @@ Hay dos tipo de identaciones:
101
129
}
102
130
```
103
131
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.**
105
133
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:
107
135
108
136
```js
109
137
functionpow(x, n) {
@@ -117,19 +145,19 @@ Hay dos tipo de identaciones:
117
145
}
118
146
```
119
147
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.
121
149
122
150
### Punto y coma
123
151
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.
125
153
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>.
127
155
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.
129
157
130
158
### Niveles anidados
131
159
132
-
Intenta evitar anidar el codigo en demasiados niveles de profuncidad.
160
+
Intenta evitar anidar el código en demasiados niveles de profundidad.
133
161
134
162
Algunas veces es buena idea usar la directiva ["continue"](info:while-for#continue) en un bucle para evitar anidamiento extra.
135
163
@@ -138,7 +166,7 @@ Por ejemplo, en lugar de añadir un `if` anidado como este:
138
166
```js
139
167
for (let i =0; i <10; i++) {
140
168
if (cond) {
141
-
... // <- un nivel mas de anidamiento
169
+
...// <- un nivel más de anidamiento
142
170
}
143
171
}
144
172
```
@@ -152,11 +180,11 @@ for (let i = 0; i < 10; i++) {
152
180
}
153
181
```
154
182
155
-
Una similar cosa puede ser hecho con `if/else` y `return`.
183
+
Algo similar se puede hacer con `if/else` y `return`.
156
184
157
-
Por ejemplo, dos construcciones abajo son identicas.
185
+
Por ejemplo, las dos construcciones siguientes son idénticas.
158
186
159
-
Opcion1:
187
+
Opción 1:
160
188
161
189
```js
162
190
functionpow(x, n) {
@@ -174,7 +202,7 @@ function pow(x, n) {
174
202
}
175
203
```
176
204
177
-
Opcion2:
205
+
Opción 2:
178
206
179
207
```js
180
208
functionpow(x, n) {
@@ -193,16 +221,16 @@ function pow(x, n) {
193
221
}
194
222
```
195
223
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.
197
225
198
-
## Colocacion de funciones
226
+
## Colocación de funciones
199
227
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.
201
229
202
-
1.Funciones declaradas sobre el codigo que las usan:
230
+
1. Declare las funciones *anteriores* al código que las usa:
203
231
204
232
```js
205
-
// *!*declaracion de funciones*/!*
233
+
// *!*declaración de funciones*/!*
206
234
functioncreateElement() {
207
235
...
208
236
}
@@ -215,15 +243,15 @@ Si estas escribiendo varias funciones "auxiliares" y el codigo que las usan, hay
215
243
...
216
244
}
217
245
218
-
// *!*el codigo que las usan*/!*
246
+
// *!*el código que las usan*/!*
219
247
let elem =createElement();
220
248
setHandler(elem);
221
249
walkAround();
222
250
```
223
-
2.Codigo primero, despues funciones
251
+
2. Código primero, después funciones
224
252
225
253
```js
226
-
// *!*El codigo que usa a las funciones*/!*
254
+
// *!*El código que usa a las funciones*/!*
227
255
let elem =createElement();
228
256
setHandler(elem);
229
257
walkAround();
@@ -241,19 +269,19 @@ Si estas escribiendo varias funciones "auxiliares" y el codigo que las usan, hay
241
269
...
242
270
}
243
271
```
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.
245
273
246
274
La mayoria del tiempo, la segunda variante es preferida.
247
275
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.
249
277
250
-
## Guias de estilo
278
+
## Guías de estilo
251
279
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.
253
281
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.
255
283
256
-
Por supuesto, un equipo puede siempre escribir su propia guia de estilos. Aunque la mayoria del tiempo, no es necesario. Hayvarios 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.
257
285
258
286
Algunas opciones populares:
259
287
@@ -263,32 +291,32 @@ Algunas opciones populares:
263
291
- [StandardJS](https://standardjs.com/)
264
292
- (y mucho mas)
265
293
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.
267
295
268
296
## Linters automatizados
269
297
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.
271
299
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.
273
301
274
-
Estas son las herramientas de linting mas conocidas:
302
+
Aquí hay algunas herramientas de linting conocidas:
275
303
276
304
- [JSLint](http://www.jslint.com/) -- uno de los primeros linters.
277
305
- [JSHint](http://www.jshint.com/) -- mas ajustes que JSLint.
278
306
- [ESLint](http://eslint.org/) -- probablemente el mas reciente.
279
307
280
-
Todos ellos pueden hacer el trabajo. Elauthor usa [ESLint](http://eslint.org/).
308
+
Todos ellos pueden hacer el trabajo. El autor usa [ESLint](http://eslint.org/).
281
309
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.
283
311
284
-
Por ejemplo, para ESLint tu puedes hacer lo siguiente:
312
+
Por ejemplo, para ESLint debe hacer lo siguiente:
285
313
286
314
1. Instala [Node.JS](https://nodejs.org/).
287
315
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).
289
317
4. Instala/Habilita el plugin para que tu editor se integre con ESLint. La mayoria de editores tienen uno.
290
318
291
-
Aqui un ejemplo de un archivo `.eslintrc`:
319
+
Aquí un ejemplo de un archivo `.eslintrc`:
292
320
293
321
```js
294
322
{
@@ -305,16 +333,16 @@ Aqui un ejemplo de un archivo `.eslintrc`:
305
333
}
306
334
```
307
335
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.
309
337
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.
311
339
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.
313
341
314
342
## Resumen
315
343
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.
317
345
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.
319
347
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