Обнаружил очень необычное тестовое задание, вот его текст:
А какой вариант рефакторинга предложили бы вы?
«Взгляните на приведенную ниже функцию. На первый взгляд, как вам показалось, что она делает? Что в ней не так?
Внимательно ознакомьтесь с кодом функции.
Какие потенциальные недочёты и неудобства вы в ней обнаружили?
Каким образом целесообразнее всего произвести рефакторинг или спроектировать код заново? (если это нужно, на ваш взгляд, сделайте это).»
<?
function choose_period($field_name='')
{
global $TEXT, $PHP_SELF, $PERIOD_TO, $PERIOD_FROM;
if (!isset($PERIOD_TO)) $PERIOD_TO = date("d.m.Y",time());
if ($PERIOD_TO) {
ereg("(.+)\.(.+)\.(.+)", $PERIOD_TO, $r);
$PERIOD_TO=mktime(23,59, 59, $r[2],$r[1],$r[3]);
}
if (!isset($PERIOD_FROM))
$PERIOD_FROM = date("d.m.Y", strtotime("-1 month +1day", $PERIOD_TO));
if ($PERIOD_FROM) {
ereg("(.+)\.(.+)\.(.+)",$PERIOD_FROM,$r); $PERIOD_FROM=mktime(0,0,0,$r[2],$r[1],$r[3]);
}
$TEXT.="<form action='$PHP_SELF'>".$GLOBALS['FORM']."
c <input type=text name=PERIOD_FROM value='".($PERIOD_FROM ? date("d.m.Y",$PERIOD_FROM) : "")."' size=12 title='".date("d.m.Y H:i:s",$PERIOD_FROM)."'>
по <input type=text name=PERIOD_TO value='".($PERIOD_TO ? date("d.m.Y",$PERIOD_TO):"")."' size=12 title='".date("d.m.Y H:i:s",$PERIOD_TO)."'>
<input class=b type=submit value='>>>'></form>";
if ($field_name)
{
if ($PERIOD_TO) $WHERE.=" and $field_name<=$PERIOD_TO ";
if ($PERIOD_FROM) $WHERE.=" and $field_name>=$PERIOD_FROM ";
}
return eregi_replace("^ and "," where ",$WHERE);
}?>
А какой вариант рефакторинга предложили бы вы?