Convenzione di denominazione per ottenere un tipo di supporto primitivo? [chiuso]

1

Ho una classe che è supportata da un valore double , e mi chiedo dei nomi dei metodi accessor che preservano l'astrazione. Sulla base della mia esperienza in Java, sembrano esserci almeno due precedenti:

  • toDouble() , che rispecchia toString()

  • doubleValue() , simile a Double.doubleValue() e BigInteger.doubleValue()

Ho bisogno di accedere a questo valore per eseguire alcuni calcoli. Sarebbe più appropriato restituire un doppio valore come già detto o fornire metodi pubblici multiply() , add() , ecc.?

Esistono pratiche o precedenti comuni per una classe utilizzata in questo modo?

    
posta Rosa Richter 20.06.2015 - 21:54
fonte

2 risposte

5

Is there any documented preference, in Java, for either of these conventions?

La preferenza è che l'utente finale non abbia nessuna idea quale sia la primitiva di supporto per il tuo tipo. Questo è l'incapsulamento nella sua essenza.

Ora, se il tuo oggetto espone un'interfaccia per ottenere un double (indipendentemente da quale sia il tipo di dati di backup), o perché stai serializzando il tuo oggetto, o perché ha senso fornire quell'interfaccia, allora fallo. Ma la convenzione di denominazione deve concentrarsi specificamente su ciò che i dati sono (essere un modulo serializzato, secondi da unix epoch, ecc.) Non ciò che fa (serve come implementazione dettagli del tuo oggetto).

    
risposta data 20.06.2015 - 22:19
fonte
1

Affrontiamo questo:

Would it be most appropriate to return a double value as I've mentioned, or provide public multiply(), add(), etc. methods?

Dovrebbe detta classe sapere come moltiplicare e aggiungere? Sembra che tu stia realizzando un'implementazione della calcolatrice ... Direi che dipende in realtà da quale parte della calcolatrice stai costruendo questo. Se questo è il 'motore', dare i metodi di classe multiply() e add() può essere fattibile. Se questo rappresenta solo parte dell'input dell'utente (ad es. Un'istanza Value che include l'input String da tastiera di "2" , solo per restituire 2 come numero per il calcolo più tardi), allora forse vuoi differire tali operazioni al 'motore'.

    
risposta data 22.06.2015 - 09:35
fonte

Leggi altre domande sui tag