В рамках этого этапа наши сотрудники проведут строгое ревью github-репозиториев для предыдущих двух проектов: бота и веб-сервера.
Прежде чем приступить к этому этапу, отправьте свои репозитории нам для проверки через вот эту заявки на ревью проектов. Только получив эту форму, мы начнем проверку :) После прохождения вами этапа код-ревью напишите менеджеру программы обучения в личные сообщения в телеграмме. Проверка кода в рамках ревью будет не только на предмет формальных требований ниже, но и на предмет продуманной и ясной архитектуры, читаемого и понятного кода, удобного интерфейса работы с вашими функциями. Код пройдет проверку только тогда, когда будет настолько хорош, чтобы мы сами не боялись брать его на поддержку :) Конечно, ровно эти же правила затем будут применяться и при всех ревью уже на реальных проектах после приема на работу.
Требования к оформлению проекта
Весь проект скомпилирован с флагами -Wall и -Werror и нет ни одной ошибки и ни одного варнинга от компилятора. Весь код проверен через hlint и не вызывает ни одного варнинга. Весь код отформатирован при помощи форматтера ormolu. Все импорты либо qualified, либо содержат явный import list. Не используются нетотальные функции (Partial functions). Вложенность условных операторов и операторов выбора не превышает 2 уровней. Не используются длинные кортежи, когда удобнее использовать ADT. Ошибки внимательно обрабатываются и не глушатся: Не используются error и undefined. Названия функций выбраны в соответствии с проблемой, которую эти функции решают. Каждая функция решает только одну проблему. Использовать паттерны проектирования: Service/Handle Pattern или Tagless Final/ReaderT. Основной функционал должен быть покрыт чистыми юнит-тестами. E2E тесты в рамках программы обучения писать не требуется. Проект должен запускаться и работать с конфигом проверяющего (например, чтобы можно было проверить работу бота с другим токеном). Все изменения в проект в процессе код-ревью вносите через пулл-реквесты. В ПР указывайте ссылку на ишью. Рекомендуемые источники по оформлению кода
(правила про Haddock можно игнорировать) HaskellerZ - Feb 2018 - Getting things done in Haskell and Zurich Friends of Haskell — смотреть первую часть до 51 минуты, там идет набор разных правил по разработке на Хаскеле. Паттерн Handle стоит рассмотреть, но необязательно применять. Обязательно изучить репозиторий, который там есть в ссылке, там то приложение, о котором рассказывал спикер: Fugacious.