Los estándares de codificación de GNU son un conjunto de reglas y directrices para escribir programas que funcionen de forma consistente dentro del sistema GNU . Estos estándares fueron redactados por Richard Stallman y otros voluntarios del Proyecto GNU. El documento de estándares forma parte del Proyecto GNU y está disponible en el sitio web de GNU. Si bien se centra en la escritura de software libre para GNU en C , gran parte de su contenido puede aplicarse de forma más general. En particular, el Proyecto GNU anima a sus colaboradores a intentar siempre seguir los estándares, independientemente de si sus programas están implementados en C o no.
formato de código
Los estándares de codificación GNU especifican con exactitud cómo formatear la mayoría de las construcciones del lenguaje de programación C. He aquí un ejemplo característico:
int main ( int argc , char * argv []) { struct gizmo foo ;fetch_gizmo ( & foo , argv [ 1 ]);comprobación : si ( foo . type == MOOMIN ) puts ( "Es un moomin." ); de lo contrario , si ( foo . bar < GIZMO_SNUFKIN_THRESHOLD / 2 || ( strcmp ( foo . class_name , "snufkin" ) == 0 ) && foo . bar < GIZMO_SNUFKIN_THRESHOLD ) puts ( "Es un snufkin." ); de lo contrario { 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_de_tienda ( wilma );ir a comprobar ; }devolver 0 ; }El tratamiento sistemático de los bloques como sentencias (a efectos de indentación) es una característica distintiva del estilo de formato de código GNU C; al igual que el espacio obligatorio antes de los paréntesis. Todo el código formateado según 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 de una forma más compatible con Emacs; por ejemplo, insertando paréntesis adicionales.
Dividir largas filas
"Cuando dividas una expresión en varias líneas, divídela antes de un operador, no después." [ 2 ]
Por ejemplo:
si ( foo_this_is_long && bar > win ( x , y , z ) && remaining_condition )Comentarios
Las normas hacen especial hincapié en la importancia de los comentarios en inglés :
Por favor, escribe los comentarios en inglés para un programa GNU, ya que es el idioma que prácticamente todos los programadores de todos los países pueden leer. Si no dominas el inglés, escribe los comentarios lo mejor que puedas y luego pide ayuda a otros para revisarlos. Si no puedes escribir comentarios en inglés, busca a alguien que te ayude a traducirlos.
Los comentarios deben consistir en oraciones completas, escritas en mayúsculas, seguidas cada una 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 debajo (para #else) o arriba (para #endif).
Archivos
Los estándares exigen que todos los programas puedan funcionar cuando /usry /etcestén montados 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 /usr. /etcSe hace una excepción para los programas cuya función es actualizar los archivos de configuración del sistema en /etc. Otra excepción se aplica al almacenamiento de 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 el concepto de portabilidad de la siguiente manera: en el mundo Unix , la portabilidad significa "entre sistemas 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 compilarse con un único compilador, el compilador GNU C , y ejecutarse únicamente en un sistema, que es el sistema GNU.
Sin embargo, existe un problema de portabilidad: el estándar deja claro que un programa debe ejecutarse en diferentes tipos de CPU . Si bien el estándar indica que GNU no admite ni admitirá sistemas de 16 bits, es absolutamente necesario que sea compatible con todos los sistemas de 32 y 64 bits.
Estándares de Gnits
Los estándares Gnits son un conjunto de normas y recomendaciones para programar, mantener y distribuir software . Son publicados por un grupo de mantenedores de proyectos GNU que se hacen llamar "Gnits", abreviatura de "GNU nit-pickers" (expertos en detalles de GNU). Por lo tanto, representan recomendaciones, no políticas de la Free Software Foundation ni de GNU , pero algunas partes de los estándares Gnits han sido ampliamente adoptadas entre los programadores de software libre en general.
Los estándares de Gnit son extensiones, refinamientos y anotaciones de los Estándares GNU . Sin embargo, no son normativos en GNU; los mantenedores de GNU no están obligados a seguirlos. No obstante, los mantenedores y programadores suelen encontrar en los estándares de Gnit buenas ideas para seguir los propios Estándares GNU, así como explicaciones tentativas y no oficiales sobre por qué algunos estándares de GNU se decidieron de la manera en que se decidieron. Existen muy pocas discrepancias entre Gnit y los estándares GNU, y siempre se indican claramente como tales.
Los estándares abordan aspectos de la arquitectura del software , el comportamiento del programa, la interacción persona-ordenador , la programación en C , la documentación y las versiones del software .
Desde 2008, los estándares de Gnits incluyen un aviso que indica que están moribundos y que ya no se mantienen activamente, y remiten a los lectores a los manuales de Gnulib , Autoconf y Automake , que supuestamente cubren muchos de los mismos temas.
Crítica
Los estándares de codificación de GNU son utilizados principalmente por proyectos de GNU, aunque su uso no se limita únicamente a estos.
El kernel de Linux desaconseja enérgicamente este estilo para el código del kernel y se refiere a él de forma peyorativa: «Para empezar, sugiero 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 utiliza con un icono de «Horror de la codificación», que simboliza un código especialmente peligroso, y afirma que dificulta la legibilidad al requerir un nivel adicional de indentación para las llaves. [ 4 ]
Véase también
Referencias
- ↑ "Manual del modo CC" . Consultado el 8 de abril de 2025 .
- ↑ "Estándares de codificación GNU" . www.gnu.org . Consultado el 29 de noviembre de 2020 .
- ↑ "Estilo de codificación del kernel de Linux — La documentación del kernel de Linux" . www.kernel.org . Consultado el 12 de octubre de 2017 .
- ↑ McConnell, Steve (2004). Code Complete: A practical handbook of software construction . 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
- Cultura y documentación del software libre
- Proyecto GNU
- Código fuente