На мой взгляд, переменные экземпляра необходимы только тогда, когда данные будут использоваться при вызовах.
Вот пример:
myCircle = myDrawing.drawCircle(center, radius);
Теперь давайте представим, что класс myDrawing использует 15 вспомогательных функций для создания объекта myCircle, и каждой из этих функций потребуется центр и радиус. Они по-прежнему не должны устанавливаться как переменные экземпляра класса myDrawing. Потому что они никогда не понадобятся снова.
С другой стороны, класс myCircle должен будет хранить как центр, так и радиус в качестве переменных экземпляра.
myCircle.move(newCenter);
myCircle.resize(newRadius);
Чтобы объект myCircle знал, каковы его радиус и центр, когда эти новые вызовы выполняются, они должны храниться как переменные экземпляра, а не просто передаваться в функции, которые в них нуждаются.
Таким образом, переменные экземпляра - это способ сохранить «состояние» объекта. Если переменная не обязана знать состояние объекта, она не должна быть переменной экземпляра.
А что касается обнародования всего. Это может сделать вашу жизнь проще в данный момент. Но это вернется, чтобы преследовать вас. Пиз нет.