Но ведь ни кто не запрещает разбить эти 200 строк на несколько методов объединённых логически. Не важно, что эти методы больше не будут нигде использоваться, зато они позволят сделать алгоритм более наглядным.
Например первые строки имеют отношение к необходимой инициализации. Никаких локальных переменных в этих строках не создаётся, используются только свойства класса, вот и вынеси их в отдельный метод
PHP:
protected function init()
{
$this->checkIsLoggined('/'.$this->request->_controller_alias.'/info/');
$this->view->goHtmlTitle()->add( $this->view->lang->html_title );
$this->session = Session::getInstance('captcha');
$this->session->start();
$this->view->session_name = $this->session->getName();
$this->view->session_id = $this->session->getId();
$User_Mapper = new User_Mapper();
$this->user = $User_Mapper->createNew();
}
далее, у тебя стоит условие в котором очень много строк, и понимание самого условия затрудняется. Оставь условие в верхнем методе, а "внутренности" вынеси в отдельный метод с понятным названием, например:
PHP:
public function registration()
{
$this->init() // тот метод который мы выделили выше
if (Request::isPost())
{
$this->processRegistration();
}
$Country_Mapper = new Country_Mapper();
$params = array
(
'what' => '`id_country`, `country_name_'.LANG.'` as `country_name`, `country_iso`',
'order' => array('id_country' => 'ASC'),
);
$this->view->countries = $Country_Mapper->getObjectList($params)->getData()->getDataAsArray();
$this->view->captcha_code = $this->request->captcha_code;
$this->view->user = $this->user->getData();
}
Далее, уже в самом методе processRegistration() у нас происходит валидация и действия в случае успешной и не успешной валидации. Так и пиши:
PHP:
protected function processRegistration()
{
if ($err = $this->validateForm())
{
$this->view->err = $err;
//$this->view->user_phones = $user_phones->getData()->getDataAsArray();
} else {
$this->saveUserData();
}
}
И т.д. По такому коду легко перемещаться и разбираться без дополнительного документирования.
Вообще, удобно программировать сверху вниз. Сперва просто описываешь алгоритм верхнего уровня, каждое действие по алгоритму - это метод с соответствующим названием. Потом начинаешь реализовывать эти методы, опять же, на каждое действие записывая метод с понятным названием, и так до самого низкого уровня. Потом, конечно же, какие-то методы сократятся, слившись с основным, какие-то добавятся, и у тебя получиться лёгкий для восприятия код.