Псевдонимы типов

 Псевдонимы типов


Объявление типа может объявить новый тип как эквивалентный уже существующему. При этом идентификатор нового типа становится псевдонимом для базового.

Синтаксис

 type Alias = идентификатор;

Примеры

 { Псевдонимы типов }
 type Int64 = Comp;
 type WideChar = Word;

Ада

Можно определять не только псевдонимы типов, но и производные типы, отличимые от базовых:

 -- Псевдоним
 subtype Int64 is Integer_64;

 -- Производные типы
 type HTML_String is new Unbounded_String;
 type MySQL_Query_String is new Unbounded_String;
 type MIME_Header_String is new Unbounded_String;

В случае производных типов наследуются примитивные операции базового типа, но при этом новый тип несовместим с базовым. Для всех новых строковых типов из примера определена конкатенация. Но при этом нельзя случайно забыть экранировать строку там, где требуется HTML. Таким образом можно защититься от XSS атак, самых распространённых в Internet. Если использовать производные строковых типов для запросов к базе данных, то предотвращаются SQL Inject атаки, занимающие второе место по распространённости в Web. Наконец, если применить этот метод для заголовков отправляемых электронных писем, то предотвращается уязвимость Mail Inject. Элегантно и действенно, не правда ли?

Используйте производные типы, если случайное неявное приведение типа может создать угрозу безопасности. В других случаях вопрос остаётся открытым. Например, нельзя однозначно рекомендовать, использовать ли в GUI разные типы для горизонтальных (X, Width) и вертикальных (Y, Height) расстояний.

К сожалению, большинство современных языков программирования не позволяют создавать производные строковые типы. Аду можно смело причислить к числу тех языков, незнание которых обрекает создателей других языков программирования на изобретение велосипедов. Типичный квадратноколёсный велосипед - волшебные кавычки в PHP.

См. также

Лекция №2.1: Типы данных и операции

Тэги: Types-Aliases
| G+
Код для вставки: :: :: :: ::
Поделиться: // //