Opened 3 years ago

Closed 3 years ago

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

WW #3

Reported by: ushakov.vladislav Owned by: Святослав Власов
Component: WW_mergesort Version: 3.0
Keywords: Cc:

Description


Change History (6)

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

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

Не могу проверить корректность, программа не собирается:

[svloyso:lab_03]$ make
make: *** No rule to make target 'lab_03', needed by 'all'.  Stop.

Стиль.

  1. Длинные строки (>80 символов) нужно разбивать на несколько. Примеры того, как строки должны разбиваться для условий, вызовов функций, объявлений функций и т.д. можешь посмотреть вот тут -- ​https://google.github.io/styleguide/cppguide.html#Formatting
  2. Когда код написан одной большой портянкой -- его тяжело читать. Лучше, когда он разбит на логические блоки пустыми строками.
  3. Нельзя пользоваться memcpy, его нужно написать самому.
  4. Объявление функции merge не нужно в заголовочном файле, это детали реализации.
  5. Функция должна называться mergesort, а не merge_sort
  6. Очень много избыточных ассертов. Не нужно их пихать повсюду, хуже конечно от них не станет, но лучше их ставить только там, где они действительно могут сработать.
  7. Не надо выделять память под входные данные на стеке. Если входных данных будет достаточно много -- твоя программа упадет со stackoverflow
  8. Лишнего пробела в конце строки выводить не нужно
  9. Зачем дополнительный массив под строки, если можно передать argv?

Не передавай ключик -fsanitize=address компилятору, это сводит с ума валгринд и ломает тесты.

0/10

comment:2 Changed 3 years ago by ushakov.vladislav

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

Починил почти все (8/9). Не понял, что надо сделать с выделением памяти под входные данные.

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

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

Корректность -- 3/7.

  1. Пустой массив обрабатывается некорректно -- лезешь не в свою память.
  2. Нельзя выделять динамический массив на стеке -- при большом объеме данных стек переполнится.

Стиль -- 2/3

  1. В my_memcpy лучше использовать синтаксис массивов
  2. Выделенная память не проверяется ассертами.
  3. Не хватает пустых строк, отделяющих логические блоки кода друг от друга. Сплошную портянку кода без логических пауз читать сложно.
  4. Почему main.c не зависит от mergesort.h? Если сигнатура mergesort изменится, то main.o не перекомпилируется и ты получишь скомпилированный нерабочий код.

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

Починил почти все (8/9). Не понял, что надо сделать с выделением памяти под входные данные.

Надо выделять её на куче.

comment:5 Changed 3 years ago by ushakov.vladislav

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

Кажется, теперь точно все исправил :)

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

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

Корректность -- 7/7
Стиль -- 2.5/3. Не проверяешь ассертом выделенную память в main.

Note: See TracTickets for help on using tickets.