En mis diseños soy bastante estricto en cuanto a la definición de los contratos como:
- cada adquisición de recursos debe estar emparejado con un comunicado de
- cada llamada para iniciar un servicio debe estar emparejado con un llamado a detener el servicio
- cada observador que se conecta a un sujeto debe separar
- y así sucesivamente
(dicho contrato No son inusuales, como que debe vincular el abrir y cerrar un archivo o emparejar llamadas nuevas/eliminar en idiomas que no emplean la recolección automática de basura.
Cada uno de estos contratos puede probarse en tiempo de ejecución hasta cierto punto. Por ejemplo, un observador que se separa más veces de las que tiene asociadas puede ser detectado e informado (afirmación o excepción según la situación).
Por lo tanto, su pregunta que:
En teoría, es que considera más correcta para el código de añadir el manejador a un objeto de recordar a quitarlo de asumir el objeto va a limpiar a sí misma antes de ir fuera del alcance?
Es perfecto. La respuesta es Sí, y no solo en teoría, sino también en la práctica. En mi opinión, estos contratos te ayudan a evitar errores radicales debajo de la alfombra.
Olvídate de este pensamiento y estarás en camino de crear un software realmente sólido.
Bastante justo. Muchas gracias por una respuesta rápida y útil. – Kivin