Skip to content

Latest commit

 

History

History
70 lines (50 loc) · 5.33 KB

review-task.md

File metadata and controls

70 lines (50 loc) · 5.33 KB

Пятое задание: ревью

В рамках этого этапа наши сотрудники проведут строгое ревью github-репозиториев для предыдущих двух проектов: бота и веб-сервера.

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

  2. После прохождения вами этапа код-ревью напишите менеджеру программы обучения в личные сообщения в телеграмме.

Проверка кода в рамках ревью будет не только на предмет формальных требований ниже, но и на предмет продуманной и ясной архитектуры, читаемого и понятного кода, удобного интерфейса работы с вашими функциями. Код пройдет проверку только тогда, когда будет настолько хорош, чтобы мы сами не боялись брать его на поддержку :) Конечно, ровно эти же правила затем будут применяться и при всех ревью уже на реальных проектах после приема на работу.

Требования к оформлению проекта

  1. Весь проект скомпилирован с флагами -Wall и -Werror и нет ни одной ошибки и ни одного варнинга от компилятора.
  2. Весь код проверен через hlint и не вызывает ни одного варнинга.
  3. Весь код отформатирован при помощи форматтера ormolu.
  4. Все импорты либо qualified, либо содержат явный import list.
  5. Не используются нетотальные функции (Partial functions).
  6. Вложенность условных операторов и операторов выбора не превышает 2 уровней.
  7. Не используются длинные кортежи, когда удобнее использовать ADT.
  8. Ошибки внимательно обрабатываются и не глушатся:
  9. Не используются error и undefined.
  10. Названия функций выбраны в соответствии с проблемой, которую эти функции решают.
  11. Каждая функция решает только одну проблему.
  12. Использованы паттерны проектирования: Service/Handle Pattern или Tagless Final/ReaderT.
  13. Основной функционал покрыт чистыми юнит-тестами. E2E тесты в рамках программы обучения писать не требуется.
  14. Проект запускается и работает с конфигом проверяющего (например, чтобы можно было проверить работу бота с другим токеном).
  15. Все изменения в проект в процессе код-ревью вносятся через пулл-реквесты. В ПР указывается ссылка на ишью.
  16. По максимуму исключено использование синонимов типов type в пользу newtype.
  17. Не запрещается использовать RecordWildCards и OverloadedRecordDot в случаях, когда это улучшает читаемость кода.

Рекомендуемые источники по оформлению кода