@@ -948,7 +948,7 @@ Se resume en
948948
949949---
950950
951- Una forma de aplicarlo es:
951+ Una forma de aplicarlo es
952952
953953- ** Identificar** y eliminar código duplicado
954954- ** Utilizar** funciones, clases y módulos para reutilizar código
@@ -1136,50 +1136,56 @@ tienda.pagar(100, "qr")
11361136
11371137#### YAGNI (You Aren't Gonna Need It)
11381138
1139- El principio YAGNI enfatiza la importancia de no agregar funcionalidades
1140- o características que no son necesarias en el momento.
1139+ El principio YAGNI enfatiza la importancia de * NO agregar* funcionalidades
1140+ o características que * no son necesarias* en el momento
11411141
1142- Esto ayuda a evitar la sobreingeniería y a mantener el código simple y enfocado.
1142+ Ayuda a evitar la * sobreingeniería* y a mantener el código simple y enfocado
11431143
11441144---
11451145
1146- Se puede resumir en:
1146+ Se resume en
11471147
1148- - Necesidad: No agregue funcionalidades o características que no son necesarias.
1149- - Simplicidad: Mantenga el código simple y enfocado en el propósito actual.
1150- - Eficiencia: Evite la complejidad innecesaria que puede afectar el rendimiento.
1148+ - ** Necesidad** : No agregue funcionalidades o características que no son necesarias
1149+ - ** Simplicidad** : Mantenga el código simple y enfocado en el propósito actual
1150+ - ** Eficiencia** : Evite la complejidad innecesaria que puede afectar el rendimiento
11511151
11521152---
11531153
1154- - Mantenimiento: Un código sin características innecesarias es más fácil de mantener.
1155- - Claridad: Un código sin características innecesarias es más claro y fácil de entender.
1156- - Flexibilidad: Un código sin características innecesarias es más flexible y adaptable a cambios futuros.
1154+ - ** Mantenimiento** : Un código sin características innecesarias es más fácil de mantener
1155+ - ** Claridad** : Un código sin características innecesarias es más fácil de entender
1156+ - ** Flexibilidad** : Un código sin características innecesarias es más flexible y adaptable a cambios futuros
11571157
11581158---
11591159
1160- Una forma de aplicarlo es:
1160+ Una forma de aplicarlo es
11611161
1162- - Enfocarse en los requisitos actuales y no en posibles requisitos futuros.
1163- - Evitar la sobreingeniería y centrarse en lo esencial.
1164- - Revisar y eliminar características innecesarias durante la refactorización.
1162+ - ** Enfocarse** en los ** requisitos actuales** y NO en posibles requisitos futuros
1163+ - * Evitar* la sobreingeniería y centrarse en lo esencial
1164+ - Revisar y * eliminar características innecesarias* durante la refactorización
11651165
11661166---
11671167
1168- - Priorizar la simplicidad y claridad del código.
1169- - Mantener el código enfocado en el propósito actual.
1170- - Evitar la tentación de agregar características "por si acaso".
1168+ - ** Priorizar** la simplicidad y claridad del código
1169+ - ** Mantener** el código enfocado en el propósito actual
1170+ - ** Evitar** la tentación de agregar características
1171+
1172+ * "por si acaso"*
11711173
11721174---
11731175#### Ejemplo YAGNI
11741176
1177+ Crear el archivo ` yagni.py ` en la carpeta ` sesion12 `
1178+
11751179``` text
11761180Un estudiante esta aprendiendo a sumar dos números, y le dieron
11771181una calculadora para para que pueda practicar la suma, pero
1178- la calculadora tiene muchas funciones que no va a usar aún.
1182+ tiene muchas funciones que no va a usar aún
1183+ Simplifica el código aplicando el principio YAGNI
1184+ Deja solo la funcionalidad necesaria para sumar dos números
1185+ agrega anotaciones y documentación
11791186```
11801187
1181- ``` python [1-14|15-20]
1182- # Característica innecesaria
1188+ ``` python [1-14]
11831189class Calculadora :
11841190 def sumar (self , a , b ):
11851191 return a + b
@@ -1188,12 +1194,16 @@ class Calculadora:
11881194 def multiplicar (self , a , b ):
11891195 return a * b
11901196 def dividir (self , a , b ):
1191- if b == 0 :
1192- raise ValueError (" No se puede dividir por cero" )
11931197 return a / b
11941198calc = Calculadora()
11951199print (calc.sumar(5 , 7 ))
1196- # Solución enfocada
1200+ ```
1201+
1202+ ---
1203+
1204+ Solución simple
1205+
1206+ ``` python
11971207class Calculadora :
11981208 def sumar (self , a , b ):
11991209 return a + b
@@ -1202,7 +1212,28 @@ print(calc.sumar(5, 7))
12021212```
12031213
12041214---
1205- #### Ejercicio 03
1215+ Solución con anotaciones y documentación
1216+
1217+ ``` python
1218+ class Calculadora :
1219+ """ Clase que representa una calculadora simple."""
1220+ def sumar (self , a : int , b : int ) -> int :
1221+ """ Suma dos números enteros.
1222+
1223+ Args:
1224+ a (int): El primer número.
1225+ b (int): El segundo número.
1226+
1227+ Returns:
1228+ int: La suma de los dos números.
1229+ """
1230+ return a + b
1231+ calc = Calculadora()
1232+ print (calc.sumar(5 , 7 ))
1233+ ```
1234+
1235+ ---
1236+ #### Ejercicio para ti (03)
12061237
12071238``` text
12081239Un profesor necesita una forma sencilla de llevar
@@ -1211,11 +1242,12 @@ las notas de sus exámenes. Quiere poder calcular
12111242fácilmente el promedio de cada estudiante y saber
12121243de si ha aprobado o no el curso,
12131244con nota mayor a 51, además de tener
1214- un resumen claro de sus resultados para mostrárselos.
1245+ un resumen claro de sus resultados para mostrárselos
12151246Simplifica el código aplicando el principio YAGNI
1247+ Agrega anotaciones y documentación
12161248```
12171249
1218- En el archivo ` estudiantes.py ` en la carpeta ` sesion12 `
1250+ Crea archivo ` estudiantes.py ` en la carpeta ` sesion12 `
12191251
12201252---
12211253Realizar los cambios 4 minutos
@@ -1261,7 +1293,7 @@ print(estudiante1.resumen())
12611293<iframe src =" https://time-stuff.com/embed.html " frameborder =" 0 " scrolling =" no " width =" 391 " height =" 140 " ></iframe >
12621294
12631295---
1264- #### Solución simple
1296+ Solución simple
12651297
12661298``` python
12671299class Estudiante :
@@ -1291,6 +1323,48 @@ Estudiante: Ana, Notas: [85, 90, 78], Promedio: 84.33333333333333, Aprobado: Tru
12911323
12921324---
12931325
1326+ Solución con anotaciones y documentación
1327+
1328+ ``` python
1329+ class Estudiante :
1330+ """ Clase que representa a un estudiante."""
1331+ def __init__ (self , nombre : str , notas : list[int ]) -> None :
1332+ """ Inicializa una nueva instancia de la clase Estudiante.
1333+
1334+ Args:
1335+ nombre (str): El nombre del estudiante.
1336+ notas (list[int]): Las notas del estudiante.
1337+ """
1338+ self .nombre = nombre
1339+ self .notas = notas
1340+ def calcular_promedio (self ) -> float :
1341+ """ Calcula el promedio de las notas del estudiante.
1342+ Returns:
1343+ float: El promedio de las notas.
1344+ """
1345+ return sum (self .notas) / len (self .notas)
1346+ def aprobo (self ) -> bool :
1347+ """ Determina si el estudiante aprobó el curso.
1348+ Returns:
1349+ bool: True si aprobó, False en caso contrario.
1350+ """
1351+ return self .calcular_promedio() >= 51
1352+ def resumen (self ) -> str :
1353+ """ Genera un resumen del estudiante.
1354+ Returns:
1355+ str: Un resumen con el nombre, notas, promedio y estado de aprobación.
1356+ """
1357+ mensaje = f " Estudiante: { self .nombre} "
1358+ mensaje += f " , Notas: { self .notas} "
1359+ mensaje += f " , Promedio: { self .calcular_promedio()} "
1360+ mensaje += f " , Aprobado: { self .aprobo()} "
1361+ return mensaje
1362+ estudiante1 = Estudiante(" Ana" , [85 , 90 , 78 ])
1363+ print (estudiante1.resumen())
1364+ ```
1365+
1366+ ---
1367+
12941368#### Resumen
12951369
12961370- Python es un lenguaje popular por su facilidad para escribir código y su tipado dinámico, lo que permite flexibilidad pero puede causar errores difíciles de detectar.
0 commit comments