Es más el tema del acoplamiento de control puede llevarse desde el módulo coordinador (cliente) como del subordinado. Es decir pueden esperarse ambas direcciones del parámetro de control:
1. Que el subordinado reciba el control, o bien
2. Que el subordinado sea quien notifique del control a aplicar
Para el caso 1, el parámetro de control regula la lógica interna:
Código Delphi
[-]function Nombre(Param1: tipo; ParamControl: tipo): tipo;
begin
end;
Para el caso 2, se requiere de "var":
Código Delphi
[-]function Nombre(Param1: tipo; var Control: tipo): tipo;
begin
end;
El caso 2 como ya debe haber quedado claro se emplea cuando el subordinado debe notificar de algo "extra" o que sea a modo de control, o de cambio de "estado" al coordinador. Luego queda en el coordinar lleva a cabo lo necesario y en su responsabilidad de que hacer con él.
Un caso aún aceptable de acoplamiento es un híbrido: una combinación del acoplamiento de datos más de control. Pero también debe evitarse.
De hecho la escala de acoplamiento sugerida de mantener es:
1) Acoplamiento de datos
2) Acoplamiento estampado
3) Acoplamiento de control
4) Acoplamiento Híbrido
5) Acoplamiento Común
6) Acoplamiento por Contenido (o Patológico)
Siendo 1 es más deseable y 6 el menos deseable.
El punto y a lo que voy es que se debería pensar bien objetivamente que es lo que se pretende de esto. ¿Cuál es verdadero objetivo y lo que motiva a que una función deba regresar varios resultados? ¿Se debe hacer algo en función de esos resultados? ¿Esos resultados son utilizados para alguna situación diferente o a un tratamiento diferente?
Responder a esas preguntas puede ayudar a determinar si en verdad el diseño que se estaba pensando es el más adecuado.
Saludos,