Лучшее имя для массива, индексированного по идентификатору с логическим значением

StackOverflow https://stackoverflow.com/questions/203383

  •  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'].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top