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:2 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:3 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Вроде все ошибки поправил. Как красиво приделать __LINE__
пока не совсем понимаю. Если его впихнуть в сам check_*
, то он будет выводить его строку, что бесполезная информация. А передавать каждый раз аргументом не хочется. Есть конечно вариант нагородить свой макрос... Но будет страааашно.
comment:4 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Передавать каждый раз аргументом, да. К сожалению, в низкоуровневых языках часто приходится идти на компромиссы - красота vs удобство vs производительность. Как решать такие компромиссы - дело разработчика, "правильного" решения зачастую не существует.
Note: See
TracTickets for help on using
tickets.
Что можно улучшить:
Нет проверки предусловий, желательно добавить 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. Это влияет на (скорее формальную) корректность тестов.