The best practice of the class variable is to define as private
and provide the public methods access so that the data will be safe
declaring provate variable is always good as long as you dont need to restrict the scrope at maximum level.
providing setter method for private member is like exposing to outer world.
so, unless you need to change private variable value, you can use public/protected getter but setter with care!