На мій погляд, змінні екземпляра необхідні лише тоді, коли дані будуть використовуватися для дзвінків.
Ось приклад:
myCircle = myDrawing.drawCircle(center, radius);
Тепер дозволяє візуалізація класу myDrawing використовує 15 допоміжних функцій для створення об’єкта myCircle, і кожна з цих функцій потребуватиме центру та радіуса. Їх все одно не слід встановлювати як змінні екземпляра класу myDrawing. Тому що вони більше ніколи не будуть потрібні.
З іншого боку, класу myCircle потрібно буде зберігати як центр, так і радіус як змінні екземпляра.
myCircle.move(newCenter);
myCircle.resize(newRadius);
Для того, щоб об'єкт myCircle знав, яким є його радіус і центр, коли робляться ці нові виклики, їх потрібно зберігати як змінні екземпляра, а не просто передавати функціям, які їх потребують.
Отже, в основному, змінні екземпляра - це спосіб зберегти "стан" об'єкта. Якщо змінної не потрібно знати стан об'єкта, то вона не повинна бути змінною екземпляра.
А що стосується оприлюднення всього. Це може полегшити вам життя в даний момент. Але це повернеться переслідувати вас. Піз не робіть.