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
Owner: | changed from <sokolov> to Sokolov Viacheslav |
---|
comment:2 Changed 5 years ago by
Component: | WW_make → WW_strings |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:3 Changed 5 years ago by
Owner: | changed from Sokolov Viacheslav to Sokolov Viacheslav |
---|---|
Type: | ожидаются исправления → ожидается проверка |
comment:4 Changed 5 years ago by
Owner: | changed from Sokolov Viacheslav to Sokolov Viacheslav |
---|
comment:5 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|---|
Version: | 1.0 → 2.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
Owner: | changed from Sokolov Viacheslav to Sokolov Viacheslav |
---|---|
Type: | ожидаются исправления → ожидается проверка |
comment:7 Changed 5 years ago by
Owner: | changed from Sokolov Viacheslav to Sokolov Viacheslav |
---|
comment:8 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
На будущее:
$(CFLAGS) - стандартная конвенция для флагов компиляции языка Си
$(CXXLAGS) - стандартная конвенция для флагов компиляции языка Си++
соответственно смешивать их не надо, либо компилируется Си код, либо Си++
К сожалению, в конечном варианте реализация my_strcmp некорректная: 'e' < 'hello'.
Декларация функций выше main не нужна
Для функций не проверяется, что указатель, ими возвращаемый, совпадает с первым аргументои
Проект не собирается.
Обычно количество отступов делают одинаковым для всех уровней вложенности, например, 4 за очередной уровень вложенности. Пустые строки в конце не нужны, они мешают работать с файлом с помощью стандартных утилит вроде cat.
Хорошо бы добавить в тесты проверки большего количества случаев: для strcmp разные варианты возврата, например. Кроме того, тест должен проверять не реализацию функции, а ее заявленное поведение. В Стандарте описано это поведение, тест же сейчас не пропустит произвольную (корректную) реалзиацию.
Также рекомендую запустить тесты с -fsanitize=address.