Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
27 | class FileController extends RestController |
||
28 | { |
||
29 | /** |
||
30 | * @var FileManager |
||
31 | */ |
||
32 | private $fileManager; |
||
33 | |||
34 | /** |
||
35 | * @param Response $response Response |
||
36 | * @param RestUtilsInterface $restUtils Rest utils |
||
37 | * @param Router $router Router |
||
38 | * @param ValidatorInterface $validator Validator |
||
39 | * @param EngineInterface $templating Templating |
||
40 | * @param FormFactory $formFactory form factory |
||
41 | * @param DocumentType $formType generic form |
||
42 | * @param ContainerInterface $container Container |
||
43 | * @param SchemaUtils $schemaUtils schema utils |
||
44 | * @param FileManager $fileManager Handles file specific tasks |
||
45 | */ |
||
46 | 1 | View Code Duplication | public function __construct( |
71 | |||
72 | /** |
||
73 | * Writes a new Entry to the database |
||
74 | * |
||
75 | * @param Request $request Current http request |
||
76 | * |
||
77 | * @return Response $response Result of action with data (if successful) |
||
78 | */ |
||
79 | 1 | public function postAction(Request $request) |
|
101 | |||
102 | /** |
||
103 | * respond with document if non json mime-type is requested |
||
104 | * |
||
105 | * @param Request $request Current http request |
||
106 | * @param string $id id of file |
||
107 | * |
||
108 | * @return Response |
||
109 | */ |
||
110 | 1 | public function getAction(Request $request, $id) |
|
136 | |||
137 | /** |
||
138 | * Update a record |
||
139 | * |
||
140 | * @param Number $id ID of record |
||
141 | * @param Request $request Current http request |
||
142 | * |
||
143 | * @return Response $response Result of action with data (if successful) |
||
144 | */ |
||
145 | public function putAction($id, Request $request) |
||
168 | |||
169 | /** |
||
170 | * Deletes a record |
||
171 | * |
||
172 | * @param Number $id ID of record |
||
173 | * |
||
174 | * @return Response $response Result of the action |
||
175 | */ |
||
176 | 1 | public function deleteAction($id) |
|
184 | |||
185 | /** |
||
186 | * Determines the routes and replaces the http method |
||
187 | * |
||
188 | * @param string $routeName Name of the route to be generated |
||
189 | * @param array $files Set of uploaded files |
||
190 | * @param array $routeTypes Set of route types to be recognized |
||
191 | * |
||
192 | * @return array |
||
193 | */ |
||
194 | 1 | private function determineRoutes($routeName, array $files, array $routeTypes) |
|
216 | |||
217 | /** |
||
218 | * Validates the provided request |
||
219 | * |
||
220 | * @param Request $request Http request to be validated |
||
221 | * @param Response $response Http response to be returned in case of an error |
||
222 | * @param string $fileData Alternative content to be validated |
||
223 | * |
||
224 | * @throws \Exception |
||
225 | * @return File|null |
||
226 | */ |
||
227 | 1 | private function validateRequest(Request $request, Response $response, $fileData = '') |
|
240 | |||
241 | /** |
||
242 | * Gathers information into a request |
||
243 | * |
||
244 | * @param Request $request master request sent by client. |
||
245 | * |
||
246 | * @return Request |
||
247 | */ |
||
248 | private function normalizeRequest(Request $request) |
||
261 | } |
||
262 |