Change History (2)

comment:1 Changed 4 years ago by Артур Гулецкий (huletski)

Type: ожидается проверкаожидаются исправления

Cборка:

  • почему минимальная требуемая версия cmake 3.10.2? Судя по CMakeLists.txt можно собрать и более младшей;
  • напишите, пожалуйста, Makefile в корне, который автоматизирует сборку cmake’ом (создание папки build и т.д.), содержит цель clean, которая удаляет артефакты сборки.

Корректность:

  • размер EmployeesArray? ограничен 1000 элементов -> некоторые тесты не проходят -> нужно убрать ограничение на число хранимых элементов. Используйте либо явное выделение памяти для хранения большего количества элементов, либо std::vector (FYI: с момента выдачи условие было немного упрощено: можно использовать std::vector, std::string);
  • размер имени элемента ограничен 101 символом -> ограничение необоснованно, так как при создании/инициализации класса необходимый размер строки можно вычислить, используя std::strlen;
  • employees.h:16. В деструкторе чего-то не хватает, учитывая тот факт, что у класса предполагаются наследники;
  • Employee, EmployeesArray?: rule of 3 (не храватает некоторых методов)

Некоторые другие замечания:

  • main.cpp:18, 25. Нужно использовать op<<, op>> для EmployeesArray?;
  • main.cpp:11. В реализации команды add считайте информацию о сотруднике из потока, после чего вызовите EmployeesArray::add;
  • bin_manip.cpp:7. Что такое 4?
  • bin_manip.cpp:42. Такая обработка ошибок ничего не дает. Код вызвавший манипулятор — место получше для того, чтобы решать, как чинить ошибку. Падать в данном случае как-то чересчур;
  • bin_manip.cpp:48. А если считали не 0 и не 1? Добавьте установку failbit;
  • bin_manip.cpp:68. Избавьтесь от явного цикла (hint: std::strlen + std::of stream::write);
  • bin_manip.cpp:93, 94. Зачем присваивать значение, которое и так хранится? Для этого манипулятора обработайте случай, когда число элементов больше size;
  • employees.cpp:17. std::strncpy
  • Дублирование кода ввода и вывода общих частей классов Developer и SalesManager?;
  • employees.cpp:82. Избавьтесь от cost_cast, сохраняйте копию объекта;
  • employees.cpp:111. Коды типов вынесите в константы;
  • EmployeesArray::load код считывания объектов Developer, SalesManager? вынесите в отдельный методы;
  • employees.cpp:111, 169. Дублирование кода определения конкретного типа наследника Employee по числовому коду. Если в программу добавят поддержку нового типа-наследника (e.g. ResourceManager?), придется модифицировать код в нескольких местах.

Баллы: 4. По большому счету неплохо, но нужно исправлять много мелочей.

comment:2 Changed 4 years ago by Артур Гулецкий (huletski)

Resolution: задача сдана
Status: assignedclosed

Дедлайн.

Note: See TracTickets for help on using tickets.