Что означает «uw» в начале имен переменных в примерах STM32? - PullRequest
0 голосов
/ 28 апреля 2018

Когда я читаю пример кода 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 ]

0 голосов
/ 30 апреля 2018

Хорошо, я бы хотел опубликовать свой более полный ответ. Спасибо @njuffa за то, что он указал в комментарии ниже на мои вопросы, что «Вероятно: uw означает« беззнаковое слово »в некотором роде Венгерская запись », благодаря @ PeterJ_01 за , указав что генеральный директор Stack Overflow имеет некоторые мнения по этому вопросу, и благодаря @Sigve Kolbeinson за указание в комментарии под ответом PeterJ_01, что генерального директора Stack Overflow зовут Джоэл Спольски (как указано в ссылке), он на самом деле не ненавидит венгерскую нотацию, а просто огорчает ее ограниченную и искаженную форму [Systems Hungarian] некоторое время набирала обороты, и за то, что дали нам ссылку на статью , чтобы мы могли узнать подробнее и сами читайте статью.

1. Вот мой вывод, чтобы ответить на мой вопрос:

uw в начале многих примеров переменных STM32 определенно должно логически означать «беззнаковое слово», где «слово» в данном случае составляет 32 бита. Знание этого добавляет много ясности, когда я читаю код, и устраняет некоторую путаницу в именах, поэтому я рад это знать.

В данном случае это тип использования Systems Hungarian , который часто не рекомендуется использовать для языков с явными типами, таких как C и C ++, поскольку он избыточен и добавляет мало значения. Сравните это с Apps Hungarian , который я опишу ниже, которого Джоэл Спольски (генеральный директор Stack Overflow) настоятельно рекомендует как способ помочь «неправильному коду выглядеть неправильно».

2. Вот некоторые дополнительные сведения (в основном о венгерской нотации), которые я узнал по пути от @Sigve и @njuffa через их комментарии и предоставленные ссылки:

Вы можете просто назвать этот раздел «что такое венгерская запись в компьютерном программировании?»

  1. Венгерская нотация существует (я не знал об этом раньше) и относится к концепции добавления нескольких дополнительных символов в начале каждой переменной и / или имени функции для предоставления дополнительной информации о переменная или функция, например, цель , тип или тип возврата .
  2. Случайно это ответило и на мой вопрос о соглашениях по присвоению имен FreeRTOS. Теперь я знаю! Они также используют [в первую очередь системы] венгерскую запись. Вот несколько ссылок. Обратите внимание, что в первой ссылке вы увидите список всех использований венгерской нотации в FreeRTOS. Эта нотация почти полностью является нотацией Systems Hungarian, но, возможно, она также использует немного нотации Apps Hungarian, когда они указывают имя файла , в котором функции и макросы определяются прямо внутри имени функции или макроса.
  3. Венгерская нотация имеет две основные формы: Системы венгерского и Приложения венгерского . Смотрите их различия здесь .
    • Systems Hungarian по сути является искажением первоначального намерения «венгерской» нотации, возникшей, когда ее создатель, Чарльз Симони, ошибочно использовал слово «тип» вместо «вид» в своем описании это ( источник ). Первоначальная цель Чарльза состояла в том, чтобы закодировать дополнительную информацию в имена переменных, которая не присуща самому языку программирования. Тем не менее, Systems Hungarian нотация говорит, в основном, для хранения переменной type в имени переменной. Пример: unsigned long myVar теперь становится unsigned long ulMyVar. Большинство людей, кажется, утверждают, что это либо ограниченное использование, либо совершенно бесполезное. Джоэл Сполкси не является сторонником этой формы венгерской нотации , как указано в его статье , но он решительно для Apps венгерского стиля. Другие мнения можно найти в разделе «Известные мнения» статьи Википедии здесь .
    • Apps Hungarian описывает концепцию хранения дополнительной информации в начале имени переменной, которая иначе НЕ может быть легко выведена, например, использование us для обозначения " u nsafe" s tring "и s в значении" safe s tring ". Многие люди либо чувствуют себя более нейтрально к этому методу, либо любят его и продвигают. И Джоэл Спольски (генеральный директор Stack Overflow), и Стив Макконнел считают эту идею хорошей и продвигают ее использование.

Обратите внимание, вот полезный отрывок из Статья Джоэла :

Кто-то где-то читал статью Симони, где он использовал слово «тип», и думал, что он имел в виду тип, как класс, как в системе типов, как проверка типов, которую выполняет компилятор. Он не делал. Он очень тщательно объяснил, что именно он имел в виду под словом «тип», но это не помогло. Ущерб был нанесен.

Apps Hungarian имел очень полезные, значимые префиксы , такие как «ix» для обозначения индекса в массиве, «c» для обозначения числа, «d» для обозначения разницы между двумя числами (например, «dx» означает «ширина») и т. д.

Системы венгерские имели гораздо менее полезные префиксы , такие как «l» для long и «ul» для «unsigned long» и «dw» для двойного слова, что на самом деле, ну без знака долго. В Systems Hungarian единственное, что вам сказал префикс, - это фактический тип данных переменной.

Это было тонкое, но полное неправильное понимание намерений и практики Симони ...

(выделение добавлено)

0 голосов
/ 28 апреля 2018

Это означает слово без знака в этом соглашении об именовании. Почти не используется сейчас. Но некоторые люди любят это, поскольку это показывает им, какой тип является переменной. Другие ненавидят утверждать, что это одна из худших привычек программирования (включая создателя переполнения стека). ИМО не имеет значения

...