Assez commun en question, celui-ci. Le plus difficile, c'est de trouver les doublons.
Vous devriez vous efforcer pour la transparence référentielle. Ce que cela signifie est que, si j'ai une expression "e", je pourrais faire un val x = e
, et remplacez - e
avec x
. C'est la propriété que la mutabilité pause. Chaque fois que vous avez besoin pour rendre une décision de conception, pour maximiser la transparence référentielle.
En pratique, une méthode locale var
est le plus sûr var
qui existe, puisqu'il n'échappe pas à la méthode. Si la méthode est courte, même mieux. Si ce n'est pas le cas, essayez de le réduire par l'extraction d'autres méthodes.
D'autre part, une mutable collection a le potentiel d'évasion, même s'il ne le fait pas. Lors de la modification de code, vous pourriez souhaitez ensuite passer à d'autres méthodes, ou de le retourner. C'est le genre de chose qui brise la transparence référentielle.
Sur un objet (un champ), à peu près la même chose, mais avec plus de conséquences désastreuses. De toute façon l'objet de l'état et, par conséquent, la rupture référentielle de la transparence. Mais avoir une mutable collecte signifie que l'objet lui-même pourrait perdre le contrôle de qui de le changer.