Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: Surkov Petr Owned by: Sokolov Viacheslav
Component: WW_strings Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

Для цели lab_02 зависимость obj можно вообще не указывать, а если указывать - то как order-only зависимость. Сейчас же повторный запуск make приводит к перекомпоновке lab2, даже если в этом нет необходимости.
Также лучше согласовать название цели и имя выходного файла.

hint: в стандартных linux утилитах флаги зачастую можно передавать вместе, например, rm -rf. Выгода: экономия двух символов; все флаги описаны в одном месте.

Сейчас в реализации есть undefined behaviour. https://en.cppreference.com/w/c/language/restrict

Стоит добавить проверку предусловий (соблюдение контрактов) в функции.

В некоторых местах реализации можно немного упростить, например, проверка && *s2 в my_strcmp избыточна - ее удаление не влияет на корректность программы.

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

Обращаю внимание, что malloc может вернуть NULL (формально влияет на корректность программы).

Рекомендую запустить тесты с address sanitizer.

comment:2 Changed 5 years ago by Surkov Petr

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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

Все еще повторный запуск make приводит к перекомпоновке lab2, даже если в этом нет необходимости.

Все еще стоит добавить проверку предусловий (соблюдение контрактов) в функции. В данном случае явно предполагается, что на вход передаются ненулевые указатели.

В тесты стоит добавить проверку корректности возвращаемого значения для функций my_*.

Хотелось бы больше тестов для крайних случаев (в данном случае - пустых строк).

Чем мотивировано использование calloc?

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

comment:4 Changed 5 years ago by Surkov Petr

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

comment:5 Changed 5 years ago by Sokolov Viacheslav

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

Не проверяется, что my_strcmp корректно вернет отрицательное значение;
не проверяется, что указатель совпадает с первым аргументом в соответствии со Стандартом

Note: See TracTickets for help on using tickets.