Questa è una domanda che mi lascia perplessi sulla programmazione orientata agli oggetti. In alcuni linguaggi OOP (ad esempio C ++) una funzione membro può accedere a variabili private della classe senza restrizioni. Ciò significa che è possibile definire metodi che non accettano argomenti e modificano le variabili private. Non è considerata una cattiva pratica di programmazione? Un sacco di pensiero è andato su come gli argomenti delle funzioni possono essere passati per valore o riferimento e cosa ciò implica sulla complessità del programma.
Vorrei fare questa domanda di meno sull'opinione e più sui fatti. Consideriamo la dichiarazione goto. L'istruzione goto è stata deprecata come cattiva pratica di programmazione a favore della programmazione strutturata. Qualche dato oggettivo è entrato in questa decisione? Sembra intuitivo che goto sia problematico, ma esiste una base fattuale per la deprecazione? Sono stati studiati programmi, sondaggi condotti, ecc.?
Tornando alla mia domanda sulle funzioni dei membri, c'è una base obiettiva per rispondere a questa domanda? Le funzioni membro di una classe dovrebbero poter manipolare variabili non presenti nell'elenco degli argomenti? C'è stata una ricerca per determinare questa domanda? Esiste una branca della ricerca informatica che tenta di determinare le migliori pratiche nella progettazione del linguaggio sulla base di criteri oggettivi?
Grazie.