Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Duda Semana 12 notebook 5 #595

Open
3 tasks done
TarzanDeMaceta opened this issue Nov 3, 2024 · 2 comments
Open
3 tasks done

Duda Semana 12 notebook 5 #595

TarzanDeMaceta opened this issue Nov 3, 2024 · 2 comments
Assignees
Labels
Contenidos Dudas sobre contenidos Resuelto Issues resueltas por el equipo docente

Comments

@TarzanDeMaceta
Copy link

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

¿Por que utiliza el siguiente fragmento de código en el ultimo ejemplo? (adjunto imagen)
Captura de pantalla 2024-11-03 141840
La pregunta viene porque nadie emite la señal "senal_abrir_ventana". De hecho si comento esa línea de código, el programa funciona según lo planeado.
Quedo atento a sus comentarios
Saludos

@TarzanDeMaceta TarzanDeMaceta added the Contenidos Dudas sobre contenidos label Nov 3, 2024
@3rdPix 3rdPix self-assigned this Nov 3, 2024
@3rdPix
Copy link

3rdPix commented Nov 3, 2024

Hola @TarzanDeMaceta !

Tal como sugieres, el comportamiento de esa conexión para la situación del ejemplo es redundante. El tener una señal asociada a un comportamiento es útil cuando el programa se hace más complejo, imagina la siguiente situación;

Tienes una ventana que quieres que cada vez que se abra su tamaño se vaya reduciendo. Si conectaras directamente las señales como se está mostrando ahí, es decir, desde la emisión de la señal directamente al método show built-in, entonces la ventana se mostraría sin cambios.

Necesitarías definir un método personalizado, por ejemplo, mostrar_but_se_achica que se encargara de hacer los cambios que esperas antes de mostrar la ventana con el método show de siempre. Si los hicieras con conexión directa, tendrías que buscar todas las veces que llamabas al método show y reemplazarlo por el nuevo método; peor aún si quisieras definir otro método más, tendrías que volver a hacer todos los cambios (imagina esto con un programa que tiene cientos de archivos y líneas 🥲).

En su lugar, lo que se puede hacer para dejarlo más eficiente, es dejar esa única señal "abrir_ventana" que estará asociada al comportamiento que esperas; desde otras clases no tienes idea cuál es ese comportamiento ni sabes cuál es el método que finalmente hará que la ventana se muestre, pero sabes que esa señal está conectada a ese comportamiento.

Entonces, si quieres que la ventana se muestre, solo deberás emitir esa señal. Y si quieres definir un nuevo método, solo deberás cambiar hacia donde apunta esa señal, sin necesidad de buscar en cientos de archivos todas las veces que querías mostrar la ventana, porque estará automáticamente conectada (la señal) al nuevo método que definiste.

Por supuesto como en todo, es solo una forma más de acercarse a resolver un problema; en la implementación pueden haber muchas formas de llegar al mismo comportamiento, es tu deber decidir cuál es la más apropiada para la situación que quieres resolver.

@TarzanDeMaceta
Copy link
Author

Gracias por la respuesta 👍

@3rdPix 3rdPix added the Resuelto Issues resueltas por el equipo docente label Nov 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Contenidos Dudas sobre contenidos Resuelto Issues resueltas por el equipo docente
Projects
None yet
Development

No branches or pull requests

2 participants