Повторное использование кода

dave_scream

Новичок
Регистрация
02.12.2020
Сообщения
16
Благодарностей
0
Баллы
1
2 дня пользуюсь Зенно, до этого никогда не использовал визуальное программирование. Есть вопрос по организации проектов.

В программировании есть наверное одно из вашнейших правил, код должен максимально использоваться повторно, если вы один раз написали функцию, которая что-то делает, она должна быть написана таким образом, чтобы можно было потом легко использовать её в других проектах без переделок. Какие-то типичные функции гуляют из проекта в проект и создаюсь общие библиотеки своих функций.

Из этого вытекает второе правило, функция должна выполнять только 1 действие, потому что длинную простыню кода, которая делает и первое и второе и третье потом сложно переиспользовать, если тебе нужно только третье к примеру.

Я начал пробовать внедрять этот подход в зенно. Аналогом функций в зенно как мне показалось является кубик проект в проекте.

И вот есть проект с подпроектами
1. Первый подпроект загружает профиль, перемещает его в папку "занятые", чтобы другие потоки его не юзали одновременно, в этом подпроекте есть свой Bad End, который срабатывает только при проблемах на этапе загрузки профиля

2. Другие подпроекты отвечают за установку прокси, геолокации итд

3. далее идет непосредственно работа, после которой в профиль записываются определенные переменные

4. Последний подпроект сохраняет профиль вместе с переменными с результатами работы в папку "свободные", а из папки занятых файл профиля удаляется

Проблема у меня возникла в том, что после загрузки профиля в подпроекте, все переменные, которые в профиле хранятся от предыдущих сеансов работы, появляются только в этом подпроекте. А чтобы они передались в главный проект, _каждую_ переменную необходимо линковать вручную. И то же самое по каждой переменной нужно затем делать в подпроекте сохранения профиля - чтобы из главного проекта все переменные профиля передались в подпроект сохранения.

Вопрос довольно общий, правильный ли это подход с подпроектами в целом или может как-то по другому это решается? как быть с передачей переменных профиля из проекта в подпроект и обратно?
Ведь очень удобно хранить переменные в профиле, например если профиль уже проходил регистрацию на каком-то сайте, в переменных можно это отмечать и позже просто делать проверку.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 489
Благодарностей
3 356
Баллы
113
Попробуйте плагины, возможно они лучше подойдут, единственный пока минус - нет альтернативы старому BotUI.
Это те же подпроекты, со своми удобствами.
 
  • Спасибо
Реакции: dave_scream

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
как по мне , перемещать файлы профилей это плохая идея. во первых это большая нагрузка на диск и вообще на файловую систему. Усугубляется запуском в многопотоке.
Для учета взятых профилей в работу используют списки/таблицы/БД, количество перезаписываемых данных несравненно намного меньше чем размер профиля.
Для появления переменных сохраненных в профиле, надо вынести кубик загрузки профиля в основной проект. Но для 2-х дней работать с неявно определяемыми переменными.... это не та задача которую надо решать новичкам :-)

Ведь очень удобно хранить переменные в профиле, например если профиль уже проходил регистрацию на каком-то сайте, в переменных можно это отмечать и позже просто делать проверку.
Сомнительное удобство. Бывают случаи что профиль перестает загружаться. Ну даже если опустить проблемы с профилями, очень плохая идея загружать все профили по очереди только для того что бы проверить был ли использован этот профиль в яндексе. загрузка профиля может занимать 15-90с. Опять же для таких целей используют правильные инструменты (таблицы/списки/БД), ну ни как переменные из файла профиля :-)
 
Последнее редактирование:

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 972
Благодарностей
4 427
Баллы
113
Не забываем галочку поставить "Выделенный процесс" для многопоточности.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)