I modelli di dominio basati su ActiveRecord dovrebbero avere proprietà visibili? Perché o perché no?
La mia esperienza e gli studi mi hanno sempre portato a credere che le proprietà degli oggetti dovrebbero essere sempre protette e che i dati dovrebbero essere manipolati / accessibili solo attraverso i metodi. Questo assicura che se gli interni della classe devono essere refactored, altri oggetti che si basano su quell'oggetto non devono quindi essere nuovamente refactored.
Spesso vedo i modelli di dominio con proprietà pubblicamente visibili, tuttavia i modelli possono essere passati per dire oggetti di visualizzazione che accedono direttamente a tali proprietà durante la costruzione della vista. Ho sempre pensato che questa sia forse l'unica eccezione alla regola sopra menzionata, perché altrimenti dovresti fondamentalmente creare getter e setter per oggetti come la vista da usare, o qualche altra soluzione dal suono altrettanto problematico. Forse mi sbaglio su questo? Vorrei ricevere un feedback sull'argomento.