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 Sokolov Viacheslav

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

Makefile:
codestyle: лучше определиться с именованием констант - ТАК или так.

Задание выполнено неверно, потому что у функции strlen другая сигнатура.

include guard STRH не очень надежен, потому что достаточно высока вероятность конфликта (с другими макросами, использующимися, в частности, в стандартной библиотеке языка). Лучше выбирать более длинные и уникальные имена.

Текущие реализации недостаточно эффективные: где-то лишние аллокации, где-то просто в 3 раза больше операций, чем нужно.

Реализация функции strcpy некорректная, потому что делает не то, что описано в стандарте. hint: все функции из задания не предполагают никаких (де)аллокаций.

test_res_cmp реализуется проще с помощью функции sign.

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

comment:2 Changed 5 years ago by Brilliantov Kirill

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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 Brilliantov Kirill

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

Я, к сожалению, не увидел вовремя, что Вы проверили (на почту не пришло почему-то, хотя я подвязал почту сюда...). Увидел, когда отправлял лабу по списку. Поэтому только сейчас исправил. Видимо, уже нельзя, но я исправил)

comment:5 Changed 5 years ago by Sokolov Viacheslav

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

в новой версии поломан my_strcat (не инкрементируется len1)

но стало проще воспринимать код тестов

оцениваю версию на момент дедлайна

Note: See TracTickets for help on using tickets.