Contesto: Studente che lavora attraverso il design di classe nel progetto personale / laterale per l'estate. Non ho mai scritto nulla implementato da altri o ho dovuto mantenere il codice. Cercando di massimizzare l'incapsulamento e immaginando cosa renderebbe il codice facile da mantenere.
Concetto: Progetto di classe Tight / Loose in cui Tight e Loose si riferiscono ai modificatori e ai costruttori di accesso.
Tight: inizialmente, tutto, compresi i setter, è privato e non viene fornito un costruttore no-arg (solo un costruttore completo).
Largo: non stretto
Eccezioni: ovvio come toString
Ragionamento: Se il codice, all'inizio, è stretto, allora dovrebbe essere garantito che le modifiche, in relazione all'accesso / creazione, non dovrebbero mai danneggiare le implementazioni esistenti. L'allentamento del codice avviene in modo incrementale e deve essere pensato, giustificato e sicuro (validato).
Vantaggio: Il codice di implementazione esistente non dovrebbe interrompersi se le modifiche vengono apportate in seguito.
Costo: Prende più tempo per creare.
Poiché questo è il mio modo di pensare, spero di ricevere un feedback sul fatto che dovrei spingere a lavorare in questo modo. Buona idea o cattiva idea?