Skip to content

Instantly share code, notes, and snippets.

@Antonboom
Created September 13, 2021 05:43
Show Gist options
  • Save Antonboom/c30cab6096e282a105354d5d881f64f2 to your computer and use it in GitHub Desktop.
Save Antonboom/c30cab6096e282a105354d5d881f64f2 to your computer and use it in GitHub Desktop.
Критерии качества выполнения и оценки домашнего задания
## Подготовительная программа на С/С++
[Описание курса](https://park.mail.ru/curriculum/program/discipline/532/)
## Критерии качества выполнения и оценки домашнего задания
За задание можно получить не более 10 баллов.
**Рабочая программа** - 4 балла.
**Valgrind, Mtrace, любая другая утилита, показывающая отсутствие утечек памяти** - 2 балла:
```bash
valgrind --tool=memcheck --leak-check=full/summary ./a.out {args}
```
- корректное применение системных функций выделения и освобождения памяти, функций работы с файлами:
- *alloc / free;
- *open / *close.
* инициализация указателей и проверка их значений перед использованием;
* проверка индексов (смещений) при обращении к элементам массивов (по указателям);
* отсутствие недопустимых операций неявного преобразования и явного приведения типов.
**Организация и логика работы кода** - 2 балла:
- код распределен по функциям;
- переменные объявлены на отдельных строках, сразу проинициализированы;
- переменные объявлены вблизи использования;
- отсутствие глобальных переменных;
- отсутствие грубо повторяющихся блоков кода;
- использование const в описании функций;
- отсутствие громоздких, неправильно построенных if;
- учтено выравнивание в структурах;
- валидация входных данных, а также значений, возвращаемых собственными и стандартными функциями.
- логирование ошибок (сообщение/код - ошибка не должна произойти "молчаливо");
- отсутствует переопределение errno;
- отутствует сомнительная логика (или обосновать, что она не такая);
**Стиль кодирования** - 2 балла:
- аккуратное оформление исходного код в едином стиле; здорово, если он близок к [гугловскому](https://google.github.io/styleguide/cppguide.html);
- соблюдение правил выравнивания частей кода (директив, описаний и определений типов, глобальных функций и блоков в них);
- соблюдение отступов между логическими блоками кода;
- отсутствие точек аварийного выхода из процесса (запрет на необоснованное использование exit() и подобное);
- самочитаемый код (адекватные (не слишком длинные и не слишком короткие) названия переменных и функций);
- наличие докстринга приветствуется, наличие излишних комментариев - нет: код должен быть самочитаемым;
- нет магических чисел (#define MY_CONST; кроме очевидных -1, 0 и 1);
- нет ветки else, если выше return или exit (особенно, если это порождает излишнюю елочку).
**Дедлайны**:
- Неделя просрочки - половина баллов;
- Две недели просрочки - 0 баллов;
- Крайний срок подачи пулл-реквеста - суббота 20:00;
- Крайник срок последних правок - воскресенье 20:00.
------
*Источники*:
* [Частые ошибки при разработке](https://docs.google.com/document/d/1iE4Ql8QyP7DDsoKPITmczMs7DQ_3lAT-hqiWNLpidPw/edit)
* [С++ (первый семестр Технопарка)](https://park.mail.ru/blog/topic/view/1164/)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment