-
Соблюдайте стиль кодирования и конвенции, принятые в проекте ReSDK_A3.
-
Используйте понятные и описательные имена переменных, функций, классов и других элементов кода.
-
Документируйте ваш код, включая описание функций, классов и сложных алгоритмов. Используйте понятные комментарии, чтобы объяснить назначение кода и его логику.
-
Избегайте дублирования кода. Если вы обнаружите повторяющиеся фрагменты кода, вынесите их в отдельные функции или классы для повторного использования.
-
Используйте табуляцию для отступа вместо пробелов.
-
Отделяйте операторы пробелами для улучшения читаемости.
-
Функции и переменные, объявленные в файле модуля не должны начинаться с отступов.
-
Используйте осмысленные имена переменных, функций, классов и других элементов кода. Предпочтительно использовать смысловые слова или фразы, чтобы сделать код более понятным.
-
Используйте camelCase для имен переменных и функций. Начинайте их с маленькой буквы. Для отделения пространств имен и модулей используйте нижние подчеркивания.
-
Используйте PascalCase для имен классов. Начинайте их с большой буквы.
-
Макросы-константы должны быть определены полность в верхнем регистре
-
Добавляйте комментарии для объяснения сложной логики или важных аспектов вашего кода.
-
Используйте понятные комментарии, которые описывают назначение кода, а не просто повторяют его.
-
Для многострочных комментариев используйте
/* */
вместо построчного использования//
-
Локальные переменные должны начинаться с нижнего подчеркивания, что является особенностью платформы Arma 3.
-
Локальные переменные должны быть объявлены с модификаторм "private"
-
Глобальные переменные должны быть объявлены в файле модуля, либо в функции инициализации модуля. Не создавайте глобальные переменные внутри других функций.
-
Функции должны быть объявлены в файле модуля. Не создавайте функции при помощи команды "compile"
-
Методы классов, не выполняющие никаких действий и возвращающие константное значение должны быть определены через макрос "getterconst_func(name,value)"
-
Методы классов, не выполняющие никаких действий и возвращающие значения членов этого класса должны быть определены через макрос "getter_func(name,value)"
-
При объявлении методов типа "getterconst_func" или "getter_func" не допускаются переносы строк в возвращаемом значении. Если переносы необходимы для удобочитаемости используйте для этого обычный метод без указания параметров.
-
Серверные компоненты должны быть определены в папке
src\host
, а клиентские вsrc\client
. Сам модуль должне быть объявлен в файлеMyModuleName\MyModuleName_init.sqf
, где MyModuleName - имя вашего модуля. -
В модулях не должно быть объявления переменных или функций, использующихся в других модулях.
-
Серверные модули не должны использовать клиентские как и клиентские не должны использовать серверные.
-
Каждый файл модуля должен содержать фрагмент копирайта в верхней части файла.
math_calculateSum = {
params ["_a","_b"];
private _result = _a + _b;
_result
};
// Хорошо
if (condition) then {
// code
};
// Хорошо
if (condition) then
{
// code
};
// Плохо
if (condition)
then {
// code
}
_x = 5; // Плохо
_itemCount = 5; // Хорошо
// Плохо
_my_variable = 5;
// Хорошо
_myVariable = 5;
// Плохо
my_function = {
// code
};
// Хорошо
myFunction = {
// code
};
// Плохо
MY_CONSTANT = 10;
// Хорошо
#define MY_CONSTANT 10
complexAlgoritm = {
params ["_data"];
// Инициализация счетчика
private _count = 0;
{
// Проверка условия
if (_x > 0) then {
_count = _count + 1;
};
} foreach _data;
// Возвращаем результат
_count
};
// Плохо
// Функция делает что-то,
// что делает действия, которые помогут нам
// сделать классные вещи
// Хорошо
/*
Функция делает что-то,
что делает действия, которые помогут нам
сделать классные вещи
*/
// Плохо
getterconst_func(getCount,getSelf(count));
// Хорошо
getter_func(getCount,getSelf(count));
// Плохо
getterconst_func(getArray,[
1 arg
2 arg
3
]);
// Хорошо
getterconst_func(getArray,[1 arg 2 arg 3]);
// Тоже хорошо
func(getArray)
{
[
1,
2,
3
]
};
// ======================================================
// Copyright (c) 2017-2023 the ReSDK_A3 project
// sdk.relicta.ru
// ======================================================
// file: host\MyModule\TestModule_init.sqf
// Плохо
myFunction = {
// code
};
// Хорошо
myModule_myFunction = {
// code
};
// Плохо
_globalVariable = 10;
// Хорошо
myModule_globalVariable = 10;
Соблюдение стандарта кодирования в проекте ReSDK_A3 поможет обеспечить читаемость, согласованность и понимание вашего кода всем участникам проекта. Пожалуйста, следуйте этим рекомендациям при внесении изменений в код проекта.
Благодарим вас за соблюдение стандартов кодирования и ваш вклад в проект ReSDK_A3!