Задать вопрос
drem1lin
@drem1lin
чуть программист, чуть чуть админ...

Как правильно спроектировать программу?

Всем привет, у меня возник такой вопрос. Понадобилось написать программу, которая удаляет следы флешек с компьютера с windows 7/8/10. Я программу написал, но мне совершенно не нравится, какая она получилась и хочется послушать мнение тех, у кого больше опыта в этом. Суть программы, удаление определенных файлов, очистка журналов, и сложный перебор ключей в реестре. Сначала в реестре определяется количество ControlSet и от туда ищутся устройства и ключи, ко ключевым словам, или исходя из ранее полученных данных. Так же имеется много заранее предопределенных путей. Мне пришлось написать много маленьких функций, и множество переменных где приходится хранить ControlSets/Users и найденные ключи, значения, VID_&PID_ и много всякого. Написал я все это в виде одного класса в котором в конце оказалось много переменных и функций, да и очень все стало сложным. И я чувствую, что все это очень по уродски получилось. Вот как архитектурно это сделать красиво и хорошо?
  • Вопрос задан
  • 312 просмотров
Подписаться 3 Оценить 6 комментариев
Пригласить эксперта
Ответы на вопрос 3
@sitev_ru
sitev.ru - мой блог ...
Написал я все это в виде одного класса в котором в конце оказалось много переменных и функций, да и очень все стало сложным.


Как я понимаю, уже всё готово и работает. Можно пойти по одному из путей:

Путь 1-ый. Разбей свой большой класс на несколько логически-законченных частей и оформи их в виде классов.

Путь 2-ой. Выделяй по одной логически-законченной части и оформляй в класс, пока не станет красиво...)

Должно помочь
Ответ написан
Комментировать
@abcd0x00
Суть программы, удаление определенных файлов, очистка журналов, и сложный перебор ключей в реестре.

Нужно построить иерархию исполнителей. А для этого нужно знать, что такое исполнитель.

Как разложить

Допустим, тебе надо удалять файлы - значит, тебе нужен исполнитель "удаляльщик файлов". Там у него несколько действий есть типа "проверить файл", "удалить файл". То есть удалением файлов занимается только он. Бывает, что при удалении файла, нужно его имя как-то составить, проверить, можно ли его удалять. Вот этим всем занимается этот "удаляльщик".

Допустим, тебе надо очистить журнал - значит, тебе нужен исполнитель "обработчик журнала". Там у него несколько действий есть типа "найти запись", "добавить запись", "удалить запись". То есть операциями с журналом занимается только он.

Допустим, тебе надо перебирать ключи в реестре - значит, тебе нужен исполнитель "обработчик реестра". Там у него несколько действий есть типа "найти ключ", "добавить ключ", "удалить ключ", "изменить ключ". То есть операциями с реестром занимается только он.

И вот этим всем у тебя управляет исполнитель "дирижёр". Там у него несколько действий есть типа "поработать с файлами", "поработать с журналом", "поработать с реестром так", "поработать с реестром сяк". То есть он управляет этими другими исполнителями, каждый из которых умеет делать что-то своё.

Дальше ты пишешь функцию, которая управляет этим "дирижёром".

А вообще всё делается наоборот: сначала пишешь функцию управления "дирижёром", потом реализуешь этого "дирижёра" и в его методах реализуешь управление нужными исполнителями, а потом уже реализуешь сами исполнители. Это называется "метод разработки сверху вниз".
Ответ написан
Комментировать
kozura
@kozura
Для того, чтобы программа была правильно спроектирована, нужно её правильно спроектировать:)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы