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
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
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
В Cтандарте, файл с которым прикреплён на гитхабе, ничего про возвращаемые значения функций strcpy, strcat не сказано:
"
Returns
The strcpy function returns the value of s1.
"
Ничего больше по этому поводу я не нашёл, возможно у Вас другая версия Стандарта?
comment:5 Changed 5 years ago by
В приведенном куске в точности описано, что именно функция возвращает. У Вас в тестах не проверяете соответствие этим требованиям.
comment:6 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
Ясно.
comment:7 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Есть ряд мелочей, которые не влияют на корректность:
именование можно было бы сделать лучше (точнее, проще для восприятия);
здесь int max_string_len = 0;
можно сразу указывать нужный тип size_t
и не делать потом лишние касты; в тех же местах достаточно дорогая операция (в общем случае) strlen зовется больше раз, чем нужно; не очень понятна мотивация заглавных букв в NUM_STRINGS
Кмк, сокращение 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.