-
Notifications
You must be signed in to change notification settings - Fork 2
/
code_review.txt
39 lines (19 loc) · 5.85 KB
/
code_review.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Обзор проекта "DigitalWatermarking" Ильи Маркова
Цель программы - цифровая подпись файлов изображений.
При создании проекта использовалось сразу несколько сторонних библиотек.
QT - кросплатформенный фреймворк для создания оконных приложений. В частности, была использована библиотека QWidgets, которая предоставляет способ описания внешнего вида интерфейсов приложения с помощью C++ и XML
CImg - библиотека обработки изображений, удобна тем, что имеет небольшой размер (вся библиотека представляет из себя лишь один заголовочный файл, что крайне удобно при сборке проектов с ее использованием) и довольно проста в использовании
TinyXML - простой XML-парсер, используется в проекте, чтобы подключать внешние XML файлы с параметрами фильтров для изображений
Подобный набор библиотек позволяет создать мощное и, при этом, достаточно гибкое приложение.
Проект Ильи построен по схеме MVC (Model-View-Controller), что четко прослеживается как по разбиению исходного кода на классы, так и по структуре папок проекта. Это достаточно удобная форма построения приложений, так как позволяет отделить внешнее представление от бизнес-логики, но при этом оставить возможность взаимодействия друг с другом этим двум сущностям через контроллер.
За представление (View) отвечает фреймворк QT, с его помощью было реализовано несколько графических окон, через которые пользователь взаимодействует с программой. В основном окне пользователь может выбрать, что он хотел бы сделать: проверить подпись изображения или же подписать изображения. В зависимости от выбора на этом шаге, открываются соответствующие диалоги.
Использование QT является вполне логичным шагом, так как это кросплатформенный фремворк, который позволяет запускать свое приложение не только на настольных системах, но также и на всех популярных мобильных платформах. При этом внешний вид приложения независимо от платформы будет максимально блихок к задумке автора.
Модель разделена на две директории "model" и "utils". В "model" вынесен основной код, который отвечает за бизнес-логику, а в "utils" вспомогательные функции, в том числе отвечающие за загрузку конфигурационных XML-файлов фильтров.
Замеченные недочеты
К недостаткам можно отнести наличие "жестких" ссылок в некоторыйх местах. Например в файле "./Controllers/SimpleController.h" (вероятно, это было сделано в целях отладки работы), а также в файле "CMakeLists.txt" был указан жесткий путь к директории QT. В нескольких файлах была отмечена неоднородность оформления, например, часть открывающих фигурных скобок находилось на одной строке с управляющими конструкциями if и for, а часть на следующей строке.
Еще можно отметить наличие "пустот" переменных размеров в коде из нескольких пустых строк разделяющих инструкции в коде и "бесполезных" файлов, таких как "./utils/ImageUtil.h"и "./utils/MyImage.cpp". Но это нельзя воспринимать серьезно, и, единственное, о чем это может свидетельствовать, так лишь о том, что код находится в процессе разработки. И можно быть уверенным, что к релизу это все будет устранено.
Заключение
В целом, проект построен достаточно ясно. К плюсам оформления можно отнести наличие информативных комментариев и качество разбиения на классы и файлы: все функции достаточно компактны и прозрачны для понимания того, что они делают.
=================================================
Исправления
Удалил ненужные файлы. Поправил code stype, где нашел.