Opened 5 years ago
Closed 5 years ago
#113 closed ожидается проверка (задача сдана)
WW #2
Reported by: | Brilliantov Kirill | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_strings | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
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: | ожидается проверка → ожидаются исправления |
---|
Больше свободного места. Сейчас слишком высокая плотность непробельных символов на пиксель. Переводы строк!
80 - в константы, чтобы если уж менять, то синхронно.
Нет проверки предусловий, желательно добавить assert-ы на соблюдение контрактов функций.
(Указатели - не NULL).
Желательно не экономить на названиях. s, s1, s2 - это ОК в контексте абстрактных имен для однотипных функций по работе над строками, а вот что такое p - уже не очень понятно. Предполагаю, что pointer. Когда функции будут больше 15 строк это будет критично для восприятия программы.
В my_strcmp можно уменьшить количество проверок; можно не создавать переменные, дублирующие уже объявленные, когда объявленные не модифицируются.
Модификатор restrict нужен, чтобы компилятор мог что-нибудь получше соптимизировать. Его не обязательно выставлять при объявлении, чтобы позвать функцию, в которой такой модификатор есть, но и ошибкой это не является.
size_t my_result, result;
можно объявить прямо в месте инициализации. Объявлять однотипные переменные через запятую может быть не лучшей идеей, потому что в некоторых случаях от этого страдает читаемость: int* a, b;
(какого типа b?)
Было бы хорошо избавиться от дублирования кода. Программу можно декомпозировать лучше.
Названия: можно лучше. Вне контекста тяжело понять, что такое test_res_cmp.
Было бы здорово иметь больше тестов для strcat.
Кроме того, не хватает проверок значения, возвращаемого функциями my_strcat, my_strcpy.
comment:4 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
Я, к сожалению, не увидел вовремя, что Вы проверили (на почту не пришло почему-то, хотя я подвязал почту сюда...). Увидел, когда отправлял лабу по списку. Поэтому только сейчас исправил. Видимо, уже нельзя, но я исправил)
comment:5 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
в новой версии поломан my_strcat (не инкрементируется len1)
но стало проще воспринимать код тестов
оцениваю версию на момент дедлайна
Makefile:
codestyle: лучше определиться с именованием констант - ТАК или так.
Задание выполнено неверно, потому что у функции strlen другая сигнатура.
include guard STRH не очень надежен, потому что достаточно высока вероятность конфликта (с другими макросами, использующимися, в частности, в стандартной библиотеке языка). Лучше выбирать более длинные и уникальные имена.
Текущие реализации недостаточно эффективные: где-то лишние аллокации, где-то просто в 3 раза больше операций, чем нужно.
Реализация функции strcpy некорректная, потому что делает не то, что описано в стандарте. hint: все функции из задания не предполагают никаких (де)аллокаций.
test_res_cmp реализуется проще с помощью функции sign.
Обращаю внимание, что malloc может вернуть NULL. Это влияет на (формальную) корректность программы.