Repite lógica. Si se agregaran aspectos nuevos en el futuro (que el enunciado especifica que podría pasar) habría que modificar la función y agregar los aspectos nuevos definiéndola de esta forma. Una situación es mejor que otra si para todos (all) los aspectos, cumple con la condición de ser mejor que la otra.
Tratá de usar palabras con significados distintos para funciones que se comportan de distinta forma; cambiar y modificar significan lo mismo, entonces puede dar la impresión de que ambas funciones se comportan igual. Una mejor palabra en este caso podría ser asignarGrado.
En las tres funciones repetís la función alterarTension (subtract unValor). Te convendría extraer la lógica repetida en una función tipo bajarTension unaCantidad = alterarTension (subtract unaCantidad).
Idem con peligro (se repite resta en otras funciones).
https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/crystalGems.hs#L37
Repite lógica. Si se agregaran aspectos nuevos en el futuro (que el enunciado especifica que podría pasar) habría que modificar la función y agregar los aspectos nuevos definiéndola de esta forma. Una situación es mejor que otra si para todos (all) los aspectos, cumple con la condición de ser mejor que la otra.
https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/crystalGems.hs#L49
Convenciones de nombres:
peligro
en vez deobtenerPeligro
).https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/crystalGems.hs#L40-L46
Tratá de usar palabras con significados distintos para funciones que se comportan de distinta forma;
cambiar
ymodificar
significan lo mismo, entonces puede dar la impresión de que ambas funciones se comportan igual. Una mejor palabra en este caso podría serasignarGrado
.https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/crystalGems.hs#L71-L78
En las tres funciones repetís la función
alterarTension (subtract unValor)
. Te convendría extraer la lógica repetida en una función tipobajarTension unaCantidad = alterarTension (subtract unaCantidad)
. Idem con peligro (se repite resta en otras funciones).https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/crystalGems.hs#L102-L103
La lógica de la condición se repite; podrías delegar en una función como
dominaA :: Gema -> Gema -> Bool
.https://github.com/ValSpada/parcialesFuncional/blob/a9ea106e1b451f22f090b9fd64bbf66fdf9207e7/crystalGems.hs#L140-L141
Se podría definir más declarativamente usando fold: