Language switcherRU / EN

Проверка задания ментором

  1. Студент выполняет задание в приватном репозитории.
  2. Студент создает и оформляет Pull Request до дедлайна.
    • Правила оформления PR указаны ниже
    • Штрафы за нарушения дедлайна указаны ниже
  3. До выставления финальной оценки ментором, студент может продолжать реализовывать фичи
  4. Ментор проверяет PR, оставляет свои замечания и рекомендации по качеству кода (copy-paste, magic numbers, project structure, etc.) и реализованной функциональности. Указывает предварительную оценку в комментарии.
    • Оценка выставляется ментором на основании критериев оценки указанных для каждого задания
    • При выставлении оценки учитывается весь реализованный функционал. Например, студент выполнил минимальные требования не на 100 процентов, но выполнил часть дополнительных - все требования должны учитываться
    • Ментор может выставить предварительную оценку авансом, с учетом того, что студент исправит все замечания ментора
  5. Студент в течении 5 дней исправляет замечания ментора.
    • Если комментарии ментора к PR предполагают ответ студента - студент пишет ответ
    • Если студент вкоммитал правки, он должен оставить комментарий о том, что именно было вкоммитанно/исправлено
  6. По результатам исправления ментор выставляет окончательную оценку в Score (RS APP > Submit-review) .
    • Ментор сам решает снимать баллы или нет за функциональность реализованную студентом после дедлайна.
    • Если студент не исправил замечания ментора по качеству кода, ментор может дополнительно снизить оценку. Размер штрафа на усмотрение ментора, максимум -50 баллов.

Требования к Pull Request (PR)

Pull Request - это место для обсуждения кода. Он не должен выглядеть как монолог студента или ментора. Будьте культурными, уважайте время и работу друг друга.

Описание Pull Request должно содержать следующую информацию:

  1. Ссылка на задание.
  2. Скриншот результата выполнения задания (страница созданного приложения или сайта). Скриншот добавляем в Pull Request в виде изображения. Для добавления в Pull Request изображения, его можно просто перетянуть с компьютера.
  3. Ссылка на задеплоенную версию вашего приложения или сайта. Для деплоя можно использовать:
    • при наличии приватного репозитория школы - gh-pages
    • при отсутствии приватного репозитория школы или при невозможности разместить приложение на gh-pages приватного репозитория школы, приложение можно разместить на netlify.com, либо на другом подобном хостинге.
    • для демоверсий, размещённых на netlify, название сайта даётся по схеме: имя гитхаб аккаунта - название таска.
  4. Дата сдачи / дата дедлайна.
  5. Ваша самопроверка с предварительной оценкой.

Пример оформления

1. Task: https://github.com/rolling-scopes-school/tasks/blob/master/tasks/fancy-weather.md
2. Screenshot:
   ![](https://docs.rs.school/images/fancy-weather.png)
3. Deploy: https://chakapega-fancy-weather.netlify.com/
4. Done 28.05.2020 / deadline 31.05.2020
5. Score: 220 / 300
- Вёрстка, дизайн, UI (15/30)
  - [x] минимальная ширина страницы, при которой она отображается корректно – 320 рх (10)
  - [±] внешний вид приложения внешне соответствует макету или является его улучшенной версией (5/10)   
  - [ ] приложение корректно отображается для любого выбранного языка (0)
- В блоке "Погода за сегодня" отображаются следующие данные (15/20)
  - [x] данные о погоде и местоположении пользователя (10)
  - [±] часы, обновляющие время каждую секунду (5/10) 
 ...

Pull Request не должен содержать:

  • Закомментированного кода
  • Лишних файлов, автосгенерированного кода, node_modules и т.д.

Рекомендация по организации процесса Code review

Для более эффективного процесса код ревью заданий студентов, рекомендуется проводить его в два этапа:

  • Ревью "Draft" версии задания. Студент создает PR, когда готова "Draft" версия, которая показывает основную концепцию задачи и реализует основные части приложения. Решенная таким образом задача может не покрывать дополнительные требования.
  • Ревью "Release" версии задания. Это законченная и отрефакторенная версия задания, в которой исправлены замечания по фундаментальному подходу и учтены пожелания во время ревью Draft версии. Такой подход решает несколько проблем, которые встречаются при ревью и разработке больших заданий:
  • Снижение единовременной ревью нагрузки на ментора. Зачастую довольно сложно внимательно посмотреть весь код задания за один раз и разъяснить все концепты, которые пропустил студент в рамках большой код базы. Зачастую гораздо проще найти время на 2 ревью поменьше, хотя в целом суммарно времени может уйти больше.
  • Архитектурные промахи в самом начале, которые влекут за собой "дорогие" в плане рефакторинга проблемы
  • Обучение работы с Git и Github
  • Мотивация успеть в дедлайн

Пример проверки студенческого PR ментором

Проверку пулл реквеста можно начать с проверки корректности оформления PR, именования коммитов и достаточного их количества.

Далее можно склонировать репозиторий, установить зависимости и проверить собирается ли проект. Если в требованиях было использования линтера или тестов проверить наличие прописанного скрипта для запуска (lint, test), возникают ли ошибки после запуска. Так же стоит обратить внимание есть ли в коде места, где выключены правила линта и попытаться выяснить для чего это было сделано и можно было ли этого избежать. Стоит проверить общую функциональность приложения, отсутствуют ли ошибки в консоли, корректно ли отрабатывают запросы и т.д. На этом этапе можно обратить внимание на возможные UI/UX проблемы:

  • выделяются ли кликабельные элементы
  • не происходит ли перекрытие элементов/текста
  • возможно найдутся рекомендации по улучшению внешнего вида если четко заданного дизайна в задании не было

Далее code review. Возможные моменты, где можно улучшить качество кода: Общие принципы

  • DRY - если есть повторяющиеся куски кода, лучше выносить их в отдельный класс/функцию
  • KISS - пытаться сохранить простую и понятную структуру
  • комментарии стоит оставлять для объяснения задачи кода, а не для его описания
Bad

# method to find min value
function findMinValue() {...}
  • не использован форматтер кода, они помогают привести код к одному стилю для всех членов команды (e.g. prettier)
  • лучше для именования переменных/классов/функций не использовать сокращения, это улучшит понимание и читабельность кода

HTML

  • отсутствие атрибута alt для тeга img, так же рекомендуется проставлять высоту и ширину, это полезно когда картинка по какой-то причине не подгрузится
  • отсутствие или недостаточная семантика
  • избыточные блоки
<div class="container">
  <div class="wrapper">
    <ul>
      ...
    </ul>
  </div>
</div>
  • для html использовать имена классов в kebab-case
<!-- BAD -->
<div class="containerWrapper"></div>
<!-- GOOD -->
<div class="container-wrapper"></div>
  • если в html нужно сделать какой-то заголовок в upper case лучше это делать стилем
  • использование в HTML inline стилей или js-кода, например, в виде функции onclick, также является ошибкой

CSS

  • динамические стили стараться применять классами, а не js
  • стараться писать стили с небольшой степенью вложенности (не больше 2х) - это упрощает сопровождение и переопределение стиля при необходимости
  • предпочтительнее использовать одни единицы измерения (или px или rem или em) это позволит проще вносить изменения(при использовании препроцессоров можно написать функцию, которая будет переводить пиксели в рем)

JS

  • использовать event delegation, если его можно использовать
  • для блоков if else for использовать скобки
  • magic numbers and magic strings - стараться выносить их в отдельные константы
  • использовать объекты enums
const KEY_CODES = {
	Space: 32,
	Enter: 13,
	...
}

if (key === KEY_CODES.Enter) {
  ...
}
  • размер файлов (большие файлы трудно читать и поддерживать, если файл больше 200 - 400 строк, то следует задуматься о разделении)
  • следить за степенью вложенности условных блоков, блоки со степенью вложенности 3 и более трудно читать и воспринимать, возможно их можно вынести в отдельную функцию
  • стараться использовать чистые функции (они лучше тестируются)
  • использовать named arguments если число аргументов 3 и более, это позволяет не следить за порядком и при чтении кода более понятно что передается в функцию
function insertElement({ parent, tag, class, value }){...}

insertElement({ parent: parentElement, tag: 'p', class: 'class', value: 'Some value' })

Дедлайны для студентов

  • Дедлайны всех тасков указаны в расписании курса.
  • Если студент не успел сдать задание вовремя, ментор по своему желанию может применить следующие штрафы:
    • -10 баллов к оценке при опоздании до 3 дней включительно
    • -30% процентов к оценке при опоздании до 7 дней включительно
    • -70% процентов к оценке при опоздании более чем на неделю
    • по усмотрению ментора, при наличии уважительной причины (больница, армейские сборы и т.д.)
    • При применении штрафных коэффициентов, округление происходит в пользу студента

Дедлайны для менторов

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

Partnered with

epam
jetbrains icon
AWS icon
 github icon