Як я повинен назвати java.util.Map? [зачинено]


77

У мене є java.util.Mapщо перетворюється з логічного імені на набір параметрів для використання з цим іменем.

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

Яка найкраща назва для цієї карти?

Чи варто мені просто і просто зателефонувати parametersабо parametersMap?

Чи включаю я в ім'я інформацію про ключ, наприклад, paramtersByNameщоб Stringзрозуміти , як використовувати ключ?

Відповіді:


99

Карта відображає що - то на що - то інше.
Я люблю використовувати імена типу uidToPerson. "Щоб" бути найкоротшим однозначним способом, я можу придумати, щоб показати, що я маю карту.

Редагувати:
Додам, що я вважаю за краще, щоб мапу називали таким чином, оскільки в назві в такому порядку відображаються "ключ" і "значення". На відміну від valueByKey. В операціях картографування ключ стоїть на першому місці. Ви put(key, value)або get(key)це дає значення.

Звичайно, це питання особистих уподобань.


1
Я використовую цю конвенцію, але я не впевнений, як скласти карту мап ...
Карл Притчетт,

@CarlPritchett досить незвичний для мене, але як щодо fooToBarToBaz? Або bazByBarByFoo ...
Паоло Фульгоні

@PaoloFulgoni То це fooToBar -> Baz або foo -> BarToBaz? Все ще неоднозначно ...
Карл Притчетт,

1
@CarlPritchett, якщо ви регулярно використовуєте хеш-карти як ключі, так, це буде проблемою. Я ніколи цього не робив і не бачив за 20 років кодування. Якщо це станеться, мені доведеться застосувати іншу конвенцію.
z5h

@ z5h правда! Але я більше думав про те, як легко читати. Я згоден, що нове ім'я було б краще.
Carl Pritchett

32

Я схильний до чогось подібного, parametersByNameщоб не залишати плутанини щодо того, що є змістом Map. Ви ніколи не знаєте, коли вам доведеться переглянути код, на який ви давно не дивились.

У Java я вважаю непотрібним включати ім'я структури даних (наприклад parametersByNameMap), оскільки введення явне.


Ваше останнє речення правильне для Карт, але не обов'язково для Списків, Наборів тощо
Вальтер Тросс

6
Як правило, поганою практикою є забруднення імен типами даних. Це зайве, погано грає з рефакторингами і шкодить читабельності, подовжуючи імена.
christopheml

14

Ви фактично відповідаєте на питання самі.

Яка найкраща назва для цієї карти?

Ви хочете зіставити свою карту з іменем, тому ви кажете "ім'я для карти" !!

На мою думку, це має бути конвенція про іменування: valueForKey .

З іншими пропозиціями keyToValue і valueByKey, я вважаю, що вам потрібно додати слово Map в кінці, наприклад: keyToValueMap, valueByKeyMap. Коли ви використовуєте For , з мови видно, що це відображення.


IMO, розміщуючи значення першим (будь то valueForKey чи valueByKey), робить тип, який ви отримуєте, більш очевидним. Як valueForKey.get (ключ) дає значення, яке є першим, що я прочитав під час сканування.
Hubatish

1

У моїх програмах було б досить багато типів параметрів.

Наприклад, у GAE, коли мені потрібно витягти параметри запиту http у серіалізовану форму, я називаю карту httpRequestParameters або httpReqParams. sessionAttrs, наприклад.

Для GWT RPC, хеш параметру клієнт-сервер, я б назвав його client2ServerParams або clnt2SrvrParms і назвав аналог server2clientParams або srvr2ClntParms.

У openid consumer я б назвав карту, customerAuthRequests або redirectFormParameters та її аналог providerResponses.

На карті переформатованого введення Основні аргументи я б назвав це inputArgs.

У моїх випадках httpRequestParametersBy name, client2ServerParamsByName, consumerAuthRequestsByName, inputArgsByName або inputArgValueByKey тощо будуть зайвими і занадто довгими, тому що я завжди знаю, що ключ карти в будь-якому випадку є "ім'ям". Я просто переконуюсь, що назва в множині, щоб зрозуміти, що це колекція.

Винятком із цієї практики є випадки, коли ключ - це не ім'я, а об'єкт, ніж я б назвав карту, як vehicleByDriver, projByMgr, toxicFoodListByAnimal.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.