Что означает "uw" в начале имен переменных в примерах STM32?
Когда я читаю пример кода STM32, я вижу довольно много переменных, которые начинаются с uw
, Пример:
static __IO uint32_t uwLsiFreq = 0;
__IO uint32_t uwCaptureNumber = 0;
__IO uint32_t uwPeriodValue = 0;
__IO uint32_t uwMeasurementDone = 0;
У всего есть смысл или история позади этого. Что значит uw
значит здесь?
Пример источника: STM32Cube_FW_F2_V1.7.0/Projects/STM32F207ZG-Nucleo/ Примеры /IWDG/IWDG_Example/Src/main.c.
Ссылка для скачивания -> нажмите кнопку "Получить программное обеспечение" рядом с "STM32CubeF2".
2 ответа
Хорошо, я хотел бы опубликовать свой собственный, более полный ответ. Спасибо @njuffa за то, что он указал в комментарии ниже мои вопросы, что "Вероятно: uw
расшифровывается как "беззнаковое слово" в некоторой венгерской нотации: "Спасибо @PeterJ_01 за то, что он указал на то, что генеральный директор Stack Overflow имеет некоторые мнения по этому вопросу, и благодаря @Sigve Kolbeinson за то, что он указал в комментарии под ответом PeterJ_01, что генерального директора Stack Overflow зовут Джоэл Спольски (как показано в ссылке), он на самом деле не ненавидит венгерскую нотацию, а скорее просто огорчает ограниченную и искаженную форму ее [системного венгерского языка] на некоторое время, и для предоставив нам актуальную ссылку на статью, чтобы мы могли больше узнать и прочитать статью сами.
1. Вот мой вывод, чтобы ответить на мой вопрос:
uw
в начале многих примеров STM32 переменные, безусловно, должны логически означать "беззнаковое слово", где "слово" в данном случае составляет 32 бита. Знание этого добавляет много ясности, когда я читаю код, и устраняет некоторую путаницу в именах, поэтому я рад это знать.
В данном случае это тип использования венгерского языка Systems, который часто не рекомендуется использовать для языков с явными типами, таких как C и C++, поскольку он избыточен и не имеет большого значения. Сравните это с Apps Hungarian, который я опишу ниже, который Джоэл Спольски (генеральный директор Stack Overflow) решительно продвигает как способ помочь "неправильному коду выглядеть неправильно".
2. Вот некоторые дополнительные сведения (в основном о венгерской нотации), которые я узнал по пути от @Sigve и @njuffa через их комментарии и предоставленные ссылки:
Вы можете просто назвать этот раздел "что такое венгерская нотация в компьютерном программировании?"
- Венгерская нотация существует (я не знал об этом раньше) и относится к концепции добавления нескольких дополнительных символов в начале каждой переменной и / или имени функции для предоставления дополнительной информации о переменной или функции, такой как ее назначение его тип или тип возвращаемого значения.
- Случайно это ответило и на мой вопрос о соглашениях об именах FreeRTOS. Теперь я знаю! Они также используют [главным образом системы] венгерские обозначения. Вот несколько ссылок. Обратите внимание, что в первой ссылке вы увидите список всех венгерских обозначений во FreeRTOS. Эта нотация почти полностью является нотацией Systems Hungarian, но, возможно, она также использует немного нотации Apps Hungarian, когда они указывают имя файла, в котором функции и макросы определяются прямо внутри имени функции или макроса.
- Венгерская нотация имеет две основные формы: системы венгерские и приложения венгерские. Смотрите их различия здесь.
- Системный венгерский язык по сути является искажением первоначального намерения "венгерской" нотации, возникшей, когда его создатель, Чарльз Симони, ошибочно использовал слово "тип" вместо "вид" в своем описании этого ( источник). Первоначальная цель Чарльза состояла в том, чтобы закодировать дополнительную информацию в имена переменных, которая не присуща самому языку программирования. Тем не менее, нотация Systems Hungarian говорит в основном о том, чтобы хранить тип переменной в имени переменной. Пример:
unsigned long myVar
сейчас становитсяunsigned long ulMyVar
, Большинство людей, кажется, утверждают, что это либо ограниченное использование, либо совершенно бесполезное. Джоэл Сполкси не является сторонником этой формы венгерской нотации, как указано в его статье, но он настойчиво поддерживает Apps венгерский стиль. Другие мнения можно найти в разделе "Известные мнения" статьи Википедии здесь. - Apps Hungarian описывает концепцию хранения дополнительной информации в начале имени переменной, которая НЕ может быть легко выведена, например, используя
us
означать "небезопасно" иs
означать "безопасный путь". Многие люди либо чувствуют себя более нейтрально к этому методу, либо любят его и продвигают. И Джоэл Спольски (генеральный директор Stack Overflow), и Стив Макконнел считают эту идею хорошей и продвигают ее использование.
- Системный венгерский язык по сути является искажением первоначального намерения "венгерской" нотации, возникшей, когда его создатель, Чарльз Симони, ошибочно использовал слово "тип" вместо "вид" в своем описании этого ( источник). Первоначальная цель Чарльза состояла в том, чтобы закодировать дополнительную информацию в имена переменных, которая не присуща самому языку программирования. Тем не менее, нотация Systems Hungarian говорит в основном о том, чтобы хранить тип переменной в имени переменной. Пример:
Обратите внимание, вот полезный отрывок из статьи Джоэла:
Кто-то где-то читал статью Симони, где он использовал слово "тип", и думал, что он имел в виду тип, как класс, как в системе типов, как проверка типов, которую выполняет компилятор. Он не делал. Он очень тщательно объяснил, что именно он имел в виду под словом "тип", но это не помогло. Ущерб был нанесен.
Apps венгерский имел очень полезные, значимые префиксы, такие как "ix" для обозначения индекса в массиве, "c" для обозначения числа, "d" для обозначения разницы между двумя числами (например, "dx" означает "ширина"), и так далее.
В венгерских системах были гораздо менее полезные префиксы, такие как "l" для long и "ul" для "unsigned long" и "dw" для двойного слова, что на самом деле является "беззнаковым длинным". В Systems Hungarian единственное, что сказал вам префикс, это фактический тип данных переменной.
Это было тонкое, но полное неправильное понимание намерений и практики Симони...
(выделение добавлено)
Это означает слово без знака в этом соглашении об именах. Почти не используется сейчас. Но некоторые люди любят это, поскольку это показывает им, какой тип является переменной. Другие ненавидят утверждать, что это одна из худших привычек программирования (включая создателя переполнения стека). ИМО это не имеет значения