2010-02-12 11 views
47

Ho un java.util.Map che esegue il mapping da un nome logico a un set di parametri da utilizzare con quel nome.Come dovrei nominare un java.util.Map?

Map<String,Parameters> howShouldINameThee = ...; 

Qual è il nome migliore per questa mappa?

Devo andare semplice e chiamare semplicemente questo parameters o parametersMap?

Sono incluse le informazioni sulla chiave nel nome come paramtersByName in modo che l'utilizzo della chiave String sia più evidente?

+0

Sono stupito che questa domanda non sia stata chiusa in quanto basata principalmente sull'opinione pubblica (non che la chiuderei, ma queste sono le regole di StackOverflow). –

risposta

20

Tendo a qualcosa come parametersByName per non lasciare dubbi su quale sia il contenuto dello Map. Non sai mai quando dovrai rivedere il codice che non hai guardato da molto tempo.

In Java, trovo non necessario includere il nome della struttura dati (come) poiché la digitazione è esplicita.

+0

L'ultima frase è corretta per Maps, ma non necessariamente per elenchi, set, ecc. –

63

Una mappa mappa qualcosa da a altro.
Mi piace usare nomi come uidToPerson. "Per" essere il modo più breve e non ambiguo che posso immaginare per mostrare che ho una mappa.

Modifica:
Aggiungo che preferisco avere la mappa denominata in questo modo, perché "chiave" e "valore" appaiono in quell'ordine nel nome. Al contrario di valueByKey. Nelle operazioni di mappatura, la chiave viene prima. È put(key, value) o get(key) che fornisce un valore.

Ovviamente si tratta di preferenze personali.

+0

Io uso questa convenzione, ma non sono sicuro di come mappare una mappa di mappe ... –

+0

@CarlPritchett piuttosto insolito per me, ma cosa a proposito di fooToBarToBaz? Oppure bazByBarByFoo ... –

+0

@PaoloFulgoni Quindi è un fooToBar -> Baz o foo -> BarToBaz? Ancora ambiguo ... –

1

Nelle mie app ci sarebbero molti tipi di parametri.

Ad esempio, in GAE, quando è necessario estrarre i parametri di richiesta http in un modulo serializzabile, denominare la mappa httpRequestParameters o httpReqParams. sessionAttrs, per esempio.

Per GWT RPC, hash del parametro client-server, dovrei chiamarlo client2ServerParams o clnt2SrvrParms e denominare la controparte server2clientParams o srvr2ClntParms.

In openid consumer, vorrei nominare la mappa, consumerAuthRequests o redirectFormParameters e il suo controparte providerResponses.

Nella mappa dell'ingresso riformattato Argomenti principali, lo chiamerei inputArgs.

Nei miei casi, httpRequestParametersBy nome, client2ServerParamsByName, consumerAuthRequestsByName, inputArgsByName o inputArgValueByKey, ecc sarebbe ridondante e troppo a lungo perché vorrei sempre sapere che la chiave della mappa è un "nome" in ogni caso. Mi limito ad assicurarmi che il nome sia plurale per darmi l'impressione che si tratti di una collezione.

L'eccezione a questa pratica è quando la chiave non è un nome ma un oggetto di quanto non nominerei la mappa come vehicleByDriver, projByMgr, toxicFoodListByAnimal.

7

In realtà rispondi tu stesso alla domanda.

Qual è il nome migliore per questa mappa?

Si desidera mappare la mappa su un nome, quindi pronunciare "nome per mappa" !!

Questa dovrebbe essere la convenzione di denominazione, a mio parere: valueForKey.

Con gli altri suggerimenti keyToValue e valueByKey, sento che è necessario aggiungere la parola Map alla fine, in questo modo: keyToValueMap, valueByKeyMap. Quando si utilizza Per è evidente dalla lingua che si tratta di una mappatura.

+0

IMO, posizionando il valore per primo (sia in valueForKey che valueByKey) rende più evidente il tipo che stai recuperando. Come valueForKey.get (chiave) fornisce il valore, che è la prima cosa che leggo durante la scansione. – hubatish

Problemi correlati