0Pricing
Go Academy · Lección

El problema de demasiados parámetros

Descubra por qué los constructores se complican

El problema de demasiados parámetros es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Por qué los constructores se complican

Go no tiene argumentos predeterminados ni parámetros con nombre. A medida que un tipo incorpora opciones, la firma de su constructor crece hasta volverse difícil de manejar y propensa a errores.

Una explosión de constructores

Imagine un servidor con host, puerto, tiempo de espera, TLS e intentos de reintento. Un único constructor necesita recibirlos todos.

package main

import "fmt"

func NewServer(host string, port, timeout, retries int, tls bool) {
	fmt.Println(host, port, timeout, retries, tls)
}

func main() {
	NewServer("localhost", 8080, 30, 3, false)
}

El problema de la legibilidad

Los sitios de llamada se convierten en un muro de valores posicionales. NewServer("localhost", 8080, 30, 3, false): ¿qué número corresponde al tiempo de espera? ¿Cuál corresponde a los reintentos?

Es fácil confundirlos

Dos parámetros int adyacentes pueden intercambiarse fácilmente, y el compilador no detectará el error.

package main

import "fmt"

func connect(timeout, retries int) { fmt.Println("timeout", timeout, "retries", retries) }

func main() {
	connect(3, 30)
}

El enfoque de la struct de configuración

Una alternativa es pasar una struct de configuración. Es mejor, pero todos los campos reciben su valor cero, que puede ser incorrecto, por ejemplo, un tiempo de espera de 0.

package main

import "fmt"

type Config struct {
	Host    string
	Port    int
	Timeout int
}

func NewServer(c Config) { fmt.Printf("%+v\n", c) }

func main() {
	NewServer(Config{Host: "localhost", Port: 8080})
}

La trampa del valor cero

Con una struct de configuración, omitir Timeout establece silenciosamente su valor en 0. No puede distinguir entre «usar el valor predeterminado» y «establecer explícitamente el valor en cero».

Varios constructores

Otra opción es crear muchos constructores: NewServer, NewServerWithTLS, NewServerWithTimeout; el número de combinaciones crece de forma explosiva.

Compatibilidad con versiones anteriores

Añadir un parámetro a un constructor existente rompe todas las llamadas que lo utilizan. Necesita añadir opciones sin cambiar los sitios de llamada existentes.

Lo que necesitamos

  • Valores predeterminados razonables
  • Modificar solo lo necesario
  • Sitios de llamada autoexplicativos
  • Añadir opciones más adelante sin romper las llamadas existentes

Llegan las opciones funcionales

El patrón de opciones funcionales resuelve todo esto: pase una lista variádica de funciones de configuración. En las lecciones siguientes lo construirá paso a paso.

Un adelanto

El objetivo es poder hacer llamadas como NewServer("localhost", WithPort(9000), WithTLS()): claras, opcionales y extensibles.

Comprobación rápida

Compruebe su comprensión del problema.

Repaso

Ha visto por qué los constructores con muchos parámetros son problemáticos.

  • Los argumentos posicionales son ilegibles y pueden intercambiarse
  • Las structs de configuración caen en la trampa del valor cero
  • El número de constructores crece de forma explosiva
  • Añadir parámetros rompe las llamadas existentes

Las opciones funcionales resuelven todos estos problemas.

Preguntas frecuentes

¿La lección «El problema de demasiados parámetros» es gratis?

Sí — el texto completo de «El problema de demasiados parámetros» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El problema de demasiados parámetros»?

Descubra por qué los constructores se complican Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «El problema de demasiados parámetros»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El problema de demasiados parámetros
  2. Funciones de opciones
  3. Construcción de una API flexible
  4. Valores predeterminados y validación
← Volver a Go Academy