Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Стиль, и деструктор

ihNNNNNify

Мастер
Пользователь
Регистрация
18 Июн 2014
Сообщения
2,553
Лучшие ответы
44
Репутация
434
Награды
2
Урок по стилю

Руководство по стилю, представленное здесь, основано на официально выпущенном коде SA:MP, т. е. официальный включает в себя и в комплекте игровые режимы, а также Конвенции, принятые большинством сообщества на протяжении многих лет. У каждого есть свой предпочтительный стиль, который они иногда используют перед лицом существующего кода, и есть аргументы об этом, потому что SA:MP включает и core включает непоследовательный стиль (проблема, над которой работает), нет необходимости быть последовательным вообще. Это просто ложь, если вы когда-либо хотите поделиться кодом с другими людьми (вашими или их).

PHP:
// Константы и макросы в "UPPER_CASE", с подчеркиваниями, разделяющими слова.
#define MAX_TAXIS (32)

const INVALID_TAXI_ID = -1;

// перечисления являются константами, с префиксом` e_ `или` E_ ' в зависимости от силы тега (см. pawn-lang.pdf)
enum e_TAXI_FLAGS
{    
    e_TAXI_FLAG_OCCUPIED,    
    e_TAXI_FLAG_EMPTY,    
    e_TAXI_FLAG_BILKED,
} 

// Помеченное перечисление.

enum E_TAXI_DATA
// Отступ всегда на новой строке
{   
    e_TAXI_FLAGS:E_TAXI_DATA_FLAGS,    
    // Теги-это "Верблюжий регистр", первая буква которого определяется правилами прочности тегов.  Однако,    
    // поскольку за тегами всегда следует двоеточие, это всегда однозначно.    
    Float:E_TAXI_DATA_X,    
    Float:E_TAXI_DATA_X,    
    Float:E_TAXI_DATA_X
}

// Глобальный `static` для предотвращения сложных межмодульных зависимостей.
static    
    // Глобальный `g` префикс и "Верблюжий регистр".   
    gTaxiData[MAX_TAXIS][E_TAXI_DATA];

// Функции в " PascalCase" (aka "UpperCamelCase") - все слова начинаются с буквы верхнего регистра.
Taxi_HasPassenger(taxi, playerid)
{    
        // Отступ табуляции, установите 4 пробела (Таб или 4 пробела).
        // Одно объявление для нескольких переменных, каждая из которых находится в новой строке с отступом.    
        new        
            // Переменные/параметры в "lowerCamelCase" - как указано выше, кроме первого слова.        
            playerCount = GetMaxPlayers(),

            // Имена модулей появляются перед подчеркиванием.        
            passenger = Taxi_GetCurrentPassenger(taxi);

        if (0 <= playerid < playerCount && passenger == playerid)    
        {        
            // Скобки даже для отдельных операторов.        
            goto found_the_player;    
        }

        // Директивы/Pre-processor используют отдельное отслеживание уровня отступов.
#if MAX_PLAYERS < 100    
        #if MAX_TAXIS > 100        
            return Taxi_HasPassenger(playerid, taxi);    
        #else        
            return false;    
        #endif
#else    
    return false;
#endif

// Метки в `lower_snake_case:`, и в столбце 0.
found_the_player:    
    return true;
}

Деструкторы

В pawn есть разрушители. Это было обнаружено только после примерно десятилетия общего использования и до сих пор не широко известно из-за отсутствия информации. На самом деле большая часть информации об этом находится только в выпусках и коммитах компилятора сообщества:


PHP:
operator~(Tag:data[], size)
{    
     // Вызывается с одним массивом элементов, содержащим "[5] "(таким образом, "размер" равен "1"), когда "Func" заканчивается.
}

Func()
{   
    new        
        Tag:a = Tag:5;    
    printf("%d", _:a);
}

main()
{    
    Func();
}

Автор: Y-Less
 
Последнее редактирование:
Сверху Снизу