Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: Igor Engel Owned by: Sokolov Viacheslav
Component: WW_strings Version: 1.0
Keywords: Cc:

Description


Change History (4)

comment:1 Changed 5 years ago by Sokolov Viacheslav

Что можно улучшить:

Нет проверки предусловий, желательно добавить assert-ы на соблюдение контрактов функций.

Желательно не экономить на названиях. s, s1, s2 - это ОК в контексте абстрактных имен для однотипных функций по работе над строками. a, b - уже не очень хорошо, потому что держать соответствие a <--> s1 , b <--> s2 нужно в голове. Лучше было бы c1, c2. Также лучше не l, а l1 / len1 или даже length1. Последнее спорно в контексте коротких функций, но наверняка лучше для функций длиннее 10 строчек.

Стиль return a-b; не согласован с return my_strcpy(s1 + l, s2) - l;

В функциях check_* можно использовать комбинацию макросов __FILE__ + __LINE__ для более информативного сообщения о неудачном тесте.

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

Last edited 5 years ago by Sokolov Viacheslav (previous) (diff)

comment:2 Changed 5 years ago by Sokolov Viacheslav

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

comment:3 Changed 5 years ago by Igor Engel

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

Вроде все ошибки поправил. Как красиво приделать __LINE__ пока не совсем понимаю. Если его впихнуть в сам check_*, то он будет выводить его строку, что бесполезная информация. А передавать каждый раз аргументом не хочется. Есть конечно вариант нагородить свой макрос... Но будет страааашно.

Last edited 5 years ago by Igor Engel (previous) (diff)

comment:4 Changed 5 years ago by Sokolov Viacheslav

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

Передавать каждый раз аргументом, да. К сожалению, в низкоуровневых языках часто приходится идти на компромиссы - красота vs удобство vs производительность. Как решать такие компромиссы - дело разработчика, "правильного" решения зачастую не существует.

Note: See TracTickets for help on using tickets.