Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: sukhodolskiy.maksim Owned by: Sokolov Viacheslav
Component: WW_strings Version: 3.0
Keywords: Cc:

Description


Change History (7)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

Кмк, сокращение result -> res того не стоит. Это идет в диссонанс с остальным именованием (destination, а не dst).

Возможно, вариант стиля с расстановкой пробелов while (*now != '\0') { немного выигрывает по читаемости.

Название assert_help неудачное, потому что без реализации невозможно сказать, что эта функция должна делать. Кроме того, ее можно проще реализовать с помощью функции sign.

Реализацию test_strcmp можно упростить, используя вспомогательный массив const char** stringsToCompare.

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

Вместо printf("%s\n", "OK"); можно просто printf("OK\n");

Было бы неплохо придумать более говорящие имена, чем s2, s3, good_s1.

comment:2 Changed 5 years ago by sukhodolskiy.maksim

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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

Если следовать моему предложению по codestyle и пробелы, то логично так делать везде: и в определениях функций, и в циклах for, ...

Реализация функции sign сейчас некорректная

Декларацию можно сделать более явной: const char* strings_to_compare[] = {"maslo", "maslo", "maslorij", "abezyana", ""};

В Стандарте написано больше требований на возвращаемые значения функций strcpy, strcat, чем просто ненулевой указатель.

Можно сильнее декомпозировать программу. Например, в случае test_strcpy, можно избавиться от дублирования кода, отвечающего за тестирование.

Обращаю внимание, что сейчас при изменении test_strcmp легко ошибиться: добавить новую строку и забыть поменять 5 на что-то другое. Было бы лучше, если бы корректность гарантировал компилятор.

comment:4 Changed 5 years ago by sukhodolskiy.maksim

В Cтандарте, файл с которым прикреплён на гитхабе, ничего про возвращаемые значения функций strcpy, strcat не сказано:
"
Returns
The strcpy function returns the value of s1.
"
Ничего больше по этому поводу я не нашёл, возможно у Вас другая версия Стандарта?

comment:5 Changed 5 years ago by Sokolov Viacheslav

В приведенном куске в точности описано, что именно функция возвращает. У Вас в тестах не проверяете соответствие этим требованиям.

comment:6 Changed 5 years ago by sukhodolskiy.maksim

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

Ясно.

comment:7 Changed 5 years ago by Sokolov Viacheslav

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

Есть ряд мелочей, которые не влияют на корректность:
именование можно было бы сделать лучше (точнее, проще для восприятия);
здесь int max_string_len = 0; можно сразу указывать нужный тип size_t и не делать потом лишние касты; в тех же местах достаточно дорогая операция (в общем случае) strlen зовется больше раз, чем нужно; не очень понятна мотивация заглавных букв в NUM_STRINGS

Note: See TracTickets for help on using tickets.