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