Подтвердить что ты не робот

Каково значение начальных констант с "k"?

Я преподаю себя Objective-C, и я заметил во многих книгах и примерах использование "k" и верблюжьего корпуса в постоянном определении, например.

#define kMyConstant 0

Каково значение "k"? Является ли это уникальным для стиля Objective-C, или общим для C в целом? Почему отклонение от (что я всегда считал лучшей практикой) стиль K_MY_CONSTANT?

Спасибо.

4b9b3361

Ответ 1

Ранее упоминалось в вопросе SO, Нижний регистр "k" в Cocoa.

Это общая нотация программирования не специфичный для Objective-C (т. Венгерская нотация), а "k" означает "постоянный".

Если вы посмотрите на кеш Google рекомендаций Google для Objective-C, вы можете видеть, что они включали его в свой стиль:

Имена констант (#defines, enums, const локальные переменные и т.д.) должны начинаться с нижнего регистра k, а затем использовать смешанный регистр для разграничения слов, т.е. kInvalidHandle, kWritePerm.

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

Но с тех пор он был удален в live version документа. Следует отметить, что он идет против Официальных правил кодирования для Cocoa от Apple.

Ответ 2

Все колпачки (как в K_MY_CONSTANT) обычно обозначают макрос - не обязательно константу. Обычно важно, чтобы макросы выделялись, потому что они склеивали все пространства имен.

Соглашение 'k' используется (но не универсально) для не-макроконстантов в C/С++ и, возможно, для других языков. Я подозреваю, что "k" используется, потому что "c" уже используется - либо обозначать имя класса (как в CString), либо переменную является счетчиком.

Ответ 3

KMyConstant вернётся к очень старым дням программирования Mac (80-х/90-е годы "очень старые" ). Это был стандартный Apple, и многие программисты Mac также использовали; это заменило определения типа MY_CONSTANT.

Я бы предположил, что авторы, которых вы читаете, были программистами Mac Pascal/C для старого Mac Toolbox до того, как были программистами NeXT/ Cocoa. Библиотеки Mac раньше назывались "Toolbox" - это был набор API и библиотек, которые со временем превратились в Carbon.

Я по-прежнему использую kMyConstant; диски моей старой школы Unix программист коллег орехов.: -)

Ответ 4

Я думаю, что использование ведущего "k" связано с тем, что все языки произносят его как жесткий согласный и, таким образом, он напоминает людям о произношении английского языка "constant": -)

Никакие зарезервированные слова не начинаются с k, поэтому это проще в качестве цели поиска.

В качестве альтернативы, из графического аспекта, как ведущего символа, он обеспечивает очень четкий флаг перед остальной частью имени. Ведущий "c" менее очевиден и может использоваться для обозначения ролей (например, в венгерской нотации) или классов (если на языке, нечувствительном к регистру).

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