Skip to content

Latest commit

 

History

History
88 lines (81 loc) · 7.78 KB

PULL_REQUEST.md

File metadata and controls

88 lines (81 loc) · 7.78 KB

Руководство по использованию Pull requests

Что это и зачем?

Pull request(PR) - это запрос стороннего пользователя на внесение изменений в какой-то проект. В нашем случае проект - репозиторий с лабораторными работами. Используются Pull request для контроля над разработкой - только уполномоченные люди могут принимать PR, что означает, что плохой код не будет принят в общий проект.

К тому же, в PR можно при помощи CI делать проверки линтеров(CE и некоторые UB) и форматтеров(код стайл), что и сделано в данном проекте.

Как упоминалось выше, PR могут принять только уполномеченные пользователи. Перед добавлением вашего кода в общий репозиторий, ваши изменения проходят процедуру code review. Это дословно обзор вашего кода, проверка его на состоятельность, логичность и правильную структурность. По ходу code review, можно писать комментарии(issues) к автору кода, например, если используется верно работающий метод, но очень не понятный мне(чёрная магия, иными словами), я могу попросить его объяснить или переписать во благо удобочитаемости кода для остальных разработчиков.

Что будет недопущено в общий репозиторий?

Код, не прошедший проверки на линтеры (иначе говоря, не компилирующийся)

Очевидно. Проверится на этапе PR.

Код, не прошедший проверки на форматтеры (не соответствует принятому код стайлу)

Очевидно. Проверится на этапе PR.

Код с утечками памяти

Очевидно. Проверится на этапе PR.

Код, написанный в одном файле

Нельзя писать всё в одном файле - декомпозируйте код на разные сущности

Большие функции - плохо. Декомпозируйте на несколько меньших

Вопрос чисто опыта, не нужно из этой идеи делать функции по одной строчке. Каждая хорошая функция должна делать только одно логическое действие. Если у вас в функции происходит и транспонирование, и перемножение, и распечатка матрицы - это повод задуматься над рефакторингом (Как раз в этом примере выделили 3 функции). Также полезно думать, что код, который вы пишите, можно будет потом переиспользовать - намного легче будет взять готовую одну функцию, ежели выдёргивать из общего полотна кода кусок с нужной логикой.

Любой текст на русском языке

Никакой русофобии - он просто плохо отображается почти везде. Используйте переводчик, если плохо знаете английский. Хорошая привычка - писать на английском. С русским у вас проблем нет, а вот практика с английским очень пригодится из-за огромного количества документации на этом языке.

Плохие названия переменных/функций/классов (запрещён транслит) - по названию должно быть понятно, что функция делает

Думаю, очевидно, что это большой шаг на пути к написанию чистого и понятного кода.

Чёрная магия (a.k.a непонятный и запутанный код).

Если у вас какой-то стрёмный цикл с очень странными шагами, много булевых флагов, которые то True, то False - это непонятно, это стоит убрать и больше так не делать. Важно сделать не только рабочую программу, но и понятную. Иногда это забирает больше времени, чем написание алгоритма. Полезно думать, что вы пишите код, который будут читать другие разработчики.

Непонятные константы

Пример:

// Плохо!
for (size_t i = 0; i < 100; ++i)
    for (size_t j = 0; j < 15; ++j)
        ...
        
// Хорошо!
size_t size_of_DataArray = 100; 
size_t size_of_QArray = 15; 
for (size_t i = 0; i < size_of_DataArray; ++i)
    for (size_t j = 0; j < size_of_QArray; ++j)
        ...

Код без комментариев в местах, где они нужны

Хороший код не должен содержать комментариев - он должен быть понятным и без них. Но бывают места, где они прям нужны. Если ваш алгоритм или метод решения не очевиден - стоит пояснить его комментариями.

Как создать PR? Алгоритм.

1. Делаем fork этого репозитория.

Копия этого репозитория появится у вас в вашем аккаунте - это можно сделать в веб версии, нажав на кнопку fork в верхней части проекта.

2. Клонируем ВАШ fork себе на компьютер

Прописать в терминале с установленным git:

git clone https://github.com/YourGitHubLogin/MAI_109B_22.git

3. Создаём новую ветку

Под каждую лабу должна быть своя ветка. Название веток на ваш вкус. Пример создания ветки и переключения на неё:

git checkout -b NameOfBranch

4. Вносим изменения в код и делаем коммиты изменений

Не требуются пояснения - если не помните, как и что - смотрите документацию по git.

5. Выполняем push на удалённый репозиторий

Все ваши коммиты отправляем на удалённый репозиторий командой git push:

git push

6. Заходим в веб версию, вкладка Pull Request

Нажимаем на создать, выбираем какую ветку хотим отправить и пишем описание PR: в нём должна быть указана лаба, которую вы выполнили.

7. Отправляем PR и ждём проверок c code review