Recentemente abbiamo aggiornato a PMD 6.0.0 e stiamo ottenendo diverse classi contrassegnate come "Classi di dati"? Sostiene che rompe l'incapsulamento e crea un design fragile (comprendo che questo sito ha un'opinione diversa ).
Diciamo che il nostro team decide di procedere e di rifattorizzare la classe dati, invece di ignorare la regola PMD. Purtroppo, la documentazione di PMD per la regola non mi è chiara.
Refactoring a Data Class should focus on restoring a good data-behaviour proximity. In most cases, that means moving the operations defined on the data back into the class. In some other cases it may make sense to remove entirely the class and move the data into the former client classes.
Non capisco cosa sia "buona prossimità dati-comportamento" o cosa siano "le precedenti classi cliente". Ad esempio, abbiamo qualcosa di simile:
public class Person {
private String name;
private List<String> formerNames;
private List<Food> favoriteFoods;
//getters and setters
}
Come farei per refactoring questa classe di dati, come raccomanda PMD?
Mi piacerebbe concentrarmi su quale sarebbe il tipo di refactoring, piuttosto che discutere se la regola è buona o no. Al momento, non sappiamo se vogliamo consentire questa regola o escluderla.