Opened 5 years ago
Closed 4 years ago
#487 closed ожидается проверка (задача сдана)
HW_01
Reported by: | Jura Khudyakov | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | HW #1 (BMP) | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (7)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:3 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:4 Changed 4 years ago by
Исправил указанное, сделал задание на допбаллы
починил Makefile, правда нормальное разделение на режимы сборки сделаю позже, пока что не успеваю
погуглил про exit - говорят, он всё делает корректно. Жду пояснений на вики
biXPelsPerMeter не меняю, обсудили
подобавлял констант и пробелов, надеюсь, стало лучше в этом плане
убрал выполненные пункты в todo)
comment:5 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Многострочности удобно достигать вот так
printf("usage: \n" "hw_01 crop-rotate ‹in-bmp› ‹out-bmp› ‹x› ‹y› ‹w› ‹h›\n" "hw_01 insert ‹in-bmp› ‹out-bmp› ‹key-txt› ‹msg-txt›\n" "hw_01 extract ‹in-bmp› ‹key-txt› ‹msg-txt›\n");
строковые литералы конкатенируются
biSizeImage нужно обновлять в recount
55 if (65 <= c && c < 65 + 26)
кмк, лучше 'A' <= c && c <= 'Z'
0+26 это 26
fscanf возвращает int
&= 0 это все равно что просто =0
в insert должно быть условие while(read_next_chr(...) == 0),
да и вообще поаккуратнее с кодами возврата
insert и extract выглядят крайне похоже, может быть, можно как-то декомпозировать, чтобы меньше было дублирований?
может быть удобно использовать short-circuit evaluation, чтобы уменьшить количество if-else и упростить работу с кодами возврата
сейчас не смотрел, везде ли происходят освобождения, если что-то пошло не так
comment:6 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
Да, с строками удобно, поправил
теперь обновляю biSizeImage
Да, пожалуй, с буквами читабельнее
Поправил тип read-а на int
Да, это вообще был баг: вместо зануления бита, он занулял байт. Теперь всё корректно
С кодами возврата всё было плохо, согласен, многие из них никуда не возвращались. Всё пофиксил
Вынес общие части (открытие файлов и обработка координат) в отдельные функции, остальные либо слишком отличаются (и короткие, к тому же), либо нет смысла выносить (например, обработку ошибок)
Сделал поменьше вложенных if-ов, стало несколько читабельнее, окей
С освобождениями вроде всё хорошо, так как выделяется только один раз и освобождается всегда, так как если происходит выход, то перед ним обязательно стоит free_data. Внезапных выходов из других мест не случается вообще, всё return-ится в main
comment:7 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Не везде есть проверки на not null pointer
В alloc_data можно было бы использовать free_data
276 image->biByteHeight = image->biHeight * 3 + (4 - image->biHeight*3 % 4)%4;
дублируется код расчета alignment-а + непонятно, зачем он вообще в этом месте
В тестовом файле может быть еще перевод строки
Makefile:
не tmyx, а tmux. А еще screen есть.
remind Sokolov about linking libraries etc - вроде бы done
повторный запуск make должен ничего не делать, если ничего не изменилось
Про exit напишу на Вики
При повороте нужно пересчитать biXPelsPerMeter и biYPelsPerMeter, а также biSizeImage при crop и rotate.
Что можно сделать лучше:
больше пробелов
-->
расставить const
в функциях bXtoY специфировать endianness в названии
В целом хорошая первая попытка.