Change History (4)

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

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

Ошиблась с заглавной буквой в выводе строчки Base Salary. Я пофиксил, после этого все тесты кроме одного прошли -- тест на чтение строки длино 100 символов упал по сегфолту

Стиль

  1. Хочется функции чтения/записи убрать в protected
  2. Мне не нравится, как у тебя написаны функции Employee::read[_binary]. Представь, что тебе нужно добавить нового сотрудника -- тебе придется лезть в эти функции и добавлять туда еще один case в switch. Хочется спроектировать иерархию так, чтобы новые наследники добавлялись максимально легко и с меньшей корректировкой уже написанного кода. Предлагаю вот такую схему: сделай операторы чтения из потока также, как ты сделала операторы вывода для Employee и его наследников, напиши фабричную функцию, которая по типу будет создавать нужного наследника и тогда логика чтения сотрудника у тебя сократится до
    1. Прочитать тип
    2. Создать нужного наследника
    3. Прочитать данные из потока в него
    

Тогда нового наследника можно будет добавить без правки кода базового класса Employee, нужно будет просто добавить новый тип в фабричный метод. А еще ты избавишься от копи-пасты.

  1. Тебе не нужно хранить поле _sz, раз ты используешь вектор. У него есть метод size(), который возвращает свой размер.

7/10

comment:2 Changed 3 years ago by predelina.anastasiya

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

Исправила ошибки

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

Type: ожидается проверкаожидаются исправления
  1. Тест на чтение 100-символьного имени упал :(
  2. Когда ты передаешь строки в функцию (например в конструктор Employee), стоит их передать по константной ссылке, чтобы избежать лишнего копирования
  3. Не нужно писать строку посимвольно в поток. В std::string есть метод c_str(), который возвращает указатель на си-шную строку, и её можно записать в файл одним вызовом write
  4. То же самое про read_binary -- там можно просто с помощью getline прочитать строку из потока прямо в std::string https://en.cppreference.com/w/cpp/string/basic_string/getline

8/10

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

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.