Лучшее имя для массива, индексированного по идентификатору с логическим значением
-
03-07-2019 - |
Вопрос
Я становлюсь одержимым лучшими именами для массивов и переменных, которые я использую, я ищу слова в тезаурусе, словаре и т.д..
Итак, я пытаюсь дать имя этому массиву / структуре:
$nameMe = array(
'392' => TRUE,
'234' => TRUE,
'754' => TRUE,
'464' => TRUE,
);
и он используется для проверки, имеет ли этот идентификатор определенное свойство, например
if(isset($name[$id])) {
doSomething();
}
Проблема в том, что я получаю действительно длинные имена переменных, такие как
$propertyNameArrayIdIndexed
Есть какие-нибудь идеи о том, как я могу лучше назвать эту конкретную функцию array?или лучшие имена в целом
Решение
$hasProperty[$id]
или
$isSomething[$id]
Что именно представляет собой это свойство?
$isOdd[$id]
$isWriteable[$id]
$hasAssociatedFile[$id]
Другие советы
Нет ничего плохого в длинных именах переменных, если они описывают, что делает переменная, а не то, как она объявлена или определена.
Я бы убрал "Массив" из имен переменных.
Функция, которая использовала массив, может быть названа примерно так:
Доступен ли propertyavailable?($id)
или просто
Доступен ли?($id)
при правильной инкапсуляции.
Таким образом, соответствующая структура данных для запроса может быть названа
$Доступные идентификаторы
Называйте переменные по их "роли" (в смысле UML), а не по их типу.Таким образом, правильное имя переменной должно во многом зависеть от того, где и как она используется.Простого знания типа структуры данных недостаточно, чтобы дать ей подходящее название.Итак, предположим, что у вас есть перечисление свойств, каждое из которых может быть отображено в виде значка.Я бы опустил любое указание типа и объявил бы это что-то вроде Set<Property> displayableIcons
.
Даже если вы используете венгерскую нотацию, фактический тип не должен быть частью имени, но какой-нибудь определитель типа или указание неофициального подтипа было бы в порядке вещей, например String b64JpgMugshot
.
Вы хотите, чтобы ваш код читался как можно более простым английским языком.На простом английском языке в итоге получилось бы что-то вроде;
Если машина красная Делайте то же самое, что и в красной машине
Поэтому я рекомендую избегать введения ненужных компьютерных терминов ("массив", "свойство", "индекс" и т.д.) В именование переменной.Ваш язык программирования навязывает вам "isset".Это прекрасно, это дает понять, что у вас есть массив логических значений, и означает, что вы можете просто сказать;
if( isset(красный[car_idx])) dosomething();
Краткие сведения:Я думаю, что массив должен быть назван просто как свойство, которое вы пытаетесь протестировать.Если имя свойства является приятным прилагательным на английском языке, которое либо применимо к существительному, либо нет, логическая природа массива очевидна даже без isset().Так просто;
Красный[], Продолговатый[], Большой[]
Не isRed[], IsOblong[], IsLarge[], потому что лишнее "Is" в дополнение к тому, что есть в isset(), является избыточным.
propertyNameable, является propertynameable.
будет ли ваш массив содержать только true
?Если это так, я бы посоветовал изменить вашу структуру данных на что-то вроде этого:
$availableIds = array(392, 234, 754, 464);
и тогда ваш if
утверждения гораздо более осмысленны:
if (in_array($myId, $availableIds)) { ... }
Я просто использую dah[].
Я бы согласился с другими комментаторами в том, что в вопросе, похоже, отсутствует надлежащий контекст для правильного краткого именования, но может сработать что-то общее, например able['foo'], enabled ['bar'] или ready ['ack'].