Руководство по внесению вклада
Чтобы внести вклад в проект mGBA, необходимо учесть несколько моментов, чтобы упростить процесс.
Создание задач
Новые задачи следует создавать в системе отслеживания проблем GitHub проекта mGBA (http://mgba.io/i/). При создании задач, пожалуйста, укажите следующую информацию:
0.3-2134-4ec19aa
. В старых сборках, таких как 0.2.1, этого нет, поэтому, пожалуйста, уточните версию, которую вы скачали или собрали. Если она присутствует, то содержит версию, имя ветки (если не мастер), номер коммита и усечённый хэш ревизии. В этом примере это означает, что это версия 0.3, на мастере, номер коммита 2134 и хэш ревизии 4ec19aa
. Кроме того, если есть локальные изменения, которые не были зафиксированы, будет добавлено -dirty
.Пожалуйста, также опишите проблему как можно подробнее, включая название игр, в которых вы воспроизвели проблему, и как вам удалось войти в состояние ошибки. При необходимости сохранения состояния можно переименовать их в файлы .png и прикрепить к задаче напрямую.
Отправка запросов на включение
При отправке запроса на включение, пожалуйста, убедитесь, что вы придерживаетесь стиля кодирования, изложенного ниже, и знаете о требованиях к лицензированию. Кроме того, пожалуйста, убедитесь, что все коммиты в запросе на включение имеют согласованные сообщения коммитов, а также имя компонента, который был изменён в сообщении коммита.
Некоторые компоненты включают:
Стиль кодирования
mGBA стремится иметь согласованную, чистую кодовую базу, поэтому при внесении кода в mGBA, пожалуйста, придерживайтесь следующих правил. Если в запросе на включение есть ошибки стиля, вас попросят исправить их, прежде чем запрос будет принят.
Имена переменных, включая параметры, должны быть в camelCase. Статические переменные файловой области видимости должны начинаться с символа подчёркивания.
Имена структур C должны начинаться с заглавной буквы, а функции, связанные с этими структурами, должны начинаться с имени класса (включая заглавную букву) и быть в camelCase после. Структуры C не должны быть typedef
ными.
Функции, не связанные со структурами, должны быть во всём camelCase. Статические функции, не связанные со структурами, должны начинаться с символа подчёркивания.
Значения перечислений и #define
должны быть полностью заглавными с символами подчёркивания.
Хорошо:
static int _localVariable;
struct LocalStruct {
void (*methodName)(struct LocalStruct struct, param);
int memberName;
};
enum {
ENUM_ITEM_1,
ENUM_ITEM_2
};
void LocalStructCreate(struct LocalStruct* struct);
void functionName(int argument);
static void _LocalStructUse(struct LocalStruct* struct);
static void _function2(int argument2);
Классы C++ должны быть ограничены пространствами имён. Для порта Qt это пространство имён называется QGBA
.
С именами классов следует обращаться аналогично структурам C. Поля должны быть префиксированы в соответствии с их областью действия:
m_
для нестатического члена.s_
для статического члена.Фигурные скобки не идут на отдельных строках, кроме завершающей фигурной скобки. Между условием и фигурной скобкой должен быть один пробел. Кроме того, фигурные скобки должны использоваться даже для... ### Однострочные блоки
Хорошо:
if (условие) {
блок;
} else if (условие2) {
блок2;
} else {
блок3;
}
Плохо (отдельная строка):
if (условие)
{
блок;
}
else if (условие2)
{
блок2;
}
else
{
блок3;
}
Плохо (отсутствие фигурных скобок):
if (условие)
оператор;
else if (условие2)
оператор2;
else
оператор3;
Плохо (отсутствует пробел):
if (условие){
блок;
}
Отступ должен выполняться с помощью табуляции и соответствовать уровню фигурных скобок. Выравнивание внутри строки должно быть умеренным, но только с использованием пробелов.
Для защиты заголовков C define должен быть именем файла (включая H), все заглавные буквы, с подчёркиванием вместо знаков препинания.
Хорошо:
#ifndef FILE_NAME_H
#define FILE_NAME_H
// Заголовок
#endif
Не должно быть комментариев к #endif
.
Для Qt (защита заголовков C++) define должен начинаться с QGBA_
и не включать _H
, но в остальном он такой же. Это в основном по причинам наследия и может измениться в будущем.
Хорошо:
#ifndef QGBA_FILE_NAME
#define QGBA_FILE_NAME
// Заголовок
#endif
Операторы блоков, такие как if
, while
и for
, должны иметь пробел между типом блока и круглыми скобками.
Хорошо:
while (условие) {
блок;
}
Плохо:
while(условие) {
блок;
}
В коде C используйте 0
вместо NULL
. Это в основном по причинам наследия и может измениться в будущем. В коде C также следует использовать типы bool
и значения true
и false
вместо 1
и 0
, где это применимо. В коде C++ используйте nullptr
вместо NULL
или 0
.
Если оператор не имеет тела, использование фигурных скобок не требуется, и можно использовать точку с запятой. Это не обязательно, но рекомендуется.
Хорошо:
while (f());
Плохо:
while (f()) {}
Для бесконечных циклов, которые имеют внутренние операторы break
, предпочтительнее использовать while (true)
вместо for (;;)
.
mGBA лицензируется под Mozilla Public License version 2.0. Это влечёт за собой несколько моментов, когда дело доходит до добавления кода в mGBA.
third-party
, если это применимо.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )