Opened 4 years ago
Closed 4 years ago
#661 closed ожидается проверка (задача сдана)
WW #11
Reported by: | Ruslan Salkaev | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW cpp_io | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:3 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Классы стоит помечать как final, если от них не предполагается наследоваться.
Не все манипуляции проверяются на успешность
В реализации le-операций используется порядок байт в системе
https://stackoverflow.com/questions/4897844/is-sizeofbool-defined-in-the-c-language-standard
В std::ostream &write_c_str::write(std::ostream &os)
68 while (index < sizeof(_str)) {
Видимо, имелось в виду strlen + 1, потому что sizeof(_str) это 4 либо 8
Можно разом вывести все strlen(_str) + 1 символов
Рекомендую посмотреть на https://en.cppreference.com/w/cpp/io/basic_istream/getline
Сейчас в функциях явно прописаны значения 1,2, из-за чего страдает расширяемость - при добавлении новых Employee будет тяжело следить за тем, что везде все правильно поддержано. Стоит использовать enum (class), чтобы держать все возможные значения в одном месте.
sizeof(_name) - 1
это 7
os.write((char *) &_employees_number, sizeof(_employees_number));
есть же манипулятор write_le_int32, который специально для этого предназначен
Между add_new_employee и load_file дублируется код, может быть, что-нибудь с этим сделать?
Какая мотивация в манипуляторах в конце метода обнулять указатель?
В EmployeesArray? _employees_number всегда же совпадает с _employees.size()?
Если какая-то манипуляция не удалась, стоит немедленно остановить исполнение (достаточно обозначить намерение и поставить assert, хоть это и неправильно, потому что assert - это предположение об условиях работы, и включать в них отсутствие внешних проблем можно только в учебных целях)
Сейчас между выводом Developer и SalesManager? дублируется часть кода (название должности, id должности, имя), можно было бы вынести это как-то в базовый класс (если это выглядит логичным с точки зрения дальнейшего потенциального расширения - например, способ расчет зарплаты у новых работников скорее всего может отличаться)
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Salary -> salary
реализован big endian, а не little endian
53 os.write((char *) &_b, sizeof(_b));
так не стоит делать, поскольку sizeof(bool) не обязательно 1, а в формате просят 1 байт
не все манипуляции с потоками std::cin, std::cout проверяются на успешность (например, в main не проверяются)
с getline можно было не реализовывать посимвольное чтение самостоятельно