Opened 5 years ago
Closed 5 years ago
#142 closed ожидается проверка (задача сдана)
WW #2
Reported by: | Kazakov Maksim | Owned by: | Egor Suvorov |
---|---|---|---|
Component: | WW_strings | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (10)
comment:1 Changed 5 years ago by
Owner: | changed from Egor Suvorov to Kazakov Maksim |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 5 years ago by
Ещё по корректности:
- Папка с объектными файлами должна называться
obj
, а неbin
(в отличие от первой лабы). my_strcmp
у вас сейчас работает за квадрат.
comment:3 Changed 5 years ago by
И ещё:
- Зависимости от заголовков в
Makefile
не соответствует реально включаемым заголовкам.
comment:4 Changed 5 years ago by
И ещё:
- У тестовых функций нет параметров => в сигнатуре должно быть
(void)
, иначе в языке Си это означает "любые параметры" (в C++ не так).
comment:7 Changed 5 years ago by
Owner: | changed from Kazakov Maksim to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:8 Changed 5 years ago by
Owner: | changed from Egor Suvorov to Kazakov Maksim |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Корректность:
- У тестовых функций нет параметров => в сигнатуре должно быть
(void)
, иначе в языке Си это означает "любые параметры" (в C++ не так). - Непонятно, зачем
str.c
включаетstddef.h
Баллы за корректность:
- Корректный makefile и структура папок +1
- Ваши тесты проходят +1
- Корректный strcpy и тест +1
- Корректный strcat и тест +1
- Корректный strcmp и тест +1
- Корректный strlen и тест +1
Стиль (0.5/3):
- Следующие порядки должны совпадать: порядок определений
my_*
, порядок объявленийmy_*
, порядок описания этих функций в стандарте, порядок этих функций в задании, порядок объявлений тестовых функций, порядок определений тестовых функций, порядок вызовов тестов. - Ставьте пустые строчки между разными функциями.
- Ставьте пробелы вокруг бинарных операторов:
x[a + b] = y[c];
- В тестах можно сравнивать прямо строковые литералы (они уже лежат в константной памяти, на них можно брать указатели), незачем их сначала класть в массив.
- Вместо
while (*s != 0)
лучшеwhile (*s)
(и в Си, и в C++, и во всех лабах). - Ставьте пробелы между
for
/while
/if
и следующей скобочкой:while (1)
, неwhile(1)
. - В
test.c
незачем%s
, просто выведите все те же строчки черезprintf
напрямую. - Не объявляйте переменные раньше, чем они первый раз присваиваются. Например, в
test_strcpy
. - Названия переменных
i
,s
путаются между собой и никак не связаны сstr1
иstr2
.
comment:9 Changed 5 years ago by
Owner: | changed from Kazakov Maksim to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
Сделал исправления вовремя, но забыл сделать коммит... Можно все равно получить рецензию на исправления в таком случае?
comment:10 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Кажется, коммит-то вы сделать успели, просто тикет поздно поменяли. Тикет — нестрашно.
Проверялась ревизия 830 или более ранняя.
Корректность есть, 7/7.
Стиль 1.5/3:
- Ставьте пробелы после
;
в циклахfor
. - Инициализируйте и объявляйте переменные только когда они реально нужны, а не в начале функции. Например, в
my_strcat
можно объявитьi
попозже. - Аналогично с
char *a
вtest_strcpy
. Кстати, её можно вообще убрать. - В test.c незачем
%s
, просто выведите все те же строчки через printf напрямую. - В тестах лучше проверять все элементы массива, а не выборочно.
- Ставьте пробелы вокруг бинарных операторов:
x[a + b] = y[c];
- Не используйте в
test_strlen
функциюmy_strcpy
. Лучше просто вызыватьmy_strlen
от нескольких разных строк. Ей принципиально всё равно, с чем работать: массивы или указатели на константную память. - Аналогичная претензия к
test_strcmp
: в этом тесте вообще не должно быть переменных.
Note: See
TracTickets for help on using
tickets.
Корректность:
Стиль:
my_*
, порядок объявленийmy_*
, порядок описания этих функций в стандарте, порядок этих функций в задании, порядок объявлений тестовых функций, порядок определений тестовых функций, порядок вызовов тестов.i < my_strlen(s)
используйте проверку на нулевой символ (еслиi
не может стать строго больше длиныs
).while
по возможности используйтеfor
.x[a + b] = y[c];
&&
:a && b && c
, а неa && (b && c)
.i
, а в некоторых —s
. Плюс иногдаs
обозначает длину строки.