Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Código Limpio50 XP5 min

Estilo y Formato como Comunicación

El formato del código es un acto de comunicación — estructura los archivos para que cualquier desarrollador pueda navegar en segundos.

La Metáfora del Periódico

Piensa en un archivo fuente bien estructurado como en un artículo de periódico. En la parte superior encuentras el titular y los puntos clave: API pública, funciones exportadas. A medida que bajas, el detalle aumenta: helpers privados, implementación. Un lector debe entender el propósito del módulo en las primeras 20 líneas, sin necesidad de profundizar en la implementación.

Detalle privado arriba

function _validateEmailFormat(email):
    return "@" in email

function _hashPassword(password):
    return hash(password)

function registerUser(name, email, password):  // ← hard to find
    ...

API pública primero

function registerUser(name, email, password):
    if not _isValidEmail(email):
        raise ValueError("Invalid email")
    return {
        name: name,
        password: _hashPassword(password),
    }

// ── Private helpers ──────────
function _isValidEmail(email): ...
function _hashPassword(password): ...

Apertura Vertical y Densidad

Las líneas en blanco son los saltos de párrafo del código. Úsalas para separar conceptos: imports de la declaración de clase, métodos entre sí. No añadas líneas en blanco dentro de una lógica que pertenece junta — el código denso señala acoplamiento estrecho.

Sin espacio para respirar

import FileSystem
import Platform
class UserService:
    db=null
    function find(id):
        return db.query(id)
    function save(user):
        db.insert(user)

Líneas en blanco separan conceptos

import FileSystem
import Platform

class UserService:
    db = null

    function find(userId):
        return db.query(userId)

    function save(user):
        db.insert(user)

Formato Horizontal

Mantén las líneas por debajo de los 120 caracteres — las líneas largas obligan al scroll horizontal y ocultan la estructura. La indentación es el contrato visual que indica a los lectores qué código pertenece a dónde. Nunca luches contra el formateador acordado por tu equipo (black, prettier, eslint). El estilo personal es irrelevante en un entorno de equipo.

160+ chars, scroll horizontal

function calculateOrderTotal(order, user, discountService, taxService, currencyConverter, targetCurrency):
    return currencyConverter.convert(taxService.apply(discountService.apply(order.subtotal, user.tier), order.region), targetCurrency)

Dividido en pasos legibles

function calculateOrderTotal(
    order, user,
    discountService, taxService,
    currencyConverter,
    targetCurrency,
):
    subtotal = discountService.apply(
        order.subtotal, user.tier)
    withTax = taxService.apply(
        subtotal, order.region)
    return currencyConverter.convert(
        withTax, targetCurrency)

Desafío de Código

Formatea Este Desorden — aplica la metáfora del periódico, añade líneas en blanco y rompe la línea larga.

💡Conclusión clave

El formato no es cosmético — es el lenguaje visual que usas para comunicar la estructura al próximo desarrollador.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Piensa en un periódico: titular primero, detalles abajo. Pon la función pública al inicio, los ayudantes privados debajo. Luego añade una línea en blanco donde mentalmente *haces una pausa* al leer — esa pausa marca un límite conceptual.

✗ Tu versión