C'est une mauvaise idée de faire varier les règles de résolution de noms de variable, suivant qu'on soit en contexte static ou d'instance. Là on est en contexte statique et donc une seule variable pourrait être la bonne, mais ça ne change rien au fait qu'il existe plusieurs variables, et qu'il n'y a pas que le contexte statique dans la vie. Le développeur pourrait avoir eu la variable d'instance en tête, et ne pas avoir remarqué qu'il est en contexte statique. L'ambiguïté qui justifie un message d'erreur est toujours là et bien là.
Quand on est pas dans un contexte statique, préciser de quelle variable on parle est obligatoire et clarifie l'intention. Puisque le mécanisme est là et qu'on doit le faire en contexte d'instance, on est en droit de se demander qu'y aurait-il de bien à ne pas le faire en contexte statique.
Certes, le compilateur pourrait toujours décider de choisir la seule variable acceptable. Mais le programmeur, c'est une autre histoire.
Partager