Какая у вас система, чтобы избежать столкновений при именовании ключевых слов? - PullRequest
4 голосов
/ 12 января 2009

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

Ответы [ 16 ]

7 голосов
/ 12 января 2009

Обычно я просто избегаю названия. Либо найдите другое имя, либо измените его немного - например, clazz вместо class в C # или Java. В C # вы можете использовать префикс @, но это ужасно:

int @int = 5; // Ick!
5 голосов
/ 12 января 2009

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

Например, если вы пишете систему, которая отслеживает студентов, и вы хотите, чтобы объект представлял их исследование в определенной области, то есть они взяли «класс» в чем-то, если вы не можете использовать термин непосредственно, или множественное число «классы», или альтернатива, такая как «исследования», вы можете найти более «измененный» вариант: studentClass, currentClass и т. д. или более высокую перспективу: «курсы», «курсКласс» или атрибут типа специфика: dailyClass , ночной класс и т. д.

Множество вариантов, вы должны просто предпочесть самый простой и очевидный, вот и все.

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

Paul.

4 голосов
/ 12 января 2009

Моя система не использует ключевые слова период!

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

(прилагательноеNoun) формат. то есть: personName вместо Name, где «Name» является ключевым словом.

2 голосов
/ 12 января 2009

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

import re
re.compile()

вместо:

from re import *
compile()

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

for fil in files:
    pass
2 голосов
/ 12 января 2009

Я просто использую более описательное имя. Например, «id» становится идентификатором, «string» становится «descriptionString» и т. Д.

1 голос
/ 12 января 2009

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

1 голос
/ 12 января 2009

Как указывалось ранее, либо измените класс на clazz в Java / C #, либо используйте в качестве префикса какое-нибудь подчеркивание, например

int _int = 0;
0 голосов
/ 09 ноября 2011

Прежде всего, большинство соглашений о коде предотвращает подобные вещи.

Если нет, я обычно добавляю описательный префикс или суффикс прозы:

the_class or theClass infix_or (prefix_or(class_param, in_class) , a_class) or_postfix

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

Заметьте, что самой предпосылкой вашего вопроса вы вводите двусмысленность, что плохо для читателя, будь то компилятор или человек. Даже если это обычай использовать класс, clazz или klass, и даже если этот обычай не настолько обычен, чтобы это был обычай: он берет слово word, точно описательное как слово, и искажает его, эффективно снимая точность w0rd в "Wrd". Кто-то привык к другому соглашению w_Rd, или язык может иметь несколько резких слов для ваших слов.

Большинство из нас могут сказать больше о вещах, чем "Flower", "House" или "Car", поэтому обычно есть что сказать о typeNames, decoratees, class_params, BaseClasses и typeReferences.

На этом заканчивается мой допуск к запутыванию личного кода:

Никогда (!!!) не полагайтесь на ограниченные или загадочные синтаксические правила, чтобы предотвратить конфликт имен с «ключевыми словами». (Не знаю ни одного компилятора, который позволил бы это, но в наши дни вы никогда не знаете ...).

Попробуй, и кто-нибудь будет ** тебя в этой работе, так что __rd, Word будет для тебя похож на TeX!

0 голосов
/ 26 марта 2009

Я перешел на язык, который вообще не ограничивает имена идентификаторов.

0 голосов
/ 13 января 2009

В Python общепринятым методом является добавление '_'

class -> class_
or -> or_
and -> and_

Вы можете увидеть это на примере модуля operator .

...