Opened 4 years ago
Closed 4 years ago
#526 closed ожидается проверка (задача сдана)
HW #1
Reported by: | stotskiy.nikita | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #1 (BMP) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|---|
Version: | 1.0 → 2.0 |
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
Ок.
Стиль
include/bmp.h
13: лучше добавить разделители в имена: bitmap_file_header;
33: лучше назвать pixel или bgr_pixel, порядок байт лучше сделать bgr, как в bmp (хранятся в памяти программы они в bgr порядке, а не в rgb);
52, 54, 56: насколько я понял, эти функции не предполагается использовать вне src/bmp.c -> в bmp.h из объявлять не надо, в bmp.c нужно пометить как static.
src/bmp.c
16-18: читать можно было построчно: fread(image.data[i], sizeof(*image.data[i]), image.infoheader.biWidth, f)
;
26: s/a/cropped_image;
40-46, 66-72: дублирование функции копирования массива;
40, 66: почему не написать image->data = a
и выйти из функции, зачем еще раз копировать?
50: s/a/rotated_image;
83: записывать изображение можно было построчно;
Баллы: корректность 20, стиль 8.5.
Корректность
Стиль
include/bmp.c
7: лучше определить две структуры, описывающие заголовки, как в описании формата;
7: имена, состоящие из прописных букв, обычно используются для обозначения макросов;
7, 26: определения структур можно вынести в bmp.c;
32: зачем отключать выравнивание для этой структуры?
src/main.c
14: зачем печатать количество аргументов?
src/bmp.c
11: нужно проверять возвращаемое значение fread для обнаружения ошибок;
12, 114: дублирование нетривиального кода, нужно вынести в функцию;
12: misleading name. s/empty_bytes/padding_sz;
21: что мешает считывать построчно, а не попиксельно?
24: fseek может завершиться с ошибкой, нужно проверять возвращаемое значение;
15, 32: дублирование логики создания двумерного массива, можно вынести в отдельную функцию;
40: вместо i, j, k, l лучше использовать более осмысленные имена (например, orig_row_i, crop_col_i и т.п.);
54: что значит 54?
Максимально избавляйтесь от дублирования кода (его много, указал в замечаниях не все), добавляйте проверки значений, которые возвращают функции ввода-вывода.
Баллы: корректность 16, стиль 6.5.