FOnline
 Указатель Классы Функции Переменные Группы Страницы
Стандарты оформления скриптов

Стандарты оформления

Стили использования регистра букв:

Паскаль - указание этого стиля оформления идентификатора обозначает, что первая буква заглавная и все последующие первые буквы слов тоже заглавные. В этом стиле оформляются глобальные переменные, поля класса, функции и методы.

int BackColor
bool IsLastModified
uint DateTime
void DoSmth(...)
void Hello(...)
int MySuperFunction(...)
SomeClass::GetMapId()
SomeClass::IsBusy()

Кэмел - указание этого стиля обозначает, что первая буква строчная, а остальные первые буквы слов заглавные. В этом стиле оформляются локальные переменные, аргументы методов и функций.

int borderColor
uint accessTime
bool tempName
void DoSmthFast(int oneTwoThree, int doIt)
void MyFunc(Critter@ cr, int pOne, int pTwo, int valNext)

Имена зарезервированных функций пишутся в нижнем регистре, через подчеркивание.

void critter_init(Critter& cr, bool firstTime)
bool start()
void finish()

Константы должны писаться в верхнем регистре (как минимум первое слово), значение обрамляется скобками.

#define MY_CONST (5)
#define MY_CONST2 (MY_CONST+10)
#define CONST_One (0)
#define CONST_Two (1)

Макросы оформляются так же как и константы, но допускается оформление в стиле Паскаль с использованием подчеркивания в начале.

#define _EveryHour ...
#define _CritInjure ...

Не пишите название переменных в русской транслитерации.

Item@ mashina; // Неправильно
Item@ car; // Правильно

Комментарии пишите только на русском или английском языке. Грамотно.

//ну тут типо делайем всем Привед! - Неправильно
// Передаем всем привет. - Правильно

Пользуйтесь зарезервированными константами, а не их числовым эквивалентом.

npc.DeleteItem(236, 1); // Неправильно
npc.DeleteItem(PID_COMBAT_KNIFE, 1); // Правильно

Памятки:

  • Не забывайте соблюдать регистр переменных ('Hp' не равно 'hp');
  • Не забывайте про стандарты оформления;
  • Помните, что скрипт делает то, что вы ему говорите, а не то, что вы от него хотите.

Синтаксис

В целом, синтаксис мало чем отличается от синтаксиса С++.
Подробнее о ссылках и указателях:

  • символ указателя - "@", ссылки - "&";
  • при этом отсутствие символа "@" будет означать разыменование указателя. То есть, результаты следующих кусков кода будут одинаковы:
    1.
    Object@ bag = car.CarGetBag(0);
    2.
    Object@ bag = null;
    @bag = car.CarGetBag(0);
  • поведение ссылки и указателя идентично, отличие в том, что ссылка не может быть равна null и ей нельзя присвоить другое значение.

Массивы. Объявление массивов:

int[] a; // Пустой массив, нулевой длины.
int[] b(10); // Пустой массив, с длиной равной 10.
int[] c = {,3,4,}; // Массив с длиной равной 4, где второй и третий элемент инициализированы.

Так же у всех массивов есть следующие методы:

void resize(uint length) // Изменяет размер массива.
uint length() // Возвращает длину массива.

Явное приведение типов:

int a = 5;
float b = float(a);
float b = cast<float>(a);

Оператор "?". Синтаксис:
<значение 1> ? <значение 2> : <значение 3>
Если <значение 1> == true то оператор возвращает <значение 2>, иначе <значение 3>
Пример:

int i = 5;
int j = (i == 5 ? 6 : 7);
// i == 5, j == 6

Подробнее о синтаксисе AngelScript.