Clean Code en Swift: principios y ejemplos para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Clean Code en Swift: principios y ejemplos para principiantes



Cada desarrollador de iOS o macOS, tarde o temprano, se enfrenta al problema: el código que funcionaba perfectamente ayer, hoy se vuelve ilegible. Esto no es culpa del lenguaje Swift, sino el resultado de descuidar los principios de Clean Code. El código limpio no es solo estética. Es la base de la mantenibilidad del proyecto, la reducción del tiempo de depuración y el trabajo en equipo cómodo. En este artículo, analizaremos los principios clave de Clean Code con ejemplos en Swift que le ayudarán a escribir código comprensible no solo para la computadora, sino también para las personas.



1. Nomenclatura: variables, constantes y funciones



El primer y más importante principio: el nombre debe responder a la pregunta «¿Para qué?», no «¿Cómo?». En Swift, gracias al tipado estricto, puede omitir el tipo en el nombre, pero no la intención.



Ejemplo malo:

var d: Double = 3.14var arr = [String]()func calc(a: Double, b: Double) -> Double {    return a * b}


Ejemplo bueno (Clean Code):

let piValue: Double = 3.14159var userNames: [String] = []func calculateRectangleArea(width: Double, height: Double) -> Double {    return width * height}


Reglas de nomenclatura en Swift:

  • Use camelCase para variables y funciones.
  • Evite abreviaturas ( btn → submitButton ).
  • Para variables booleanas, use prefijos is, has, should (por ejemplo, isUserLoggedIn).
  • Los nombres de funciones deben comenzar con un verbo: fetchData(), saveToCache().


2. Funciones: una tarea — una función



El principio de responsabilidad única (Single Responsibility) se aplica no solo a las clases, sino también a las funciones. Si una función hace más de una cosa, debe dividirse.



Ejemplo malo: la función lo hace todo a la vez

func processUserData(user: User) {    // Validación    guard user.email.contains("@") else { return }    // Guardar en la base de datos    Database.shared.save(user)    // Enviar notificación    NotificationCenter.default.post(name: .userDidRegister, object: nil)    // Actualizar UI    DispatchQueue.main.async {        self.label.text = "Bienvenido, \\(user.name)"    }}


Ejemplo bueno: división en funciones pequeñas

func registerUser(_ user: User) {    guard validateUser(user) else { return }    saveUserToDatabase(user)    postRegistrationNotification()    updateUI(for: user)}

private func validateUser(_ user: User) -> Bool { return user.email.contains("@") && !user.name.isEmpty}

private func saveUserToDatabase(_ user: User) { Database.shared.save(user)}

private func postRegistrationNotification() { NotificationCenter.default.post(name: .userDidRegister, object: nil)}

private func updateUI(for user: User) { DispatchQueue.main.async { self.welcomeLabel.text = "Bienvenido, \\(user.name)" }}


Consejo: Si no puede pensar en un nombre corto para una función, probablemente esté haciendo demasiado.



3. Comentarios: menos es mejor, pero precisos



En Clean Code, los comentarios son una señal de código deficiente. El buen código debe documentarse a sí mismo. Sin embargo, hay excepciones: lógica de negocio compleja, trabajo con código heredado o APIs públicas.



Comentario redundante (malo):

// Incrementamos el contador en 1counter += 1


Comentario útil (bueno):

// Usamos Decimal para evitar errores de redondeo al trabajar con monedalet price = Decimal(string: "19.99") ?? .zero


Reglas para trabajar con comentarios:

  • No escriba lo obvio: el código se lee solo.
  • Use // MARK: - para

Blogs

Book Recommendations