Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: lopatin.mikhail Owned by: Sokolov Viacheslav
Component: WW_strings Version: 2.0
Keywords: Cc:

Description


Change History (8)

comment:1 Changed 5 years ago by Egor Suvorov

Owner: changed from <sokolov> to Sokolov Viacheslav

comment:2 Changed 5 years ago by Sokolov Viacheslav

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

Проект не собирается.

Обычно количество отступов делают одинаковым для всех уровней вложенности, например, 4 за очередной уровень вложенности. Пустые строки в конце не нужны, они мешают работать с файлом с помощью стандартных утилит вроде cat.

Хорошо бы добавить в тесты проверки большего количества случаев: для strcmp разные варианты возврата, например. Кроме того, тест должен проверять не реализацию функции, а ее заявленное поведение. В Стандарте описано это поведение, тест же сейчас не пропустит произвольную (корректную) реалзиацию.

Также рекомендую запустить тесты с -fsanitize=address.

comment:3 Changed 5 years ago by lopatin.mikhail

Owner: changed from Sokolov Viacheslav to Sokolov Viacheslav
Type: ожидаются исправленияожидается проверка

comment:4 Changed 5 years ago by Egor Suvorov

Owner: changed from Sokolov Viacheslav to Sokolov Viacheslav

comment:5 Changed 5 years ago by Sokolov Viacheslav

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

Повторный запуск make приводит к полной пересборке проекта, поскольку имена целей не совпадают с путями к файлам на диске, а obj не является order-only зависимостью.

Вместо указания -lasan следует передавать опцию -fsanitize=address: https://stackoverflow.com/a/40215639

Нет проверки предусловий, желательно добавить assert-ы на соблюдение контрактов функций. (указатели не NULL)

Желательно не экономить на названиях. s, s1, s2 - это ОК в контексте абстрактных имен для однотипных функций по работе над строками, а вот что такое k - остается лишь догадываться. Лучше именовать, например, char* const result.

Реализацию my_strcmp можно упростить.

my_strcpy делает не то, что написано в стандарте; хорошо бы поймать это с помощью теста.

Стиль кода:
while (*p != '\0'){ не согласован с while ( *s2 != '\0' ) {}

В тесты было бы хорошо добавить проверку крайних случаев. Также не хватает проверки возвращаемого значения функций my_strcpy, my_strcat. test_strcat не тестирует одноименную функцию.

Сейчас main() не вызывает тесты. Он декларирует функции.

Напоминаю про отличие void() от void(void).

comment:6 Changed 5 years ago by lopatin.mikhail

Owner: changed from Sokolov Viacheslav to Sokolov Viacheslav
Type: ожидаются исправленияожидается проверка

comment:7 Changed 5 years ago by lopatin.mikhail

Owner: changed from Sokolov Viacheslav to Sokolov Viacheslav

comment:8 Changed 5 years ago by Sokolov Viacheslav

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

На будущее:
$(CFLAGS) - стандартная конвенция для флагов компиляции языка Си
$(CXXLAGS) - стандартная конвенция для флагов компиляции языка Си++
соответственно смешивать их не надо, либо компилируется Си код, либо Си++

К сожалению, в конечном варианте реализация my_strcmp некорректная: 'e' < 'hello'.

Декларация функций выше main не нужна

Для функций не проверяется, что указатель, ими возвращаемый, совпадает с первым аргументои

Note: See TracTickets for help on using tickets.