Cuando estoy diseñando para una tarea, sigo luchando contra esta sensación persistente de que, aparte de ser un esquema general, al final será más o menos ignorado. Te daré un ejemplo:
Estaba escribiendo una interfaz para un dispositivo que tiene operaciones de lectura / escritura. Tenía perfecto sentido en el diagrama de clases para darle una función de lectura y escritura. Sin embargo, cuando llegó el momento de escribirlos, me di cuenta de que eran literalmente la misma función con solo una línea de código cambiada (llamada de función de lectura vs escritura), por lo que para evitar la duplicación de código, terminé implementando una función do_io con un parámetro que distingue entre operaciones Adiós diseño original.
Este no es un cambio terriblemente disruptivo, pero ocurre a menudo y también puede ocurrir en partes más críticas del programa, por lo que no puedo evitar preguntarme si hay un punto para diseñar más detalles que un esquema general, al menos cuando viene a la arquitectura del programa (obviamente cuando especificas una API tienes que explicar todo).
Esto podría ser solo el resultado de mi inexperiencia en el diseño, pero por otro lado tenemos metodologías ágiles que dicen "renunciamos a la planificación con anticipación, de todos modos todo va a cambiar en unos pocos días", lo que a menudo es como me siento.
Entonces, ¿cómo exactamente debo "usar" el diseño?
do_ioparece ser un detalle de implementación interna de esa clase. La interfaz público y probablemente aún debe serread(...)ywrite(...)como es mucho más detallada acerca de la intención de la llamada.