Урок по стилю
Руководство по стилю, представленное здесь, основано на официально выпущенном коде SA:MP, т. е. официальный включает в себя и в комплекте игровые режимы, а также Конвенции, принятые большинством сообщества на протяжении многих лет. У каждого есть свой предпочтительный стиль, который они иногда используют перед лицом существующего кода, и есть аргументы об этом, потому что SA:MP включает и core включает непоследовательный стиль (проблема, над которой работает), нет необходимости быть последовательным вообще. Это просто ложь, если вы когда-либо хотите поделиться кодом с другими людьми (вашими или их).
Деструкторы
В pawn есть разрушители. Это было обнаружено только после примерно десятилетия общего использования и до сих пор не широко известно из-за отсутствия информации. На самом деле большая часть информации об этом находится только в выпусках и коммитах компилятора сообщества:
Автор: Y-Less
Руководство по стилю, представленное здесь, основано на официально выпущенном коде 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 есть разрушители. Это было обнаружено только после примерно десятилетия общего использования и до сих пор не широко известно из-за отсутствия информации. На самом деле большая часть информации об этом находится только в выпусках и коммитах компилятора сообщества:
- https://github.com/pawn-lang/compiler/issues?utf8=%E2%9C%93&q=destructor
- https://github.com/pawn-lang/compiler/pull/260
PHP:
operator~(Tag:data[], size)
{
// Вызывается с одним массивом элементов, содержащим "[5] "(таким образом, "размер" равен "1"), когда "Func" заканчивается.
}
Func()
{
new
Tag:a = Tag:5;
printf("%d", _:a);
}
main()
{
Func();
}
Автор: Y-Less
Последнее редактирование: