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

shouldUseConditionalExpression para una condición múltiple con un return default #303

Open
fdodino opened this issue Oct 30, 2024 · 4 comments
Labels
component: validator Linter / Validator priority: low A nice to have, or not so important issue

Comments

@fdodino
Copy link
Contributor

fdodino commented Oct 30, 2024

En este código

class Parcial {
	const property cantidadPreguntas
}

class Alumno {
	const notas = []
	var tipoAlumno = "E"
	
	method rendir(nota) {
		notas.add(nota)
	}

  method estudiaPara(parcial) {
		if (tipoAlumno == "E") {
			// Estudioso
			return true
		}
		if (tipoAlumno == "V") {
			// Vago
			return notas.last() < 6
		}
		if (tipoAlumno == "H") {
			// Hijo del rigor
			return parcial.cantidadPreguntas() > 5
		}
		return false
	}
}

está saltando en el último if esta validación: Estás usando incorrectamente el if. Devolvé simplemente la expresión booleana.(shouldUseConditionalExpression). Raro.

@fdodino fdodino added component: validator Linter / Validator priority: medium A "should" issue, whenever we have the time to solve it priority: low A nice to have, or not so important issue and removed priority: low A nice to have, or not so important issue labels Oct 30, 2024
@fdodino
Copy link
Contributor Author

fdodino commented Oct 30, 2024

El warning se va si en la última instrucción tiramos error:

image

@fdodino fdodino added priority: low A nice to have, or not so important issue and removed priority: medium A "should" issue, whenever we have the time to solve it labels Oct 30, 2024
@fdodino fdodino changed the title shouldUseConditionalExpression para una condición múltiple shouldUseConditionalExpression para una condición múltiple con un return default Oct 30, 2024
@PalumboN
Copy link
Contributor

Y cuál sería el problema? Dónde se marca el error? O que en este caso querés aceptar esta estructura de ifs que devuelven booleanos?

El comportamiento que describís parece el correcto.

@fdodino
Copy link
Contributor Author

fdodino commented Nov 11, 2024

Fijate que acá::

method estudiaPara(parcial) {
		if (tipoAlumno == "E") {
			// Estudioso
			return true
		}
		if (tipoAlumno == "V") {
			// Vago
			return notas.last() < 6
		}
              // acá me lo marca al if
		if (tipoAlumno == "H") {
			// Hijo del rigor
			return parcial.cantidadPreguntas() > 5
		}
              // acá me lo marca al if
		return false
	}

me está diciendo que estoy usando mal el if, que debería usar la expresión booleana pero yo estoy usando una expresión booleana en cada caso, no me convence que tenga que cambiarlo a

  method estudiaPara(parcial) {
		if (tipoAlumno == "E") {
			// Estudioso
			return true
		}
		if (tipoAlumno == "V") {
			// Vago
			return notas.last() < 6
		}
		return tipoAlumno != "H" || parcial.cantidadPreguntas() > 5
	}

(ojo, yo lo hago para programar en Wollok pero no para enseñar el strategy).

image

@PalumboN
Copy link
Contributor

Ahh ok, sí es algo particular de este patrón de ifs.

Habría que definir una heurística de cuándo devolver booleanos usando if está bien y cuándo no... podría ser que si hay más de un if no tire esta validación 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: validator Linter / Validator priority: low A nice to have, or not so important issue
Projects
None yet
Development

No branches or pull requests

2 participants