Как выполнить сортировку после удаления операторов `goto`, чтобы людям было легче понять? - PullRequest
0 голосов
/ 23 января 2019

Обслуживание предыдущего проекта компании, сотрудники, которые написали проект, ушли, теперь я должен поддерживать, но теперь проект использует много «готово», я хочу знать, как его читать. Как выполнить сортировку после удаления утверждений 'gto', чтобы людям было легче понять. Короче говоря, я хочу отформатировать грязный код в левой части, чтобы он был похож на правую часть на картинке. how to format your messy code in the left side to be like the right side in the picture

//**this code
defined('IN_IA') or exit('Access Denied');
class Md_daojiaModuleSite extends WeModuleSite
{
    public function doPageUploadmap3()
    {
        goto A25dm;
        ADcuT:
        ZLMND:
        goto wJ44l;
        z_M2Z:
        if (empty($_FILES["file"]["tmp_name"])) {
            goto ZLMND;
        }
        goto RnW8Z;
        M61ng:
        $tempfile = ATTACHMENT_ROOT . "/audios/" . $name;
        goto ReGaV;
        A25dm:
        global $_GPC, $_W;
        goto z_M2Z;
        RnW8Z:
        $exname = strtolower(substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], ".") + 1));
        goto BO3TT;
        wJ44l:
        return $this->result(0, '', "attachment/audios/" . $name);
        goto Qx8PP;
        BO3TT:
        $name = md5(time()) . "." . $exname;
        goto M61ng;
        ReGaV:
        move_uploaded_file($_FILES["file"]["tmp_name"], $tempfile);
        goto ADcuT;
        Qx8PP:
    }
}

1 Ответ

0 голосов
/ 23 января 2019

Вы просто воспроизводите то, что сделал бы переводчик:

  1. Сверху вниз, посмотрите на каждый оператор goto.

    goto A25dm;
    …
    
  2. Перетасуйте соответствующий маркер прыжка и раздел кода прямо за ним.

    A25dm:                       # ← MARKER: starts section
    global $_GPC, $_W;
    goto z_M2Z;                  # ← next goto ends it
    
  3. Итак, вы получите:

    //goto A25dm;                # → no longer needed
    A25dm:                       
    global $_GPC, $_W;
    goto z_M2Z;                  # → proceed with step 1
    

После того, как вы связали каждую marker: сразу за goto, просто удалите или закомментируйте их.

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