Opened 4 years ago
Closed 4 years ago
#664 closed ожидается проверка (задача сдана)
WW# 11
Reported by: | onofriychuk.ilya | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW cpp_io | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (6)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Version: | 1.0 → 2.0 |
---|
comment:3 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:4 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Классы стоит помечать как final, если от них не предполагается наследоваться, а конструкторы делать explicit (нужно ли пояснить, почему?)
void add(const Employee *e)
такой интерфейс порождает неудобство, требуется копирование. Проще было бы исправить сам интерфейс (принимать объект во владение). В неучебных целях здесь стоило бы использовать std::unique_ptr.
Один символ удобнее добавлять с помощью put
54 value = false;
55 if (int(val)) {
56 value = true;
57 }
можно же просто value = static_cast<bool>(val)?
68 for (char ch: str) {
69 os.write(&ch, 1);
70 }
71 char str_end = '\0';
72 os.write(&(str_end), 1);
можно разом вывести strlen(str) + 1 символ
92 if (cur_length == max_length && ch != '\0')
93 is.clear(std::ios::failbit);
по какой причине clear, а не setstate?
В манипуляторах отсутствует проверка успешности взаимодействия с потоком.
Если какая-то манипуляция не удалась, стоит немедленно остановить исполнение (достаточно обозначить намерение и поставить assert, хоть это и неправильно, потому что assert - это предположение об условиях работы, и включать в них отсутствие внешних проблем можно только в учебных целях)
46 Developer* copy = new Developer(*this);
47 return copy;
какая мотивация заводить переменную?
между
158 std::ifstream& operator>>(std::ifstream& ifs, EmployeesArray?& employees) {
и
197 std::istream& operator>>(std::istream& is, EmployeesArray?& employees) {
дублируется код. Может быть, можно с этим что-то сделать?
comment:5 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
Не удалось только избавиться от дублирования кода. Из-за различия операторов ввода для Employee из файла и из стандартного потока
comment:6 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Манипуляторы остались не помеченными как final
read_string проще было бы реализовать с помощью getline, а считать один символ - с помощью get
Потестируйте работу с двоичными файлами. Пока что не работает на примере из условия.