Подтвердить что ты не робот

Как назвать HashMap в Java?

Это может быть глупый вопрос, но я никогда не нашел подходящего способа назвать переменную типа HashMap<K,V> в Java. Например, допустим, что у меня есть HashMap, где каждый кусок представляет собой пару <K,V>, где K - это String, представляющий "состояние", а V - это Integer, представляющий число округов, состояние есть.

Должен ли HashMap называться "mapStateCounty", "stateToCountyMap" и т.д.? Какой из них кажется логически более привлекательным и интуитивным, чтобы понять, не казавшись запутанным и многословным?

4b9b3361

Ответ 1

Мне нравится этот вопрос, потому что Java не разрешает доступ к карте с помощью оператора типа []. На других языках мы могли бы сказать такие вещи, как

numberOfCountiesIn["HI"]

или

countyCountOf["CA"]

или

numCountiesIn->{"MA"}

или (в Scala, это круто)

numCountiesIn("WA")

и снова и снова. Ни одно из них не работает на Java, из-за этого глупого слова get!

countyCounts.get("NY")

Действительно!

EDIT: Я на самом деле думаю, что countyCounts - лучший ответ (IMHO); Я просто утверждал, что необходимость get ограничивает один выбор.

Ответ 2

Я не верю, что в любом месте написано строгое правило, в котором говорится о том, как назвать вашу карту, поэтому, если вы придумаете правило, которое имеет смысл для вас (и ваших товарищей по команде), тогда это должно быть хорошо.

Лично мне нравится называть мои карты keyToValue или valueByKey.

Ответ 3

Я бы назвал его numCounties или countyCounts.

Ответ 4

Во-первых, избегайте помещать детали реализации в имя переменной, например. StateToCountyMap. Сегодня вы используете интерфейс Map, но завтра вы можете решить сохранить ваши данные в другом типе, и имя вашей переменной должно быть реорганизовано, иначе оно станет недействительным и вводит в заблуждение.

Ваши данные представляют собой ассоциацию состояния с его количеством округов, поэтому мой совет - назвать переменную как stateToNumberOfCounties. Ключевым моментом в этом имени является to, который обозначает, что эта переменная хранит ассоциацию, часть до которой является key, а часть после - value или values, которые связаны с соответствующим key, Также было бы нечетко обозначать переменную как stateToCountyNumber, потому что нельзя было определить, сохраняет ли она связь между состоянием и ее количеством округов или хранит одно число, которое представляет число состояний для ассоциаций графств, таким образом, вы имели бы чтобы идти взад и вперед в своем коде, чтобы проверить, имеет ли он тип Map или типа int.

Ответ 5

Что бы ни объясняло это лучше всего - в этом случае stateToCountyMap в порядке, иначе можно использовать countiesInStateMap.

Ответ 6

Я нашел отличный случай для countiesByState здесь:

valuesByKeys, как в командахByCaptains. Если вы будете включать в себя как ключ, так и ценность, это, по-видимому, лучше всего читается. На высоком уровне вы можете читать его как "команды", поэтому все, что было сделано на нем, выполняется в командах. Префикс "byCaptains" читается так, как он должен делать: менее значительный классификатор, следующий за командами, чтобы помочь кому-то понять структуру, если им нужно.

Это также позволяет вам получить доступ к значению в JSP с хорошей нотой countiesByState[myState].

Ответ 7

Мое мнение было бы иметь его countiesCountOfStateMap или просто countiesOfStateMap, так как мы будем получать графства, подсчитывая использование государства.

Было бы более значимым иметь это так, поэтому, когда новый человек смотрит в ваш код по крайней мере, он будет знать о том, что содержится в нем.

Но в конце концов, ваше решение иметь соответствующее имя и, как @tulskiy, назвал присвоение класса и переменной надлежащим образом одной из самых сложных вещей.

Ответ 8

Я бы назвал его mapStatesbyCountyCount, затем снова его имя переменной длины бит...

Ответ 9

Сохранение состояний и округов в этой переменной было бы путать с именем map - назовите его stateCountyHash или numCountiesByState