| Conditions | 10 | 
| Paths | 33 | 
| Total Lines | 80 | 
| Code Lines | 64 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 1 | ||
| Bugs | 0 | Features | 1 | 
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php | ||
| 39 | public function run() | ||
| 40 |     { | ||
| 41 | $judgerModel=new JudgerModel(); | ||
| 42 | $compilerModel=new CompilerModel(); | ||
| 43 | $problemModel=new ProblemModel(); | ||
| 44 | $language=$compilerModel->detail($this->coid)['lcode']; | ||
| 45 | $bestServer=$judgerModel->server($this->oid); | ||
| 46 |         if (is_null($bestServer)) { | ||
| 47 | $this->verdict=[ | ||
| 48 | "verdict"=>"Compile Error", | ||
| 49 | "compile_info"=>"No Available Judger.", | ||
| 50 | "data"=>[] | ||
| 51 | ]; | ||
| 52 | return; | ||
| 53 | } | ||
| 54 | $probBasic=$problemModel->basic($this->pid); | ||
| 55 | $submitURL="http://".$bestServer["host"].":".$bestServer["port"]; | ||
| 56 | $submit_data=[ | ||
| 57 | "solution" => $this->solution, | ||
| 58 | "language" => $language, | ||
| 59 | "max_cpu_time" => $probBasic["time_limit"] * ($language=="java" ? 3 : 1), | ||
| 60 | "max_memory" => $probBasic["memory_limit"] * 1024, | ||
| 61 | "test_case_id" => $probBasic["pcode"], | ||
| 62 | "token" => $bestServer["token"], | ||
| 63 | "spj_version" => null, | ||
| 64 | "spj_config" => null, | ||
| 65 | "spj_compile_config" => null, | ||
| 66 | "spj_src" => null | ||
| 67 | ]; | ||
| 68 |         if ($probBasic["spj"] && $probBasic["spj_version"]) { | ||
| 69 | $submit_data["spj_version"]=$probBasic["spj_version"]; | ||
| 70 | $submit_data["spj_config"]=$probBasic["spj_lang"]; | ||
| 71 | $submit_data["spj_compile_config"]=[ | ||
| 72 |                 "src_name" => "spj-{spj_version}.c", | ||
| 73 |                 "exe_name" => "spj-{spj_version}", | ||
| 74 | "max_cpu_time" => 3000, | ||
| 75 | "max_real_time" => 5000, | ||
| 76 | "max_memory" => 1073741824, | ||
| 77 |                 "compile_command" => "/usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c99 {src_path} -lm -o {exe_path}" | ||
| 78 | ]; // fixed at C99, future linked with spj_lang | ||
| 79 | $submit_data["spj_src"]=$probBasic["spj_src"]; | ||
| 80 | } | ||
| 81 | $judgeClient=new JudgeClient($submit_data["token"], $submitURL); | ||
| 82 | $temp=$judgeClient->judge($submit_data["solution"], $submit_data["language"], $submit_data["test_case_id"], [ | ||
| 83 | 'output' => false, | ||
| 84 | 'max_cpu_time'=>$submit_data['max_cpu_time'], | ||
| 85 | 'max_memory'=>$submit_data['max_memory'], | ||
| 86 | 'spj_version'=>$submit_data['spj_version'], | ||
| 87 | 'spj_config'=>$submit_data['spj_config'], | ||
| 88 | 'spj_compile_config'=>$submit_data['spj_compile_config'], | ||
| 89 | 'spj_src'=>$submit_data['spj_src'] | ||
| 90 | ]); | ||
| 91 |         if (!is_null($temp["err"])) { | ||
| 92 |             if (strpos($temp["data"], 'Compiler runtime error, info: ')!==false) { | ||
| 93 |                 $tempRes=json_decode(explode('Compiler runtime error, info: ', $temp["data"])[1], true); | ||
| 94 | $this->verdict['verdict']=$this->verdictDict[$tempRes["result"]]; | ||
| 95 | $this->verdict['compile_info']=null; | ||
| 96 |             } else { | ||
| 97 | $this->verdict['verdict']=$this->verdictDict["-2"]; | ||
| 98 | $this->verdict['compile_info']=$temp["data"]; | ||
| 99 | } | ||
| 100 | $this->verdict['data']=[]; | ||
| 101 | return $this->verdict; | ||
| 102 | } | ||
| 103 | |||
| 104 | $this->verdict['verdict']="Accepted"; | ||
| 105 |         foreach ($temp["data"] as $record) { | ||
| 106 |             if ($record["result"]) { | ||
| 107 | // well... WA or anyway | ||
| 108 | $this->verdict['verdict']=$this->verdictDict[$record["result"]]; | ||
| 109 | break; | ||
| 110 | } | ||
| 111 | } | ||
| 112 | |||
| 113 | $this->verdict['data']=$temp["data"]; | ||
| 114 | $this->verdict['compile_info']=null; | ||
| 115 |         foreach ($this->verdict['data'] as &$record) { | ||
| 116 | $record["result"]=$this->verdictDict[$record["result"]]; | ||
| 117 | } | ||
| 118 | return $this->verdict; | ||
| 119 | } | ||
| 121 |