Lo sosterrò seguendo le seguenti linee:
- Perché esattamente il tuo metodo restituisce più valori? Di che tipo di coesione stiamo parlando - quei valori dovrebbero essere effettivamente campi di una singola classe, o sono semplicemente restituiti per coincidenza con lo stesso metodo, ma per il resto non correlati? Se è il secondo, dovresti prendere in considerazione la possibilità di dividere il metodo in due metodi, piuttosto. Modifica: usa il tuo giudizio qui; a volte un tipo di coesione "casuale" può essere l'opzione migliore. Un'altra opzione consiste nell'usare un costrutto pair o tuple, sebbene in OOP, queste non sono solitamente viste nelle API pubbliche (alcune eccezioni degne di nota sono collezioni standard, ecc.)
- Se i valori meritano di formare una classe, probabilmente sconsigliamo di usare una classe interiore. Le classi interne vengono in genere utilizzate come dettagli di implementazione interna, che sono nascoste dall'esterno. C'è qualche ragione per cui questo risultato non dovrebbe essere una classe "in piena regola", a pieno titolo?
- Oltre a contenere i dati, quali operazioni sono applicabili a questa nuova classe? Nella progettazione orientata agli oggetti, si desidera avere il comportamento correlato vicino ai dati rilevanti (che sembrano essere anche le tue intenzioni). Il metodo a cui ti riferisci di non vivere in questa classe è piuttosto?
Per riassumere, vedrei se posso trasformare questo "oggetto dati" in una classe a tutti gli effetti con dati e comportamento. Come commento aggiuntivo, potresti voler rendere la classe immutabile, dal momento che il suo stato è impostato una volta. Renderlo immutabile ti aiuterà a prevenire che venga impostato in modo errato, o modificato in seguito (ad esempio, qualcuno che imposta uno dei campi su null e lo passi avanti).
Modifica: come correttamente sottolineato da Patkos Csaba, il principio applicato qui è il Principio della singola responsabilità ( SRP ) - la classe che stai cercando di creare dovrebbe avere una sola responsabilità (definita come una ragione per cambiare ). Questa linea guida di progettazione dovrebbe aiutarti a capire se i tuoi due campi appartengono o meno a una singola classe. Per seguire l'esempio di Wikipedia, la tua classe potrebbe essere vista come un tipo di rapporto, nel qual caso è conforme a SRP, ma è difficile commentare senza ulteriori informazioni.