Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: stotskiy.nikita Owned by: Egor Suvorov
Component: WW_strings Version: 2.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 5 years ago by stotskiy.nikita

Owner: changed from suvororv to Egor Suvorov

comment:2 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to stotskiy.nikita
Type: ожидается проверкаожидаются исправления

Корректность:

  1. Непонятно, зачем make clean удаляет *.o из текущей папки.
  2. Непонятно, зачем test.c включает str.h.
  3. Не хватает const и/или restrict в некоторых местах.
  4. my_strcpy делает немного не то (идея верная)
  5. my_strcat делает немного не то (идея верная)
  6. my_strcmp делает совсем не то.

Стиль:

  1. Вместо циклов while по возможности используйте for.
  2. Ставьте отступы во всех блоках и внутри фигурных скобок.
  3. В тестах лучше не используйте my_strcmp и my_strlen для проверки. Проверяйте прямо содержимое массивов напрямую.

comment:3 Changed 5 years ago by Egor Suvorov

Ещё по корректности:

  1. У тестовых функций нет параметров => в сигнатуре должно быть (void), иначе в языке Си это означает "любые параметры" (в C++ не так).

comment:4 Changed 5 years ago by stotskiy.nikita

Owner: changed from stotskiy.nikita to Egor Suvorov
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:5 Changed 5 years ago by Egor Suvorov

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

По корректности:

  1. У тестовых функций нет параметров => в сигнатуре должно быть (void), иначе в языке Си это означает "любые параметры" (в C++ не так). У вас этого нет в .h-файлах.
  2. Зависимости от заголовков в Makefile не соответствует реально включаемым заголовкам. test.c не включает str.h, но зависит от него.

Баллы за корректность:

  • Ваши тесты проходят +1
  • Корректный strcpy и тест +1
  • Корректный strcat и тест +1
  • Корректный strcmp и тест +1
  • Корректный strlen и тест +1

По стилю 2/3:

  1. В тестах можно сравнивать прямо строковые литералы (они уже лежат в константной памяти, на них можно брать указатели), незачем их сначала класть в массив.
  2. Ставьте пробелы перед открывающей фигурной скобкой: while (1) {, а не while (1).
  3. В test_strcpy вы сейчас копируете пустую строку поверх HELLO. Вряд ли имелось в виду ровно это. Поэтому лучше сравнивать не переменные между собой, а переменную с какой-то константой, которая гарантированно (компилятором гарантированно) не меняется.
  4. Лучше сравнивать strcmp не с -1 и 1, а на > 0 и < 0, потому что функция strcmp из стандартной библиотеки сейчас может не пройти ваши тесты (и при некоторых флагах не пройдёт).
  5. my_strcmp можно упростить: там последние два ифа очень похожи на первые. На самом деле там можно вообще без ифов.
Note: See TracTickets for help on using tickets.