Тег (программирование) - Tag (programming)

В программирование, а тег является аргумент к подпрограмма который определяет другие переданные ему аргументы, который используется как способ передать подпрограмме неопределенное количество помеченных параметров; в частности, теги используются для ряда системных вызовов в AmigaOS v2.0 и новее.

В AmigaOS

В более ранних версиях AmigaOS, если системный вызов требует установки большого количества параметров, вместо передачи их в качестве аргументов функции, функции потребуется указатель на структура содержащий аргументы (например, интуиция. библиотека с Открытое окно() требуется struct NewWindow с 17 различными параметрами). Теги были введены в AmigaOS 2.0, потому что они «позволяют добавлять новые параметры к системным функциям, не мешая исходным параметрам. Они также значительно упрощают и упрощают определение списков параметров».[1]

Количество сторонний программные библиотеки для AmigaOS также широко используют теги.

пример

AmigaOS 1.3AmigaOS 2.0+
структура Окно *wnd;структура Новое окно nw = {        10, 10,        100, 100,        0, 1,        IDCMP_CLOSEWINDOW,                WFLG_SIZEGADGET |                 WFLG_DRAGBAR |                WFLG_DEPTHGADGET |                WFLG_CLOSEGADGET |                WFLG_ACTIVATE,        ЗНАЧЕНИЕ NULL, ЗНАЧЕНИЕ NULL,        "WikiWindow",        ЗНАЧЕНИЕ NULL, ЗНАЧЕНИЕ NULL,        0, 0,        640, 400,        WBENCHSCREEN};wnd = Открытое окно(&nw);
структура Окно *wnd;wnd = OpenWindowTags(ЗНАЧЕНИЕ NULL,        WA_Left, 10, WA_Top, 10,        WA_Width, 100, WA_Height, 100,        WA_IDCMP, IDCMP_CLOSEWINDOW,        WA_Flags,                WFLG_SIZEGADGET |                WFLG_DRAGBAR |                WFLG_DEPTHGADGET |                WFLG_CLOSEGADGET |                WFLG_ACTIVATE,        WA_Title, "WikiWindow",        WA_PubScreenName, «Верстак»,        TAG_DONE );

Непонятный код без тегов (например, 0, 1 определять цвета окон), а код с тегами самодокументируется. С тегами должно быть определено меньше параметров, чем в структуре, поскольку OpenWindowTags вернется к параметрам по умолчанию.

Реализация

AmigaOS предоставляет функции для обработки тегов в своих utility.library.

В общем

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

Недостатком тегов является то, что их обработка медленнее, чем просто чтение данных из структура или стек. Дополнительно, время компиляции проверка типа потерян.

Смотрите также

использованная литература

  1. ^ Справочное руководство Amiga ROM Kernal: Библиотеки (3-е изд.). п. 867. ISBN  0-201-56774-1.

внешние ссылки