IIC2233 / Syllabus-2024-1

77 stars 13 forks source link

Malas prácticas #172

Open carlosmartellus opened 6 months ago

carlosmartellus commented 6 months ago

Prerrequisitos

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

Se considera mala práctica usar un break para salir de un bucle, ya sea while o for?

3rdPix commented 6 months ago

No necesariamente. En ocasiones es una cualidad necesaria y muy útil para manejar el flujo del programa, sin embargo, su uso excesivo puede que haga difícil entender tu código y, por otro lado, si la única forma de salir de tus iteraciones es a través de un break, puede también ser indicador de que no estás tomando la mejor forma de abordar el problema.

JJJGGGG commented 6 months ago

Complementando a @3rdPix : por mi lado, uso bastante eso. Pero he escuchado que es mejor práctica definir el bucle en una función aparte y hacer return en vez de break (evidentemente depende del caso de uso), principalmente porque por lo general cuando haces break estás buscando algo en la lista y es más entendible si defino una función con un nombre descriptivo.

Por ejemplo:

alumno_encontrado = None
for alumno in alumnos:
    if alumno.num == 123456:
        alumno_encontrado = alumno
        break

podría convertirse en

def buscar_alumno_por_num(alumnos, num):
    for alumno in alumnos:
        if alumno.num == num:
            return alumno

alumno_encontrado = buscar_alumno_por_num(alumnos, 123456)

En el segundo caso, el código se ve más limpio, es más fácil de mantener (porque es más modular) y es más fácil de leer también, porque ahora sé que la función buscar_alumno_por_num va a buscar un alumno por num, entonces puedo concentrarme en hacer esa función bien y luego olvidarme de lo que hay dentro, usarlo como "caja negra" (función que sabemos qué retorna, pero no qué hace para retornarlo).