Estoy leyendo "Código limpio" y tengo problemas para entender cómo mantener algunas de mis funciones (generalmente constructores) en un MÁXIMO de 3 parámetros.Reducción del número de argumentos a un constructor
A menudo mis objetos necesitan una gran cantidad de información para trabajar: ¿se supone que debo hacer un pequeño constructor y luego usar funciones de mutador para darles toda la información? Esto no parece ser mejor que simplemente usar un gran constructor.
Como ejemplo, tengo una clase "MovablePatch". Permite al usuario arrastrar un cuadrado en una ventana. Necesita varios parámetros, incluidos Radius, Color, Renderer, InitialPosition y Visibility. Actualmente Colecciono todo esto de mi interfaz gráfica de usuario y luego llamo:
MovablePatch(int radius, Renderer* renderer, Color color, Position initial, bool visibility)
Estas son sólo algunas de las cosas que necesito en esta clase. ¿Alguien puede sugerir de qué otra forma puedo empaquetar esta información para pasarla al constructor? No veo ningún obvio "dividirlo en clases más pequeñas" que aparecen aquí.
Busque el patrón del generador. – Bashwork
¿Tienes que seguir esa línea guía? De lo contrario, diría que lo ignoro donde no es obvio cómo aplicarlo. Imo si las modificaciones para seguir una directriz no son intuitivas, generalmente no vale la pena refactorizar el código para garantizar que se siga la pauta sin importar qué. Para una solución única que puede conducir fácilmente a un código más complicado (y por lo tanto bugprone) que ni siquiera tiene una mejor legibilidad (un ejemplo para esto es el pequeño constructor mencionado seguido de llamadas a función de mutador o el patrón de generador, que hacen que sea fácil olvida establecer algún valor). – Grizzly
Usando una simple 'struct' para que se pasen los atributos relacionados, ya que se ha hecho un parámetro desde antes de que yo naciera, estoy bastante seguro. – AJG85