wandres.dev
ESTILO Y CALIDAD · coding style, checkpatch

El estilo de código del kernel

El kernel tiene un estilo estricto y no negociable, documentado por el propio Torvalds. No es capricho: la consistencia a esta escala es lo que hace legible el código de miles de autores.

⏱ 10 min

El kernel lo escriben miles de personas a lo largo de décadas. Sin un estilo común, sería una torre de Babel ilegible. Por eso el kernel impone un estilo estricto —tabs de 8, llaves donde tocan, nombres concretos— documentado y aplicado sin excepciones. Aprenderlo no es opcional si quieres contribuir.

🎯 Al terminar esta lección sabrás
  • Las reglas de estilo esenciales.
  • Por qué tabs de 8 y líneas cortas.
  • Nombres y funciones.
  • Dónde está la ley: Documentation/process/coding-style.

Las reglas esenciales

/* Comentarios de bloque estilo kernel */
int funcion_del_kernel(struct dispositivo *dev, int flags)
{                                   /* llave de función en su PROPIA línea */
	int ret;                    /* indentación con TAB (ancho 8) */

	if (flags & OPCION) {       /* llave de bloque en la MISMA línea */
		ret = hacer_algo(dev);
		if (ret)
			return ret; /* return temprano ante error, sin llaves si 1 línea */
	}

	return 0;
}
↔️

Tabs de 8

Indentación con tabuladores de ancho 8. Grande a propósito: si anidas tanto que no cabe, tu función es demasiado compleja.

📏

Líneas ≤ 80 (flexible)

El límite histórico es 80 columnas; hoy se toleran algo más, pero la brevedad manda.

🎯

Llaves

En bloques (if, for), la llave va en la misma línea. En funciones, en su propia línea. Una asimetría deliberada.

✂️

Funciones cortas

Una función hace una cosa y cabe en una pantalla. Nada de monstruos de 500 líneas.

Por qué tabs de 8

El estilo es una herramienta, no una opinión

Es fácil despreciar las guías de estilo como pedantería. En el kernel son ingeniería. Los tabs de 8 no son estética: son un límite de complejidad disfrazado. Si tu código se anida tanto que la indentación de 8 lo empuja fuera de la pantalla, el estilo te está diciendo que refactorices —extrae una función, invierte una condición— antes de que sea inmantenible. La regla de funciones cortas obliga a descomponer. El límite de columnas mantiene el código legible en cualquier terminal. Y sobre todo, la consistencia absoluta significa que, cuando lees código de un autor que no conoces de un subsistema que no dominas, no gastas energía en descifrar su estilo personal: se lee igual que todo lo demás. A la escala del kernel —miles de autores, millones de líneas, décadas—, un estilo uniforme no es opresión: es lo que hace humanamente posible leer y mantener la obra colectiva. Adóptalo sin pelear; te hace mejor.

Nombres

El kernel prefiere nombres cortos y en minúsculas con guiones bajos: struct file_operations, kmalloc, dev_id. Nada de camelCase (eso es userspace). Los nombres de variables locales son breves (i, ret, dev); los globales, descriptivos. Y hay convenciones por subsistema que verás al leer.

La ley

💡
Documentation/process/coding-style.rst

El estilo completo, escrito con el humor característico de Linus, está en Documentation/process/coding-style.rst del árbol del kernel. Es lectura obligatoria antes de enviar tu primer parche (nivel 30) — y sorprendentemente entretenida. No la resumas de oídas: léela de la fuente. Es corta, clara, y define exactamente qué se acepta.

⚔️ Escribe como el kernel
  1. Lee Documentation/process/coding-style.rst entero (es breve).
  2. Reescribe tu módulo del nivel 7 siguiendo el estilo: tabs de 8, llaves correctas, funciones cortas.
  3. Configura tu editor para tabs de 8 en archivos del kernel.
  4. Compara tu estilo previo con el del kernel: ¿qué cambia?