Obvious naming
Allow consumer to inject dependencies -> more open for extending, could make unit testing easier, as it decreases mocking tool dependencies.
Only expose publicly what is needed.
make use of the built in getter/setter found in many languages.
Consider how the functionality be extended, without having to change the class.
A class should have as few responsibilities as possible.
Your expectations