Change History (3)

comment:1 Changed 3 years ago by Святослав Власов

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

Тесты прошли

По стилю:

  1. const int32_t max_name = 101; --- отлично, что решила вынести в константу, только лучше писать её не в заголовочном файле, а в исполняемом. Логика тут в том, что в из заголовочного файла эта константа попадет во все файлы, в которые тот будет заинклюжен. А она там совершенно не нужна.
  2. Использование std::vector и std::string в этой лабе не требовалось, но они бы здорово упростили тебе жизнь
  3. is_valid при неудаче просто выводит сообщение в консоль и программа продолжает работу, хотя состояние потоков невалидное и ошибка никак не устранена. Лучше вместо этого просто падать.
  4. Вместо '\n' лучше использовать std::endl
  5. У тебя в функциях read/write[_binary] у Developer и SalesManager есть явная копи-паста -- чтение общих полей. Этот код можно вынести в функцию базового класса и вызывать её оттуда.
  6. Читать символы из потока побайтово не обязательно. У функций getline есть перегрузка с третьим аргументом -- символом окончания ввода, которая читает строчку из потока до этого символа.
  7. Выделение фабричного метода static Employee* Employee::CreateByType(int type) позволило бы избежать копи-пасты в операторах >>

8/10

comment:2 Changed 3 years ago by Наталья Марцинковская

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

comment:3 Changed 3 years ago by Святослав Власов

Resolution: задача сдана
Status: assignedclosed
  1. Странно, что ты общий код для write,write_binary и read_binary вынесла в Employee, но почему-то Employee::read у тебя абстрактная и читаешь ты общие поля в операторе<<. Это не страшно, но выглядит не очень красиво.
  2. Внутри оператора ввода/вывода не нужно падать по ассерту. В случае неудачи при чтении/записи оператор должен перевести поток в невалидное состояние, а падать на ассерте нужно в том месте, где этот оператор вызвался

В остальном всё неплохо, 10/10

Note: See TracTickets for help on using tickets.