Требования к выполнению заданий
- Каждая программа должна быть написана полностью самостоятельно.
- Каждая программа должна быть выполнена в соответствии с заданием. При возникновении вопросов необходимо консультироваться с преподавателем.
- Все программы должны быть представлены в виде исходных текстов.
- Программа должна быть хорошо протестирована до сдачи.
- Код программы должен компилироваться и исполняться без ошибок и предупреждений warning. Флаги компиляции для gcc и clang:
-Wall -Wextra -Werror
- Имена переменных следует выбирать в соответствии со смыслом (назначением), а не типом переменной.
- Имена переменных должны отражать суть данных, которые она содержит. Использование однобуквенных неясных названий для переменных считается сильным недостатком, кроме индексов, координат и других принятых математических обозначений.
- Имя метода или функции должно начинаться с глагола, отражающего суть выполняемого действия.
- Исходный код должен быть понятен без сопутствующих комментариев.
- Исходный код должен быть оформлен в соответствии с общепринятыми конвенциями оформления. Для языка C/С++ это стандарт Google C++ Style Guide.
- Как только была пройдена тема модульного тестирования все программы должны сопровождаться исчерпывающим набором тестов. На каждую функцию и метод должен быть написан набор тестов.
- Логика программ не должна быть смешана с логикой ввода данных. По умолчанию, если не оговорено иное, лабораторные не предполагают ввода данных через консоль, поэтому подтверждение работоспособности программы показывается модульными тестами.
- Время жизни переменной, объекта должно быть максимально коротким.
- Запрещено использовать не примитивные типы для значений аргументов функции или метода по умолчанию, если того не требует условие задания.
- Запрещено использование магических констант. Если необходимо, они должны быть именованными.
- Запрещено использовать метки
goto
.
- Запрещено создание громоздких функций и методов размера более 30 строк. Такие конструкции следует разбивать на мелкие и понятные функции и методы.
- Нельзя использовать глобальные переменные, только локальные автоматические, если это не требуется явно по заданию.
- Нельзя использовать статические переменные в Си, если это не требуется явно по заданию.