Куча частных владений, выполненных один за другим - PullRequest
0 голосов
/ 28 сентября 2010

Это признак того, что здесь нужен какой-то шаблон проектирования?

/**
 * @return string
 */
public function filter($string)
{
    // underscored means private
    $this->_prepareSomething($string); 
    $this->_prepareSomething2();
    $this->_prepareSomething3();
    $this->_prepareSomething4();
    $this->_prepareSaveSomethingToFile();

    return $this->getFiltered();
}

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

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

Кроме того, вызов getFiltered () также сбивает с толку, так как выглядит, как открытый метод вызывается с такой же схемой именования, что и исходная функция.Шаблоны: см. http://c2.com/ppr/wiki/WikiPagesAboutRefactoring/ComposedMethod.html для объяснения шаблона составного метода и http://www.markhneedham.com/blog/2009/06/12/coding-single-level-of-abstraction-principle/ для принципа SLAP.

0 голосов
/ 28 сентября 2010

Похоже, вы уже внедрили шаблон Template Method .Если в вашем классе будут подклассы, которым может потребоваться переопределить определенные шаги в этом процессе, я бы сказал, что вы уже эффективно разработали свой базовый класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...