Opened 4 years ago
Closed 4 years ago
#944 closed ожидается проверка (задача сдана)
HW #3 subbotina.olesya
Reported by: | subbotina.olesya | Owned by: | Дмитрий Лапшин (lapshin) |
---|---|---|---|
Component: | HW #3 (Huffman) | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
comment:2 Changed 4 years ago by
Summary: | HW #3 Subbotina Olesya → HW #3 subbotina.olesya |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Version: | 1.0 → 2.0 |
Корректность: ни один тест не прошло. Причины разные.
Падает на сжатии. Или не восстанавливает оригинал. Общей причины не увидел. Валгринд орёт.
Тесты: ошибки вполне понятные. Два мейна ему не нравятся. Ну и дальше есть другие ошибки, вполне очевидные.
Стиль:
- Пространства имён?
- Ты не инициализируешь все поля классов, об этом орёт CLion.
- Ещё встречаются небезопасные операции с битами.
- Может инициализировать вместо присваивания?
explicit HuffmanAlgoException(std::string msg) { message_ = std::move(msg); }
Более того... А зачем полеmessage_
если ты не перегружаешьwhat()
? А где-то переопределяешь, но безoverride
. CLI
:string_view
,operator ==
.- Построение дерева как-то сложно. Там же по идее завести сет/кучу узлов, собирать из них пока их хотя бы 2, и всё? Кстати, вектор уникальных указателей скорее всего хуже, чем вектор просто значений.
4/8.
Архитектура:
- Зачем классу CLI конструктор по умолчанию и конструктор с тремя параметрами? Кажется, если есть один, другой не имеет смысла. Если метод
parse
заполняет его состояние, зачем конструктор от 3х? Если он должен быть конструктором, зачем оба? - Аналогично, код вида вызвать конструктор и проиницилизировать поля потом вызывает вопросы в дереве.
- Константа в 256 кажется от чего-то вычесленна.
- Публичные поля точно нужны?
2/5.
comment:3 Changed 4 years ago by
Owner: | changed from Дмитрий Лапшин (lapshin) to subbotina.olesya |
---|
comment:4 Changed 4 years ago by
Owner: | changed from subbotina.olesya to Дмитрий Лапшин (lapshin) |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность: иногда работает. Учитывая ошибки валгринда, надо смотреть в них. Плохой порядок аргументов убил наповал. В основном падает, на пустом файле просто ничего не сделало. 4/9.
Тесты: они сами не собрались. Сами по себе ок, но кажется крайние случаи проверять не очень хотят. 6/8.
Стиль:
- Пространства имён?
inline
у методов внутри определения класса и так подразумевается.- Код построения дерева всё ещё ад.
- Вызов
a.operator <(b)
.
5/8.
Архитектура:
- Вообще, класс
Archiver
с двумя полями, которые то инициализируются, то нет, напрягает. Кажется, если есть что сжимать, и есть куда, то можно всегда оба, и без указателей всяких. - Число полей класса вызывает вопросы: они всегда нужны, или только в процессе построения?
3/5.
У меня, кажется, небольшая беда с запуском тестов. Я там закомментила мэйн в доктесте и вставила его в testMain, потому что по-другому оно не работало (точнее, я не смогла заставить его заработать)))