![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
При наличии строгой типизации данных очень полезной оказывается возможность узнавать тип переменной по ее наименованию непосредственно в тексте программ. В этом случае некорректное применение переменных бросается в глаза и позволяет избежать многих сложно локализуемых ошибок.
Для этого может использоваться специальная запись имен переменных. Впервые такая запись имен была предложена Чарльзом Симони (Charles Simonyi) и обоснована в его докторской диссертации. Возможно, потому что Симони родился в Будапеште и образованные по его системе наименования причудливы (на первый взгляд), как венгерский язык, за его методикой записи закрепилось название «венгерская запись». В настоящее время Симони является ведущим инженером Microsoft, а венгерская запись стала общепризнанной при программировании под Windows.
Идея венгерской записи заключается в прибавлении к идентификаторам коротких префиксов, определяющих тип и некоторые другие важные характеристики переменной. Префиксы принято записывать строчными буквами, а имя переменной с заглавной буквы. Поскольку венгерская запись «работает» для любых типизированных языков, имеет смысл применить ее и при программировании ПЛК.
Для базовых типов МЭК можно предложить следующие префиксы типов.
| Префикс | Тип |
| b | BOOL |
| by | BYTE, USINT |
| si | SINT |
| w | WORD, UINT |
| i | INT |
| dw | DWORD, UDINT |
| di | DINT |
| r | REAL |
| Ir | LREAL |
| st | STRING |
| t | TIME |
| td | TIME_OF_DAY |
| d | DATE |
| dt | DATE_AND_TIME |
Примеры обозначений:
bStop: BOOL;
bySet: BYTE;
wSize UINT;
«Венгерские» имена сами говорят о корректности их применения. Очевидно, следующее выражение является бессмысленным; bStop:= wSize * 2; а выражение bStop:= wSize > 2; вполне допустимым.
Уточнить назначение переменной можно добавлением еще одного символа перед префиксом типа:
| Префикс | Назначение | переменной |
| а | Составной тип, | массив |
| п | Индекс | |
| с | Счетчик |
Для временных переменных можно вообще не утруждать себя придумыванием имен, а использовать только префиксы. Например:
aiSample: ARRAY [1..32] OF INT;
ci: INT;
FOR ci:= 1 TO 32 DO
| (*без комментариев*) |
siSample[ci]:= -1; END_FOR
К сожалению, некоторые из предложенных префиксов совпадают с зарезервированными словами (BY, AT, D, DT, N, ST). При использовании их в качестве временных переменных вы можете добавить порядковый номер или букву алфавита. Например:
ЬуА, ЬуВ, byl, Ьу2: 'BYTE;
Структуры и функциональные блоки образуют имена экземпляров с включением полного или сокращенного наименования типа. Например, tpUpDelay: TP;
Символ подчеркивания удобно использовать для индикаций способа обращения к переменной. Подчеркивание в начале имени указывает — только чтение. Идентификаторы переменных, соответствующих входами ПЛК, начинаются символом подчеркивания. Подчеркивание в конце имени указывает — только запись. Идентификаторы выходов заканчиваются символом подчеркивания. Например, Jylnpl, byOut2_.
Если система обозначений хорошо продумана, то ее применение не вызывает сложности. Единый подход к наименованию очень здорово облегчает чтение программы и позволяет отказаться от излишних комментариев. Уникальные префиксы удобны не только для базовых типов, но и для широко используемых в проекте собственных типов данных и функциональных блоков. Стандарт МЭК не содержит рекомендаций по составлению имен переменных и компонентов программы. Никакого стандартного набора префиксов венгерской записи также нет. Вы можете использовать вышеописанную систему или разработать свою собственную. Главное, чтобы принятая система была понятна всем программистам — участникам проекта.
Описанные правила образования венгерских имен применяются в приведенных ниже примерах. В простых случаях, когда тип переменной не имеет значения или очевиден, венгерская запись не используется.
Дата публикования: 2015-04-10; Прочитано: 667 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
