| 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 |