style guide google español coding code coding-style

coding-style - guide - java code conventions 2018



Prácticas de codificación obsoletas (12)

Con los avances modernos en marcos e IDE, ¿existen algunas prácticas de codificación que ya no se aplican y otras que pueden estar simplemente equivocadas ahora?

Depende del idioma en gran medida.

Wrt C:

  • Usando la palabra clave de register

Wrt C ++:

  • Abusando de la static ; Ahora se supone que debes usar los namespace aunque sean anónimos.

O, ¿entendí mal tu pregunta?

Mientras hago mi codificación, a veces me pregunto si estoy haciendo las cosas de la mejor manera o de la forma en que siempre se ha hecho. ¿Lo que estoy haciendo tiene sentido ya?

Por ejemplo, declarando todas sus variables en la parte superior de la función. Si trato de declararlo dos veces o por debajo de donde comienzo a usarlo, mi IDE me ladrará en el momento del diseño, ¿cuál es el problema? Parece que tendría más sentido declarar las variables justo encima del bloque donde se utilizarían.

Otra sería la notación húngara. Odio que todas mis variables relacionadas con un objeto en particular estén dispersas a lo largo de mi inteligencia.

Con los avances modernos en marcos e IDE, ¿hay algunas prácticas de codificación que ya no se aplican y otras que pueden estar simplemente equivocadas ahora?


Alineación en columnas (por ejemplo, variables en declaraciones o = en asignaciones).

Es un dolor mantenerlo manualmente, el cambio de nombre automático lo desordenará de todas formas, algunas líneas se alargan con cosas que pertenecen juntas, así que luchas para ver la relación.



Como se ha dicho antes, no intentes adaptar los modismos de un idioma a otro. Esto es especialmente cierto en idiomas drásticamente diferentes, como ir de C ++ a Python. Además (esto podría ser solo una cuestión de estilo personal), solía declarar una variable y luego asignarle un valor más adelante. Me parece mucho más rápido y eficiente en el espacio simplemente declararlo y definirlo al mismo tiempo.


El recuento manual de ref de un puntero es una práctica antigua que me vuelve absolutamente loco. Arreglo alrededor de 1-2 errores al mes porque alguien trató de ser inteligente y refaccionar manualmente un puntero. Sólo tiene que utilizar un puntero inteligente. Te ahorrará tiempo.


En cuanto a la declaración de variables, el mejor lugar para declararlas es justo antes de usarlas. Si su función / procedimiento es tan grande que hay toneladas de variables declaradas en la parte superior, considere refactorizar la función en múltiples y más pequeñas.

En cuanto a la notación húngara, se aplica la misma respuesta. Si la función es tan grande que no puede detectar rápidamente la definición de la variable (aunque debe declararse justo antes de usarla), considere refactorizar.

En la mayoría de los casos, una función bien redactada y bien refaccionada debe hacer que la declaración de variables y el tipo de datos sean obvios con un rápido vistazo a la página de códigos.


Identificadores cortos: muchos programadores de la vieja escuela usan identificadores cortos y crípticos. La brevedad es una virtud útil, pero considerando que un buen IDE se completa automáticamente, un nombre descriptivo es mucho mejor que algo fácil de escribir.


Líneas cortas: Algunas personas insisten en el texto de 80 columnas. El resto de nosotros tenemos monitores reales y no nos importa si una línea tiene más de 80 caracteres. Puede mejorar la legibilidad para tener líneas más largas.


Las variables en la parte superior tienen sentido en un lenguaje como javascript. No tiene alcance de bloque, por lo que simplifica la lectura.

Considere un cuerpo de función que contiene:

//some code if(something) { var c = 123; } alert(c); // gives 123 when the if is executed and undefined when it doesn''t.

Eso es un resto de que cada idioma es diferente y que definitivamente puede afectar lo que es y lo que no es apropiado. También tenga en cuenta que el código que usa en el marco relacionado usualmente usa un cierto estilo de codificación; si elige algo radicalmente diferente, inevitablemente terminará con estilos mixtos.

Actualización: Lo anterior en javascript está cambiando (como se menciona en un comentario). No parece tener un amplio respaldo (no se encontró un buen enlace en su pensamiento :(), lo que también es un recordatorio de que no podemos apresurarnos hacia las nuevas funciones sin considerar el contexto en el que las usamos.


No declare las variables sobre el bloque en el que se utilizarán; declarelas en el ámbito más estrecho disponible, en el momento del primer uso, suponiendo que sea factible en su idioma.

La notación húngara dependerá de las convenciones de su idioma / plataforma. También depende de la variedad de húngaro que estés usando, la sensible (que todavía no me gusta) o la versión que solo reafirma la información de tipo ya disponible.

Una cosa a tener en cuenta: cuando adopta un nuevo idioma, asegúrese de utilizar los idiomas al mismo tiempo, especialmente las convenciones de nomenclatura. Esto ayudará a que su código encaje con el nuevo idioma, en lugar de con su código antiguo (probablemente no relacionado). Me parece que también me ayuda a pensar en sintonía con el nuevo idioma, en lugar de luchar contra él.

Pero sí, ciertamente vale la pena revisar periódicamente las prácticas de codificación. Si no puedes decidir por qué algo es una buena idea, intenta prescindir de él por un tiempo ...


Solía ​​separar todos mis números de línea por 10, comenzando cada parte de código lógicamente separada en intervalos de 100 o 1000, es decir

10 Print "Hello" 20 Gosub 100 30 ''Peeks and Pokes

Por razones obvias, ya no codifico así.


Protección contra asignaciones accidentales:

Poner el valor l en el lado derecho no es necesario en algunos idiomas nuevos como C #.

En C # lo siguiente no compilará:

if (variable = 0)

Así que en C # no hay necesidad de hacer:

if (0 == variable)

Esta práctica es muy común en los programas C / C ++ para evitar asignaciones accidentales que debían ser comparaciones.

Puntos de retorno múltiples:

La desactivación de múltiples puntos de retorno se aplicó principalmente porque no quiere olvidarse de eliminar sus variables.

En su lugar, si solo usas RAII no tienes que preocuparte por eso.

Descargo de responsabilidad: todavía hay buenas razones para minimizar los múltiples puntos de retorno, y algunas veces es útil tener solo uno.

Archivos de encabezado

En la mayoría de los idiomas modernos, no separa su código en declaración y definición.

C ++ define para múltiples archivos de cabecera incluye

En C ++ solías hacer:

#ifdef _MYFILE_H_ #define _MYFILE_H_ //code here #endif

Esto a veces llevaría a algo como lo siguiente, sin embargo:

#ifdef _MYFILE_H_ #define _WRONGNAME_H_ //code here #endif

Una mejor manera de hacer esto si tu compilador lo admite:

#pragma once

Declaraciones de variable c

Con C tenías que declarar todas las variables en la parte superior de tu bloque de código. Sin embargo, incluso las versiones posteriores de C no requerían esto, pero la gente todavía lo hace.

Notación húngara: (Leer, contiene alguna información única)

La notación húngara todavía puede ser buena . Pero no me refiero a ese tipo de notación húngara.

Antes era muy importante en C tener cosas como:

int iX = 5; char szX[1024]; strcpy(szX, "5");

Porque podrías tener funciones completamente inseguras como:

printf("%i", iX);

Ahora, si hubiera llamado a la cadena x, mi programa se habría bloqueado.

Por supuesto, la solución a esto es usar solo funciones de tipos seguros. Así que mientras lo hagas, no necesitas notación húngara en este sentido.

Pero aún así es una buena idea como lo discute Joel en su sentido.