Работа над ядром программы завершена
Ну вот, и закончил переделывать ядро программы. Получилось довольно неплохо. Код стал гораздо лаконичнее, изящнее и, главное, более стабильным. Архитектура кода стала гораздо лучше, то есть менее запутанной, загроможденной, а значит, более простой в дальнейшей поддержке, чтобы этот код можно было и дальше улучшать и дополнять. Тестов для проверки работоспособности ядра я сделал не мало - 201 штука. Жаль, что не вписался в более круглое число - 200, ну да ладно, это мои причуды в стремлении к круглым числам. Они никак делу мешать не должны. Но улучшения в классах ядра программы проведены существенные. Всё теперь сделано гораздо больше по уму, чем то было в прошлый раз. И гораздо более, чем в позапрошлый раз, и гораздо-гораздо более, чем в поза-поза-прошлый раз. Ну а уж в сравнении с разами трех-четырех-пяти летний давности и говорить даже нечего. Там бы у меня вообще ничего не получилось сделать, даже цельную но хромую программу собрать бы не удалось. Но зато вот сейчас, спустя пять лет и спустя раз двадцать переделывания программы, наконец-то можно сказать, что я стремлюсь к идеальной версии программы.
Ядро программы - это C# класс для работы с базой данных SQLite. Класс этот разбит на 4 подкласса. То есть имеется абстрактный базовый класс, функциональность которого расширяют три дополнительных класса. Базовый класс имеет базовый набор функций для работы с БД в целом. он имеет функции для установки и разрыва соединения с БД. А так же основную функцию для выполнения SQL-запросов любого типа. Так же там можно присоединить и отсоединить дополнительный внешний файл БД к текущему подключению. А ещё там есть функции для выполнения транзакций, отмены или отката транзакций и завершения транзакций. Да, это базовый набор. Для его расширения служит класс SqliteRequest (расширяющий абстрактный базовый класс), который имеет в своём наборе несколько десятков функций для выполнения различных SQL-запросов. Эти функции предназначены для компоновки SQL-запросов перед их выполнением.
Ну и ещё два класса, расширяющие базовый - SqliteStatement и SqliteFunctions. Первый класс имеет функции для парсинга строк SQL-запросов в объекты и наоборот, для преобразования объектов в строки SQL-запросов. Этот класс также претерпел существенные изменения (улучшения) по сравнению с этим классом из прошлой версии программы. Ну и второй класс из этой пары - это набор дополнительных пользовательских функций, которые могут быть использованы в SQL-запросах и которые расширяют базовый набор функций движка SQLite.
Так что вот такие пироги. Времени на переделывания ядра потрачено немало, гораздо больше, чем ожидалось. Но ведь ядро программы это как фундамент дома. Что бы дом прочно стоял - нужен крепкий и надежный фундамент. Так вот и в программе. Для её стабильной работы и гибкости в поддержке и расширения нужно надежное и стабильное ядро. Что в итоге я наконец-то и сделал. но к идеалу можно лишь стремиться. Достигнуть при этом идеала практически невозможно. Так что делать корректировки в будущем ещё наверняка придется. Но факт то, что вышло намного лучше тех нагромождений, что получились в прошлой версии. Так что вот так.
Ну и далее будем работать над улучшением всего прочего, что было сделано в программе. Далее нужно будет сделать главный класс программы - класс для работы с проектами, класс, который интегрирует в себе ядро программы и её интерфейс, делая мост между фронтендом и бэкендом. Это важное связующее звено. Ну а уж после этого - будем в очередной раз определяться с функциями главного окна программы. Окошко это сейчас пустое. Предстоит расстановка на нем элементов интерфейса. Ну и так далее. Сколько времени займет эта работа сказать трудно даже примерно. Сколько займет - столько займет. Самое главное - это качество, а не скорость. Так что вот так. А от качества в свою очередь зависит успех. Барахло, сделанное по-быстрому не принесет успеха. Так что будем стремиться к совершенству.
Ну и пока на этом всё. До новых постов не знаю когда.

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.