Opened 4 years ago
Closed 4 years ago
#653 closed ожидается проверка (задача сдана)
WW #11
Reported by: | samoylov.viktor | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW cpp_io | Version: | |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:3 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Классы стоит помечать как final, если от них не предполагается наследоваться
Лучше выносить все определения в .cpp, потому что это детали реализации, которые не интересуют пользователей класса, в том числе конструкторы
Лучше избегать совпадения имен аргументов и полей класса, чтобы случайно не ошибиться; конструкции вида x(x) вызывают вопросы (нет ли здесь ошибки). Удобно с помощью code style гарантировать различное именование (например, добавляя уникальный префикс к полям классов)
Переменным стоит давать более понятные имена, чем 'x', 'z' (read_c_str(char *z, size_t x
))
11 EmployeesArray?* ea = new EmployeesArray?();
Какая мотивация делать выделение на куче, а не на стэке?
Кажется, если что-то пошло не так (не удалось чтение / запись), стоит остановить работу приложения. Сейчас проверки есть не везде.
Рекомендую посмотреть на https://en.cppreference.com/w/cpp/io/basic_istream/getline
Текущие реализации le_int32 полагаются на порядок следования байт в представлении числа
void add(const Employee *e)
такой интерфейс порождает неудобство, требуется копирование. Проще было бы исправить сам интерфейс (принимать объект во владение). В неучебных целях здесь стоило бы использовать std::unique_ptr.
Из названия reserve непонятно, что гарантированно произойдет удвоение потребляемой памяти, то есть звать этот метод нужно крайне аккуратно
Инициализации лучше делать в списке инициализации, а не в теле конструктора
Между std::ifstream& EmployeesArray::operator>>(std::ifstream& in) и std::istream& EmployeesArray::operator>>(std::istream& in) код дублируется, может быть, можно от этого дублирования избавиться?
Вместо C-style cast (int32_t) лучше использовать static_cast<int32_t>
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Добавлены манипуляторы для текстового ввода - вывода(теперь почти все assert'ы только в манипуляторах), reserve стал приватным методом, чтобы его невозможно было вызвать неаккуратно, добавлена функция create_employee для уменьшения дублирования кода. Постарался дать переменным в манипуляторах более понятное название, всё остальное также постарался исправить
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
По условию bonus, items (а не Bonus, Items)
На валидном примере имею