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 |
||
| 11 | class NodeDataCollector extends AbstractDataCollector |
||
| 12 | { |
||
| 13 | /** |
||
| 14 | * @var NodeMenu |
||
| 15 | */ |
||
| 16 | private $nodeMenu; |
||
| 17 | |||
| 18 | /** |
||
| 19 | * @var UrlGeneratorInterface |
||
| 20 | */ |
||
| 21 | private $urlGenerator; |
||
| 22 | |||
| 23 | /** |
||
| 24 | * NodeDataCollector constructor. |
||
| 25 | * |
||
| 26 | * @param NodeMenu $nodeMenu |
||
| 27 | * @param UrlGeneratorInterface $urlGenerator |
||
| 28 | */ |
||
| 29 | public function __construct(NodeMenu $nodeMenu, UrlGeneratorInterface $urlGenerator) |
||
| 34 | |||
| 35 | /** |
||
| 36 | * @return array |
||
|
|
|||
| 37 | */ |
||
| 38 | public function getAccessRoles() |
||
| 42 | |||
| 43 | /** |
||
| 44 | * @return array|null |
||
| 45 | */ |
||
| 46 | public function collectData() |
||
| 65 | |||
| 66 | /** |
||
| 67 | * @param Request $request |
||
| 68 | * @param Response $response |
||
| 69 | * @param \Exception|null $exception |
||
| 70 | */ |
||
| 71 | View Code Duplication | public function collect(Request $request, Response $response, \Exception $exception = null) |
|
| 80 | |||
| 81 | /** |
||
| 82 | * Gets the data for template |
||
| 83 | * |
||
| 84 | * @return array The request events |
||
| 85 | */ |
||
| 86 | public function getTemplateData() |
||
| 90 | |||
| 91 | /** |
||
| 92 | * @return string |
||
| 93 | */ |
||
| 94 | public function getName() |
||
| 98 | |||
| 99 | /** |
||
| 100 | * @return bool |
||
| 101 | */ |
||
| 102 | public function isEnabled() |
||
| 106 | |||
| 107 | public function reset() |
||
| 111 | } |
||
| 112 |
This check looks for the generic type
arrayas a return type and suggests a more specific type. This type is inferred from the actual code.