franciscogazitua / IIC2113-2024

Consultas sobre el proyecto en las Issues
2 stars 0 forks source link

Clean Code - Uso de Clase que maneje flags #127

Open jcarrascoa7 opened 1 week ago

jcarrascoa7 commented 1 week ago

Hola, estaba viendo formas de poder limpiar mi código y me di cuenta de que en algunos scripts hay muchos métodos que simplemente definen flags booleanos, por lo que me preguntaba si sería buena práctica el definir una clase que contuviera todas las definiciones de esas flags.

Lo que más me hace ruido es que ya no se utilizarían las flags con la sintaxis:

if (isCompleted())

Si no que quedaría algo del estilo:

if (<nombre_nueva_clase_>.isCompleted()

Por lo que no sé si cumpliría con Clean Code.

RodrigoToroIcarte commented 1 week ago

Hacer if (<nombre_nueva_clase_>.isCompleted() no rompe nada de clean code. Pero me causa curiosidad la clase que estás considerando agregar.

¿Cuál sería su nombre? ¿cuál sería su responsabilidad? ¿tener esa clase ayudará a que sea más fácil entender tu código? Dependiendo de las respuestas, agregar la clase puede ser una muy buena idea o un dolor de cabeza para el lector de tu código :P

jcarrascoa7 commented 1 week ago

En un principio estaba pensando en hacer algún tipo de clase estática que tuviera todos los flags, sin embargo, ahí creo que no sería correcto ya que podría tener más de una responsabilidad (al checkear distintas cosas). Otra duda que tengo sería esa, si es mala idea utilizar una clase estática.

Por lo tanto, se me ocurrió modularizar aún más y, por ejemplo, crear una clase llamada EffectTypeChecker que únicamente incluya aquellos flags que revisan si un efecto es de un determinado tipo, teniendo una única responsabilidad que sería la de checkear los tipos (de antemano no sé si está bien comentar explícitamente mi idea).

En mi opinión dicha clase si facilitaría entender el código al hacer los scripts más cortos y con responsabilidades más claras, además de que el nombre de la clase es suficientemente autoexplicativo como para que se entienda cuál es la responsabilidad de la clase de la cual se está llamando la flag.

RodrigoToroIcarte commented 1 week ago

Igual, ten cuidado con tener atributos static porque pueden matar los test cases (ver https://github.com/franciscogazitua/IIC2113-2024/issues/41). Fuera de eso, me parece un buen plan :+1: