2010-02-12 22 views
47

Tengo un java.util.Map que mapea desde un nombre lógico a un conjunto de parámetros para usar con ese nombre.¿Cómo debería nombrar un java.util.Map?

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

¿Cuál es el mejor nombre para este mapa?

¿Debo hacerlo simple y simplemente llame a este parameters o parametersMap?

¿Incluyo información sobre la clave en el nombre como paramtersByName para que la forma de usar la clave String sea más obvia?

+0

Me sorprende que esta pregunta no haya sido cerrada por ser principalmente basada en opiniones (no es que la cerrara, pero estas son las reglas de StackOverflow). –

Respuesta

20

Tiendo hacia algo como parametersByName para no dejar ninguna confusión sobre cuáles son los contenidos de Map. Nunca se sabe cuándo tendrá que revisar el código que no ha mirado en mucho tiempo.

En Java, no es necesario incluir el nombre de la estructura de datos (como parametersByNameMap) ya que la escritura es explícita.

+0

Su última frase es correcta para Maps, pero no necesariamente para listas, conjuntos, etc. –

63

Un mapa mapea algo a algo más.
Me gusta usar nombres como uidToPerson. "A" es la forma más breve e inequívoca en que puedo pensar para mostrar que tengo un mapa.

Edit:
Agregaré que prefiero que el mapa se llame así, porque "clave" y "valor" aparecen en ese orden en el nombre. A diferencia de valueByKey. En las operaciones de mapeo, la clave es lo primero. Usted put(key, value) o get(key) que da un valor.

Por supuesto, esto es una cuestión de preferencia personal.

+0

Uso esta convención, pero no estoy seguro de cómo asignar un mapa de mapas ... –

+0

@CarlPritchett bastante inusual para mí, pero ¿qué sobre fooToBarToBaz? O bazByBarByFoo ... –

+0

@PaoloFulgoni ¿Así que es un fooToBar -> Baz o foo -> BarToBaz? Aún ambiguo ... –

1

En mis aplicaciones habría bastantes tipos de parámetros.

Por ejemplo, en GAE, cuando necesito extraer los parámetros de solicitud http en una forma serializable, le doy el nombre httpRequestParameters o httpReqParams. sessionAttrs, por ejemplo.

Para GWT RPC, hash de parámetro de cliente a servidor, lo llamaría client2ServerParams o clnt2SrvrParms y nombraría la contraparte server2clientParams o srvr2ClntParms.

En consumidor abierto, yo nombraría el mapa, consumerAuthRequests o redirectFormParameters y su contraparte providerResponses.

En el mapa de entrada reformateada Argumentos principales, lo llamaría inputArgs.

En mis casos, httpRequestParametersBy nombre, client2ServerParamsByName, consumerAuthRequestsByName, inputArgsByName o inputArgValueByKey, etc sería redundante y demasiado tiempo, porque yo siempre sé que la clave del mapa es un "nombre" de todos modos. Solo me aseguro de que el nombre sea plural para darme una idea de que es una colección.

La excepción a esta práctica es cuando la clave no es un nombre sino un objeto de lo que yo llamaría el mapa como vehicleByDriver, projByMgr, toxicFoodListByAnimal.

7

En realidad, usted mismo responde la pregunta.

¿Cuál es el mejor nombre para este mapa?

¡Quieres asignar tu mapa a un nombre, por lo que dices 'nombre para el mapa'!

Esa debería ser la convención de nomenclatura, en mi opinión: valueForKey.

Con las otras sugerencias keyToValue y valueByKey, siento que necesita agregar la palabra Map al final, como esta: keyToValueMap, valueByKeyMap. Cuando usa para, es evidente por el lenguaje que es un mapeo.

+0

IMO, colocando primero el valor (ya sea en valueForKey o valueByKey) hace que el tipo que está recuperando sea más obvio. Como valueForKey.get (key) da el valor, que es lo primero que leo al escanear. – hubatish

Cuestiones relacionadas