ProvincesByCountry no es lo suficientemente explícita, ya que suena como mapear países a provincias de uno a uno. Al acceder a ProvincesByCountry ["Alemania"] Me esperaba asumir que un valor es un objeto en lugar de una lista de objetos.
Mi patrón personal es similar:
[Plural of a noun describing the value]By[Singular of a noun describing the key]
Sin embargo, si un sustantivo que describe el valor es plural, por su naturaleza, entonces yo uso el postfix matrices, o listas, al igual que en Inglés se puede 't realmente "pluralizar" un plural. Yo personalmente siempre se adhieren a las matrices , independientemente de la aplicación real de IEnumerable o IEnumerable < T> que estoy usando, se que Lista, o matriz o lo que sea.
En su caso se convierte en:
ProvinceArraysByCountry
Explica lo que es con precisión científica.
Aplico esta regla recursivamente si hay diccionarios como valores. El orden de acceso va en reversa al orden de las palabras en el nombre.Imagine que agrega planetas:
ProvinceArraysByCountryByPlanet["Earth"]["Germany"][0] = "Bavaria"
ProvinceArraysByCountryByPlanet["Earth"]["Germany"][1] = "Rhineland-Palatinate"
Y finalmente, el último pequeño golpe aquí. Si dicho diccionario mapea las propiedades del objeto y los objetos mismos, entonces dejo fuera la palabra que describe el objeto en la sección clave. Esto es lo que quiero decir:
NodesByIndex[node.Index] = node; // - Do
NodesByNodeIndex[node.Index] = node; // - Don't
que utilizan este patrón incondicionalmente lo cual es bueno, ya que deja absolutamente ningún espacio para la conjetura. Con es que genera nombres bastante largos a veces. Pero no tengo idea de cómo tener siempre nombres explícitos, pero siempre cortos. Siempre tienes que comprometerte. Y es, por supuesto, una cuestión de gusto.
Este patrón no funciona (o al menos le rompería el cerebro) cuando las claves también son diccionarios o cuando tiene una lista de diccionarios de listas de diccionarios o alguna otra cosa loca y exótica. Pero no recuerdo haber tenido tantos niveles de anidación, así que estoy contento con eso.
Puede pensar en un diccionario como una función de mapeo o puede pensar en ello más específicamente como una función de hashing/búsqueda/índice. El mapeo es más general. Considera una función matemática que asigna Celsius a Fareheit, que podría llamarse ConvertCelsiusToFarenheit. "A" enfatiza que el espacio/conjunto de entrada es el foco. Y-By-X captura mejor que un diccionario es un tipo específico de mapeo que usa hash basado en conjunto. "Por" enfatiza que el espacio/conjunto de salida es el foco. Una clave no tiene valor a menos que desbloquee algo. Solo mi opinión, pero espero que ayude a dar una idea. – VoteCoffee
Otra nota rápida: desea capturar para qué sirve, no qué hace: un diccionario real es para buscar definiciones por palabras. Es cierto que asigna algunas palabras a sus definiciones, pero esto tampoco captura el intento. – VoteCoffee