wollok
wollok copied to clipboard
Reporte incorrecto de variable no utilizada
Creo que el chequeo de usos de variables está mirando sólo la propia clase y no las subclases
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 .
Puede ser, pasa que al día de hoy no es posible determinar si Materia es concreta o abstracta.
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 .
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.
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.
ok, me bajo de dejar el warning, prefiero dejar la libertad al docente de evaluar en cada caso concreto.
Je, hoy me pasó lo mismo refactorizando Wollok en Xtend, solo que con @Accessors no se arregla:
@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
.
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 .