Opened 4 years ago
Closed 4 years ago
#647 closed ожидается проверка (задача сдана)
WW #11
Reported by: | tarasov.denis | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW cpp_io | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Остался отладочный вывод 46 std::cout << stream.fail();
Для ошибок есть специальный поток std::cerr
stream.read(&byte, 1);
можно же просто stream.read()?
не все манипуляции проверяются на успешность
std::cout << a << b;
Происходит 2 операции вывода. Первая операция может не получиться, а вторая - получиться. Флаги нужно проверять после каждой операции вывода (что конечно же затруднительно).
Если для записи это не так важно, то вот со чтением все хуже:
in >> _name >> _base_salary >> _has_bonus;
после ввода
aba caba true
флаги будут гласить, что ввод успешно произошел.
По этой причине гораздо проще иметь дело с исключениями.
Если их в арсенале нет, можно использовать манипуляторы, которые возьмут проверку на себя.
Методы clone больше не нужны
В c++ нет необходимости использовать define для констант. Есть static constexpr; кроме того, в данном случае лучше использовать enum (class)
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
46 _name = new char[max_name_len];
+1.
Классы стоит помечать как final, если от них не предполагается наследоваться, а конструкторы делать explicit (нужно ли пояснить, почему?)
отсутствует проверка успешности чтения из потоков (если где-то что-то пошло не так, программа продолжит исполнение)
какая мотивация не использовать istream.read по аналогии с ostream.write (кажется, что чтение и запись аналогичны друг другу)?
В реализации le-операций используется порядок байт в системе
https://stackoverflow.com/questions/4897844/is-sizeofbool-defined-in-the-c-language-standard
187 std::cout << "Stream is corrupted\n";
не самое понятное для пользователя сообщение
Какая мотивация использовать malloc, а не new[] для EmployeesArray? ?
Зачем в add делать clone и потом удалять исходный объект в месте вызова?