À mon avis, les variables d'instance ne sont nécessaires que lorsque les données seront utilisées à travers les appels.
Voici un exemple:
myCircle = myDrawing.drawCircle(center, radius);
Maintenant, imaginons que la classe myDrawing utilise 15 fonctions d'assistance pour créer l'objet myCircle et chacune de ces fonctions aura besoin du centre et du rayon. Ils ne doivent toujours pas être définis comme variables d'instance de la classe myDrawing. Parce qu'ils ne seront plus jamais nécessaires.
D'autre part, la classe myCircle devra stocker à la fois le centre et le rayon en tant que variables d'instance.
myCircle.move(newCenter);
myCircle.resize(newRadius);
Pour que l'objet myCircle sache quel est son rayon et son centre lorsque ces nouveaux appels sont effectués, ils doivent être stockés en tant que variables d'instance, et pas seulement transmis aux fonctions qui en ont besoin.
Donc, fondamentalement, les variables d'instance sont un moyen de sauvegarder "l'état" d'un objet. Si une variable n'est pas nécessaire pour connaître l'état d'un objet, alors ce ne devrait pas être une variable d'instance.
Et comme pour tout rendre public. Cela pourrait vous faciliter la vie sur le moment. Mais il reviendra vous hanter. Ne vous en faites pas.