nepster-web
@nepster-web

Как оптимизировать линейный код?

Собственно задался вопросом по организации кода, меня интересует несколько моментов, которые я хочу уточнить на примере.

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

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

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

Я читал книги по программированию, но без практики это ничего не стоит и я не совсем понял некоторые моменты. К примеру у меня есть общий класс активации:

// начинается класс с пачки неймспейсов нужных библиотек с различных модулей и компонентов 

// я сделал основную функцию для акцивации 
public function run($userId) {
       // тут мы проверяем идентификатор пользователя, открываем транзакцию ...
       // проверяем активный он или нет
      // собираем его линию вышестоящих спонсоров и тп. 

     # теперь начинаю с этого момента у меня есть подозрения на "это работает, но это могло бы работать лучше"
     
            // Действия, которые будут совершены с текущим пользователем 
            $this->processActivateUser();
            
            // Действия, которые будут совершены с вышестоящими спонсорами
            $this->processSponsors();
            
            // Лидерский бонус
            $this->processLeaderBonus();
            
            // Действия связанные с бинарной структурой
            $this->processBinary();

}

    private function processActivateUser() {

    }

    private function processSponsors() {
        
    }

    private function processBinary() {

    }

    private function processLeaderBonus() {

    }


Тоесть основной мой вопрос по поводу вот этой вот линейности, правильно ли это так писать код или возможно что-то где-то можно сделать лучше ? Поделитесь пожалуйста советом и объясните правильно ли использовать такой подход?
  • Вопрос задан
  • 2329 просмотров
Решения вопроса 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Сначала спросонья подумал что у Вас спагетти код, хотел кинуть ссылку на mvc.
Потом открыл второй глаз, прочитал еще раз - у Вас все хорошо.

Единственное что вызывает потенциальный вопрос - как вы работаете с транзакциями.
мне кажется что открывать и закрывать транзакцию в одной функции, а работать с ней из других - это не очень очевидно.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Да прибудет с вами принцип единой ответственности.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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