Все, чему я научился как разработчик программного обеспечения при создании своего продукта
2 января 2024 г.Качество кода
Перед созданием кода крайне важно определить его качество. Это должно быть главным соображением в процессе разработки. Чтобы обеспечить качество кода, мы можем использовать автоматизированные инструменты, помогающие анализировать код. Однако важно отметить, что автоматизированные инструменты могут не охватывать все необходимые правила. В результате проверка кода вручную становится необходимой для обеспечения соблюдения стандартов кодирования. Лично я посвятил много времени анализу кода и проверке соответствия стилю кода. Кроме того, я использовал Python для создания дополнительных проверок кода. Стоит отметить, что не все правила можно проверить автоматически, в некоторых случаях требуется вручную.
Документация по коду
"Теперь, подождите!" - можете спросить вы: "Мы сразу приступим к программированию?" Мой ответ - громкое "Нет".
Прежде чем приступить к этапу кодирования, очень важно рассмотреть документацию кода. Поскольку в Программном обеспечении FVA используются два языка программирования, крайне важно установить четкие правила документирования для обоих C++ и Python.
Таким образом, я познакомился с документированием кода C++ с использованием уценки Doxygen и приобрел навыки создания документации на основе уценки Doxygen. Весьма примечательно, насколько я теперь уверен в настройке Doxygen. strong>Доксиген.
Реализация
Наконец, мы можем перейти к этапу кодирования! Для разработки Программного обеспечения FVA я выбрал универсальный QT, которая поддерживает несколько операционных систем, таких как Windows, macOS и Linux Ubuntu. Поскольку для программного обеспечения требуется пользовательский интерфейс (UI), я изначально использовал QWidgets, включая такие компоненты, как QWizard и QWizardPage.
Однако вскоре я понял, что использование QML предложит более рациональный подход к реализации UI. Поэтому я планирую перейти с QWidgets на QML.
Я был приятно удивлен простотой использования QT для создания плеера. Гибкость QT позволяет мне работать с несколькими UI языки. Чтобы облегчить это, QT предлагает использовать следующие компоненты:
* QTranslator; * QtextCodec; * Qlocale; * QtextDecoder; * QtextEncoder.
Кроме того, я обнаружил, что работать с SQLite с использованием QT чрезвычайно просто. Однако позже я принял решение перейти с SQLite на CSV для хранения данных.
Поскольку мой проект предполагает работу с двумя языками программирования, мне нужно было найти средства интеграции кода Python в приложение C++.
И последнее, но не менее важное: я приобрел знания о том, как создать парсер рифов, добавив еще один ценная возможность для проекта.
История внутренних форматов метаданных
История форматов внутренних метаданных в FVA Software показывает эволюцию того, как программное обеспечение хранит метаданные и управляет ими. Первоначально метаданные хранились на уровне файловой системы внутри фотоальбома. В каждой папке фотоальбома было два файла: folderDescription.json и description.csv.
В файле folderDescription.json хранится информация, общая для всех файлов в папке, например идентификатор устройства, теги, люди<. /strong>, место и событие.
С другой стороны, description.csv использовался для хранения информации о файлах в папке, которая имела разные внутренние метаданные. Там были столбцы для
* Имя * Место * Люди * Устройство * Кто взял * Описание * Сканер
Однако этот подход к хранению метаданных на уровне файловой системы имел ограничения с точки зрения гибкости и удобства обслуживания. Добавление или изменение столбца в folderDescription.json или description.csv потребует обновления всей структуры файловой системы фотоальбома.
Чтобы устранить эти ограничения, было принято решение переместить файлы folderDescription.json и description.csv в базу данных SQLite. Схема базы данных была разработана для хранения той же информации, что и раньше. Во время импорта новых файлов в фотоальбом программное обеспечение FVA создавало SQL обновления базы данных. Эти обновления SQL были сохранены, чтобы иметь возможность воссоздать SQL в любое время. Хотя этот подход повысил гибкость и удобство обслуживания по сравнению с подходом с использованием файловой системы, объединение папок в фотоальбоме по-прежнему приводило к значительным изменениям в обновлениях SQL.
Наконец, было решено объединить всю информацию в один CSV файл для внутренних метаданных. Этот файл CSV не отслеживает, в какой папке хранится файл, что упрощает объединение папок без проблем. Однако это приводит к некоторому дублированию информации, поскольку общая информация для всех файлов в папке просто копируется.
«И чему вы научились?» – можете спросить вы. Извлеченный урок заключается в том, что перед внедрением очень важно подумать, насколько легко вы будете поддерживать изменения в продукте.
История внутренних форматов метаданных в FVA Software демонстрирует важность разработки гибкой и поддерживаемой с самого начала архитектуры системы.
Оригинал