Los estándares de codificación GNU son un conjunto de reglas y pautas para escribir programas que funcionen de manera consistente dentro del sistema GNU . Los estándares de codificación GNU fueron escritos por Richard Stallman y otros voluntarios del Proyecto GNU. El documento de estándares es parte del Proyecto GNU y está disponible en el sitio web de GNU. Aunque se centra en escribir software libre para GNU en C , gran parte de él se puede aplicar de manera más general. En particular, el Proyecto GNU alienta a sus colaboradores a que siempre intenten seguir los estándares, ya sea que sus programas estén implementados en C o no.
Formato de código
Los estándares de codificación de GNU especifican exactamente cómo formatear la mayoría de las construcciones del lenguaje de programación C. A continuación se muestra un ejemplo característico:
int
principal ( int argc , char * argv []) { estructura gizmo foo ;
fetch_gizmo ( & foo , argv [ 1 ]);
comprobar :
if ( foo . type == MOOMIN ) puts ( "Es un moomin." ); else if ( foo . bar < GIZMO_SNUFKIN_THRESHOLD / 2 || ( strcmp ( foo . class_name , "snufkin" ) == 0 ) && foo . bar < GIZMO_SNUFKIN_THRESHOLD ) puts ( "Es un snufkin." ); else { char * barney ; /* Puntero al primer carácter después de la última barra en el nombre del archivo. */ int wilma ; /* Tamaño aproximado del universo. */ int fred ; /* Valor máximo del campo 'bar'. */
hacer
{ frobnicate ( & foo , GIZMO_SNUFKIN_THRESHOLD , & barney , & wilma , & fred ); twiddle ( & foo , barney , wilma + fred ); } mientras ( foo . bar >= GIZMO_SNUFKIN_THRESHOLD );
tamaño_tienda ( wilma );
ir a comprobar ; }
devuelve 0 ; }
El tratamiento consistente de los bloques como sentencias (a los efectos de la sangría) es una característica muy distintiva del estilo de formato del código C de GNU; al igual que el espacio obligatorio antes de los paréntesis. Todo el código formateado en el estilo GNU tiene la propiedad de que cada llave, corchete o paréntesis de cierre aparece a la derecha de su delimitador de apertura correspondiente, o en la misma columna.
Al estar estrechamente integrado con el sistema GNU, GNU Emacs proporciona un formato automático del código C para que coincida con los estándares de codificación de GNU. [1] En lugar de modificar manualmente el formato del código de una manera que se aleje de los estándares de codificación de GNU, el diseño formateado del código se puede ajustar escribiéndolo en una forma más compatible con Emacs, por ejemplo, insertando paréntesis adicionales.
Dividiendo largas filas
"Cuando divida una expresión en varias líneas, divídala antes de un operador, no después de él". [2]
Por ejemplo:
si ( foo_esto_es_largo && bar > win ( x , y , z ) && condición_restante )
Comentarios
Las normas enfatizan enormemente la importancia de los comentarios en inglés :
Por favor, escriba los comentarios en un programa GNU en inglés, ya que el inglés es el único idioma que casi todos los programadores de todos los países pueden leer. Si no escribe bien en inglés, escriba los comentarios en inglés lo mejor que pueda y luego pida ayuda a otras personas para reescribirlos. Si no puede escribir comentarios en inglés, busque a alguien que trabaje con usted y traduzca sus comentarios al inglés.
Los comentarios deben constar de oraciones completas en mayúscula, cada una seguida de dos espacios (para que Emacs pueda distinguir dónde termina una oración y comienza la siguiente).
Para condicionales de preprocesador largos o complejos, cada #elsey #endifdebe tener un comentario que explique la condición para el código siguiente (para #else) o superior (para #endif).
Archivos
Los estándares requieren que todos los programas puedan funcionar cuando /usry /etcse montan en modo de solo lectura. Por lo tanto, los archivos que se modifican para fines internos (archivos de registro, archivos de bloqueo, archivos temporales, etc.) no deben almacenarse en ni /usren /etc. Se hace una excepción para los programas cuyo trabajo es actualizar los archivos de configuración del sistema en /etc. Se hace otra excepción para almacenar archivos en un directorio cuando el usuario ha solicitado explícitamente modificar un archivo en el mismo directorio.
Portabilidad
Los estándares de codificación GNU definen la cuestión de la portabilidad de esta manera: portabilidad en el mundo Unix significa "entre Unix"; en un programa GNU este tipo de portabilidad es deseable, pero no de vital importancia.
Según el estándar, los problemas de portabilidad son muy limitados ya que los programas GNU están diseñados para ser compilados con un solo compilador, el GNU C Compiler , y solo ejecutarse en un sistema, que es el sistema GNU.
Sin embargo, existe un problema de portabilidad, y es el hecho de que el estándar deja claro que un programa debe ejecutarse en distintos tipos de CPU . El estándar dice que GNU no admite ni admitirá sistemas de 16 bits, pero es absolutamente necesario que gestione todos los distintos sistemas de 32 y 64 bits.
Crítica
Los estándares de codificación GNU son utilizados principalmente por proyectos GNU, aunque su uso no se limita solo a ellos.
El núcleo de Linux desaconseja enérgicamente este estilo para el código del núcleo y se refiere al estilo de manera peyorativa: "En primer lugar, sugeriría imprimir una copia de los estándares de codificación de GNU y NO leerla. Quémela, es un gran gesto simbólico". [3] Steve McConnell , en su libro Code Complete , también desaconseja el uso de este estilo; marca un ejemplo de código que lo usa con un ícono de "Horror de codificación", que simboliza un código especialmente peligroso, y afirma que impide la legibilidad al requerir un nivel adicional de sangría para las llaves. [4]
Véase también
Referencias
- ^ https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#index-GNU-style.
{{cite web}}: Falta o está vacío|title=( ayuda ) - ^ "Estándares de codificación GNU". www.gnu.org . Consultado el 29 de noviembre de 2020 .
- ^ "Estilo de codificación del kernel de Linux: documentación del kernel de Linux". www.kernel.org . Consultado el 12 de octubre de 2017 .
- ^ McConnell, Steve (2004). Code Complete: Un manual práctico de construcción de software. Redmond, WA: Microsoft Press. pp. 746–747. ISBN 0-7356-1967-0.
Enlaces externos
- Los estándares de codificación de GNU en el sitio web de GNU
- Formateador de estilo de código Eclipse para estándares de codificación GNU