
Envoyé par
ponce
Je faisais cette chose parce que tu avais objecté "et si un noob écrit if(collection.size = ...)"
Alors oui ca arrive à tout le monde une fois l'an, mais de là à dire que ca arrivera plus souvent avec les propriétés car on fait plus d'affectation, je trouve ca irréaliste. Mais c'est pas grave, on est là pour enculer des mouches.
Le fait est que, l'oubli d'un caractère arrive à tout le monde, parce que l'on est fatigué, pressé ou distrait, et que ce n'est absolument pas un erreur de newbies.
Effectivement, il faut être newbies pour ne pas s'en apercevoir lorsque l'on est confronté à une erreur de ce type, mais, là intervient la principale différence entre une fonction size() constante et une propriété (RW) portant le même nom...
Avec la première le code
if(tab.size()=someUnsignedInt)
te renverra une erreur de compilation, alors que, avec la deuxième, le même code
if(tab.size=someUnsignedInt)
sera, non seulement accepté, mais aura, en plus, un comportement tout à fait différent.
Et, bien évidemment, tu peux n'en ressentir les effets que... tres loin de tout appel de la fonction dans laquelle tu aura placé ce test.
Or, si tu cherche la raison d'un comportement incohérent "à des kilomètres" de la cause, newbies ou pas, tu auras le plus grand mal à remarquer cette faute de frappe 
Oui, en fait il faut enlever le return. Ca devrait marcher ensuite. Et bonne soirée, j'ai encore du travail à faire, du genre à rendre Demeter malheureuse.
C'est bien pire que cela...
le concept de "copy and swap", ca te dis quelque chose
Partager