Opened 3 years ago

Closed 3 years ago

#711 closed ожидается проверка (задача сдана)

HW #2

Reported by: Азат Валеев Owned by: Святослав Власов
Component: HW #3 (Huffman) Version: 2.0
Keywords: Cc:

Description

Реализована базовая версия архиватора: тестов нема, исключений -- тоже.

Change History (4)

comment:1 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

Тесты на корректность стабильно ловят сегфолты на декомпрессии :(

  1. Зачем shared_ptr? Ты где-то собираешься разделять владение?
  2. Зачем?!
        try {
            if (argc != huffman::command_size) {
                throw std::logic_error("Unexpected argument count!");
            }
        } catch (std::logic_error& error) {
            std::cout << error.what() << std::endl;
            return -1;
        }
    

Крайне бессмысленная конструкция.

  1. Или реализовывай операторы присваивания/конструкторы копирования правильно, чтобы они копировали объект, либо запрещай их.

comment:2 Changed 3 years ago by Азат Валеев

Version: 1.02.0

Сейчас алгоритм должен работать (ну, пожалуйста :с)
Появились исключения, появились тесты.

  1. В TNode и HuffTree намерено использую обычные указатели, вся выделяемая память -- на векторе _node_storage.
  1. Убрал бессмысленную проверку на соответствие количества аргументов, переданных командной строке.
  1. Убрал операторы присваивания/конструкторы копирования, без них тоже хорошо.
Last edited 3 years ago by Азат Валеев (previous) (diff)

comment:3 Changed 3 years ago by Азат Валеев

Type: ожидаются исправленияожидается проверка

comment:4 Changed 3 years ago by Святослав Власов

Resolution: задача сдана
Status: assignedclosed

Все тесты на корректность прошли.

По стилю:
Используй константные ссылки в аргументах если не собираешься их менять!
Меньше magic numbers. В <climit> есть константа CHAR_BIT, которую лучше юзать вместо 8. Дело не в том, что твой код будет собираться под платформу, где в байте не 8 бит, а в том, что при чтении твоего кода так проще понять что какая цифра обозначает.

По тестам:
Вот так лучше не писать: CHECK(huff_tree._hufftree->_left->_ch == 0xAB);. Если дерево будет иметь не такой вид как ты ожидаешь, то тесты упадут по сегфолту и будет сложно понять в каком месте это случилось. Лучше перед этим поставить REQUIRE(huff_tree._hufftree->left);

В остальном всё очень клёво
15/5/10

Note: See TracTickets for help on using tickets.