Ответы пользователя по тегу ООП
  • Рефакторинг кода. Как оптимизировать количество if?

    Skiphog
    @Skiphog
    Crutch developer
    Вариантов реализации множество, но если по простому, что можно поступить так:
    Создать одноименные методы в зависимости от ожидаемых типов, которые может вернуть $message->getType();
    И собственно их и вызывать ))
    Так вы избавитесь от кучи if и код каждой реализации разместите в свои методы.

    Псевдокод:
    public function resolve()
    {
        // ....
    
        $type = $message->getType();
        
        // Если такого метода не существует, то можно бросить Исключение или еще как-то обработать ошибку
        // А можно вообще ничего не проверять, а сделать обработку в __call(). Вариантов тоже много
        if (!method_exists($this, $type)) {
            throw new Exception(...);
        }
        
        // Вызвать подходящий метод
        return $this->$type(); //либо call_user_func...()
    }
    
    protected function text()
    {
        //code
    }
    
    protected function poll()
    {
        //code
    }
    
    protected function image()
    {
        //code
    }

    По примерно такой же схеме можно использовать отдельные классы, сервисы и т.п.
    Ответ написан
    Комментировать