wollok icon indicating copy to clipboard operation
wollok copied to clipboard

Reporte incorrecto de variable no utilizada

Open npasserini opened this issue 6 years ago • 9 comments

Creo que el chequeo de usos de variables está mirando sólo la propia clase y no las subclases

image

npasserini avatar Nov 03 '18 20:11 npasserini

si Materia fuese una clase concreta, el warning esta bien...

El sáb., 3 nov. 2018 a las 17:24, Nico Passerini ([email protected]) escribió:

Creo que el chequeo de usos de variables está mirando sólo la propia clase y no las subclases

[image: image] https://user-images.githubusercontent.com/4633913/47957018-4bce6380-df8d-11e8-86ef-8233cd10ffdb.png

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/uqbar-project/wollok/issues/1554, or mute the thread https://github.com/notifications/unsubscribe-auth/ALMbm7VKHKQWsqS0ACN7M9sOGvma_jkKks5urfuCgaJpZM4YM-5O .

lspigariol avatar Nov 05 '18 18:11 lspigariol

Puede ser, pasa que al día de hoy no es posible determinar si Materia es concreta o abstracta.

npasserini avatar Nov 05 '18 19:11 npasserini

por eso mismo, me parece mas prudente ahora dejarlo así.

cuando haya una manera de determinar si la clase es abstracta (para mi lo mas facil y expresivo es que el programador lo declare) se podrá darle mayor precision al warning.

El lun., 5 nov. 2018 a las 16:53, Nico Passerini ([email protected]) escribió:

Puede ser, pasa que al día de hoy no es posible determinar si Materia es concreta o abstracta.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/uqbar-project/wollok/issues/1554#issuecomment-436012448, or mute the thread https://github.com/notifications/unsubscribe-auth/ALMbm8RNmatUd3Sfzs9L0udrry3ztDrmks5usJcbgaJpZM4YM-5O .

lspigariol avatar Nov 06 '18 18:11 lspigariol

No me parece mal como warning, coincido con Lucas e incluso a mí me hace un poco de ruido querer reutilizar solo una definición de variable y que no haya comportamiento en la superclase que se pueda aprovechar.

fdodino avatar Nov 08 '18 03:11 fdodino

Mmmmm, pero estás tomando una decisión de diseño muy fuerte sobre todos los programas posibles "no puedo poner nunca una variable en la superclase salvo que tenga código en la superclase que la use, si no esa variable corresponde a las subclases". Entendería que "no es criterio suficiente" para decidir usar herencia, pero bien puede pasar que yo tengo una jerarquía de herencia, y en ese contexto hay una variable a la que le pase eso, no justifica la herencia, sólo aprovecha su existencia.

El código del ejemplo es interesante al respecto: una materia pertenece a una carrera. Hay diferentes tipos de materias, la materia no tiene mucha lógica, las subclases tienen lógica para decidir si podés cursarla o no en función de diferentes criterios, alguno usa la carrera, tal vez otros no. Son decisiones para mí independientes a) Modelado de datos, la materia pertenece a una carrera. b) Luego en algún caso particular se usa ese dato.

Entiendo, sí, que si en ningún caso se usara la carrera, tal vez la materia podría no tener ese dato, y podría pasar que la carrera conozca sus materias, qué se yo. Pero no me creo que si tengo 3 tipos de materia, todas "pertenecen a una carrera" pero sólo dos de las tres la usan efectivamente en su código, uno modelaría poner la carrera en las subclases, sólo en las que la necesitan, repetido en varias si hace falta, ¿en lugar de ponerlo en la superclase?

De hecho, si yo pusiera en la superclase una property, el IDE no se quejaría. Si la uso en el código sólo en un getter, nadie se quejaría. Si ese getter se usa sólo en una de las subclases, nadie se quejaría. Todos esos modelos tienen las mismas fallas que el del ejemplo, sin embargo son aceptados.

Y en última instancia, incluso me animo a bancar la herencia "sólo de variables". Dejame explicarme: claro que sería imbécil hacer qué dos cosas que no tienen relación enter sí tengan una superclase sólo para "reutilizar" una variable que justo tiene el mismo nombre. Pero si yo tengo 3 cosas que son conceptualmente tres formas de lo mismo y resulta que además tienen algunos datos en común, aunque justo no hay "código" que compartir. ¿Qué sentido tiene evitarme la superclase y repetir la definición de esa estructura de datos tres veces, cuando incluso conceptualmente son conceptos relacionados?

Yo creo que la decisión de usar herencia o no, tiene que estar dada fundamentalmente por la similaridad de conceptos, y el IDE no tiene la capacidad para determinar eso, así que no podemos decidir si estuvo bien o mal usada.

npasserini avatar Nov 08 '18 13:11 npasserini

ok, me bajo de dejar el warning, prefiero dejar la libertad al docente de evaluar en cada caso concreto.

fdodino avatar Nov 08 '18 20:11 fdodino

Je, hoy me pasó lo mismo refactorizando Wollok en Xtend, solo que con @Accessors no se arregla:

image

fdodino avatar Nov 12 '18 12:11 fdodino

@npasserini @PalumboN @lspigariol. Lo pongo como Ready to Develop haciendo la salvedad de quitar la validación por el momento. Si no hay consenso, deberíamos ponerlo en la columna Rainy Day Fund / Discuss.

fdodino avatar May 05 '19 03:05 fdodino

Es para mirarlo en relacion a la discusion sobre la explicitacion de abstract en las clases

El dom., 5 may. 2019 a las 0:58, Fernando Dodino ([email protected]) escribió:

@npasserini https://github.com/npasserini @PalumboN https://github.com/PalumboN @lspigariol https://github.com/lspigariol. Lo pongo como Ready to Develop haciendo la salvedad de quitar la validación por el momento. Si no hay consenso, deberíamos ponerlo en la columna Rainy Day Fund / Discuss.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/uqbar-project/wollok/issues/1554#issuecomment-489387490, or mute the thread https://github.com/notifications/unsubscribe-auth/ACZRXG2GNMX3DGIM3D5BX6TPTZLOLANCNFSM4GBT5ZHA .

lspigariol avatar May 06 '19 15:05 lspigariol