Context:Student working through Class design in personal/side project for Summer. I've never written anything implemented by others or had to maintain code. Trying to maximize encapsulation and imagining what would make code easy to maintain.Concept:Tight/Loose Class design where Tight and Loose refer to access modifiers and constructors.Tight: initially, everything, including setters, is private and a no-arg constructor is not provided (only a full constructor).Loose: not TightExceptions: the obvious like toStringReasoning:If code, at the very beginning, is tight, then it should be guaranteed that changes, with respect to access/creation, should never damage existing implementations. The loosening of code happens incrementally and must be thought through, justified, and safe (validated).Benefit:Existing implementing code should not break if changes are made later.Cost:Takes more time to create.Since this is my own thinking, I hope to get feedback as to whether I should push to work this way.  Good idea or bad idea?
initial Class design: access modifiers and no-arg constructors
java;design;maintenance;encapsulation
Keep your public API a small as possible. Don't expose setters to class members unless you absolutely have to. Don't implement features you think may become useful in the future (this often leads to feature bloat).