Соглашения о кодировании #
Здесь указаны свойства, которыми должен обладать код проекта (включая тесты).
Поддержка Linux #
- Рекомендуется писать кроссплатформенный код, работающий в GNU/Linux, Windows, Mac OSX
- Базовая поддержка GNU/Linux обязательна — при проблемах сборки на Linux преподаватель сообщит об этом
Обычно кроссплатформенность достигается проще для C# и Go, но сложнее для C++.
Зелёная сборка #
Код собирается без ошибок и предупреждений, включая тесты. Тесты выполняются без ошибок.
- Обратите внимание, в шаблонах статические анализаторы, которые могут создавать предупреждения и ошибки при сборке.
- Отключать статические анализаторы нельзя
- Менять правила статического анализа можно по согласованию с преподавателем
- Если вы уверены, что диагностика — это ложное срабатывание, то вы можете сделать подавление диагностики (suppression)
Не принимается код без тестов #
У проекта должны быть модульные и/или интеграционные тесты:
- Модульные тесты следует писать там, где они легко реализуются и хорошо находят ошибки — например, для лексического анализатора
- В остальных случаях предпочтительны интеграционные тесты
Советы:
- лучше составить список тестов до начала тестирования.
- сперва проверяйте основные сценарии (happy path), затем — пограничные случаи, и лишь в конце — негативные сценарии
- создавайте и проверяйте HTML-отчёт о покрытии кода тестами
Тестовый фреймворк выбирается в зависимости от языка, на котором пишете проект:
| Язык | Фреймворк |
|---|---|
| C# | XUnit |
| C++ | Catch3 |
| Go | встроенный |
Чистый код #
- Все переменные хорошо названы
- Именование, форматирование и стиль кода единообразный во всём проекте
- Не должно быть неиспользуемого либо закомментированного кода
- Все тексты исключений и ошибок компилятора пишутся на одном языке — английском либо русском
- Все комментарии в коде пишутся на русском языке
Требования для языков #
В зависимости от языка есть свои требования: