1. PHP / Говнокод #9781

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    /* добавленный код: */
    public function preDispatch() {
       $id = (int) $this->_request->id;
       if ($id > 0) {
            $this->_item = doctrine("Item")->findOneById($id);
            if (!is_object($this->_item)) {
                throw new PageException_NotFound;
            }
        }
    }
    
    /* выброшенный код: */
    public function indexAction() {
        $itemId = (int) $this->_request->id;
        $item = doctrine("item")->findOneBy(array("id" => $itemId, "owner" => $this->_owner->getId()));
        if (is_object($item)) {
        /* ... */
        }
    }

    Вот такой рефакторинг. Теперь кто хочет - может редактировать все, что не лень подставить в запрос.

    Запостил: Wivern, 27 Марта 2012

    Комментарии (4) RSS

    • Ну вроде логично сначала нашел элемент, если не нашел выплюнул Exception , а права проверяются в другом месте, я как понимаю, просто разбил метод indexAction на два, по идее остальные экшины будут работать с переменой $this->item, причем возможно каждому экшену нужен будет свой уровень доступа к записи, не обязательно быть владельцем.

      Хотя это так мои фантазии, так как не знаю того что и как у вас там делается.
      Ответить
      • Думаю автор показал, что при изменении кода потерялась проверка владельца item'a.
        А если проверка на владельца была перенесена в другое место, а не потерялась, это был бы не говнокод.
        Ответить
    • если вы что-то переписали, то это еще не значит, что новый код лучше старого...
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий