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 |
||
8 | abstract class ManagerBase |
||
9 | { |
||
10 | /** |
||
11 | * @var array A list of query parameters that the URL could possibly have |
||
12 | */ |
||
13 | protected $queryParameters = []; |
||
14 | |||
15 | /** |
||
16 | * @var \GuzzleHttp\ClientInterface The request client |
||
17 | */ |
||
18 | protected $client; |
||
19 | |||
20 | /** |
||
21 | * @param \GuzzleHttp\ClientInterface $client The request client |
||
22 | */ |
||
23 | 96 | public function __construct(ClientInterface $client) |
|
27 | |||
28 | /** |
||
29 | * Make the given Request and return as JSON Decoded PHP object. |
||
30 | * |
||
31 | * @param \Psr\Http\Message\RequestInterface $request |
||
32 | * |
||
33 | * @return mixed the value encoded in <i>json</i> in appropriate |
||
34 | * PHP type. Values true, false and |
||
35 | * null (case-insensitive) are returned as <b>TRUE</b>, <b>FALSE</b> |
||
36 | * and <b>NULL</b> respectively. <b>NULL</b> is returned if the |
||
37 | * <i>json</i> cannot be decoded or if the encoded |
||
38 | * data is deeper than the recursion limit |
||
39 | */ |
||
40 | 78 | protected function getResponseJson(RequestInterface $request) |
|
47 | |||
48 | /** |
||
49 | * Get query string of using the options. |
||
50 | * |
||
51 | * @param $options The options |
||
52 | * @return string The query string |
||
53 | */ |
||
54 | 18 | protected function getQueryString($options) { |
|
71 | } |
||
72 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.