Лучшее имя для массива, проиндексированного по id с логическим значением - PullRequest
2 голосов
/ 15 октября 2008

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

Итак, я пытаюсь назвать этот массив / структуру:

$nameMe = array(
    '392' => TRUE,
    '234' => TRUE,
    '754' => TRUE,
    '464' => TRUE,
);

и используется для проверки того, имеет ли этот идентификатор определенное свойство, например

if(isset($name[$id])) {
    doSomething();
}

Проблема в том, что я получаю действительно длинные имена переменных вроде

$propertyNameArrayIdIndexed

Есть идеи, как мне лучше назвать эту функцию массива? или лучше имена вообще

Ответы [ 9 ]

4 голосов
/ 15 октября 2008
$hasProperty[$id]

или

$isSomething[$id]

Что такое собственность точно?

$isOdd[$id]
$isWriteable[$id]
$hasAssociatedFile[$id]
2 голосов
/ 15 октября 2008

Я бы отбросил "Массив" из имен переменных.

Функция, которая использовала массив, может быть названа примерно так:

IsPropertyAvailable? ($ ID)

или просто

IsAvailable? ($ ID)

при правильной инкапсуляции.

Таким образом, связанная структура данных для запроса может быть названа

$ availableIds

2 голосов
/ 15 октября 2008

Нет ничего плохого в длинных именах переменных, если они описывают, что делает переменная, а не как она объявлена ​​или определена.

1 голос
/ 15 октября 2008

Называйте переменные по их «роли» (в смысле UML), а не по их типу. Таким образом, правильное имя переменной должно очень сильно зависеть от того, где и как она используется. Простого знания типа структуры данных недостаточно, чтобы дать ему подходящее имя. Итак, скажем, что у вас есть перечень свойств, каждое из которых может быть отображено в виде значка. Я бы пропустил любое указание типа и объявил бы что-то вроде Set<Property> displayableIcons.

Даже если вы используете венгерскую нотацию, фактический тип не должен быть частью имени, но некоторый квалификатор типа или указание на неформальный подтип будет в порядке, например String b64JpgMugshot.

1 голос
/ 15 октября 2008

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

Если машина красная Занимаюсь красной машинкой

Поэтому я рекомендую избегать введения ненужных вычислений («массив», «свойство», «индекс» и т. Д.) В именование переменной. Ваш язык программирования навязывает вам "isset". Это хорошо, это проясняет, что у вас есть массив логических значений и означает, что вы можете просто сказать:

if (isset (красный [car_idx])) DoSomething ();

Резюме: я думаю, что массив должен быть назван просто как свойство, которое вы пытаетесь проверить. Если имя свойства - хорошее прилагательное английского языка, которое относится к существительному или нет, логическая природа массива очевидна даже без isset (). Так просто;

красный [], продолговатый [], большой []

Not IsRed [], IsOblong [], IsLarge [], потому что дополнительный «Is» в дополнение к тому, что в isset (), является избыточным.

0 голосов
/ 15 октября 2008

Я бы согласился с другими комментаторами в том, что у вопроса, похоже, отсутствует надлежащий контекст для правильного краткого именования, но может работать что-то общее, например, способный ['foo'], разрешенный ['bar'] или готовый ['ack'].

0 голосов
/ 15 октября 2008

Я просто использую dah [].

0 голосов
/ 15 октября 2008

Ваш массив будет содержать только true? Если это так, я бы сказал, измените вашу структуру данных на что-то вроде этого:

$availableIds = array(392, 234, 754, 464);

и тогда ваши if утверждения будут гораздо более значимыми:

if (in_array($myId, $availableIds)) { ... }
0 голосов
/ 15 октября 2008

propertyNameable, IspropertyNameable.

...