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 |
||
| 18 | class admin_helper |
||
| 19 | { |
||
| 20 | /** @var \phpbb\user */ |
||
| 21 | protected $user; |
||
| 22 | |||
| 23 | /** @var \phpbb\language\language */ |
||
| 24 | protected $language; |
||
| 25 | |||
| 26 | /** @var \phpbb\template\template */ |
||
| 27 | protected $template; |
||
| 28 | |||
| 29 | /** @var \phpbb\log\log */ |
||
| 30 | protected $log; |
||
| 31 | |||
| 32 | /** @var \phpbb\ads\location\manager */ |
||
| 33 | protected $location_manager; |
||
| 34 | |||
| 35 | /** @var string root_path */ |
||
| 36 | protected $root_path; |
||
| 37 | |||
| 38 | /** @var string php_ext */ |
||
| 39 | protected $php_ext; |
||
| 40 | |||
| 41 | /** |
||
| 42 | * Constructor |
||
| 43 | * |
||
| 44 | * @param \phpbb\user $user User object |
||
| 45 | * @param \phpbb\language\language $language Language object |
||
| 46 | * @param \phpbb\template\template $template Template object |
||
| 47 | * @param \phpbb\log\log $log The phpBB log system |
||
| 48 | * @param \phpbb\ads\location\manager $location_manager Template location manager object |
||
| 49 | * @param string $root_path phpBB root path |
||
| 50 | * @param string $php_ext PHP extension |
||
| 51 | */ |
||
| 52 | 12 | View Code Duplication | public function __construct(\phpbb\user $user, \phpbb\language\language $language, \phpbb\template\template $template, \phpbb\log\log $log, \phpbb\ads\location\manager $location_manager, $root_path, $php_ext) |
| 62 | |||
| 63 | /** |
||
| 64 | * Assign template locations data to the template. |
||
| 65 | * |
||
| 66 | * @param mixed $ad_locations The form data or nothing. |
||
| 67 | * @return void |
||
| 68 | */ |
||
| 69 | 2 | public function assign_locations($ad_locations = false) |
|
| 81 | |||
| 82 | /** |
||
| 83 | * Assign form data to the template. |
||
| 84 | * |
||
| 85 | * @param array $data The form data. |
||
| 86 | * @return void |
||
| 87 | */ |
||
| 88 | 5 | public function assign_form_data($data) |
|
| 102 | |||
| 103 | 3 | public function assign_errors(array $errors) |
|
| 112 | |||
| 113 | /** |
||
| 114 | * Log action |
||
| 115 | * |
||
| 116 | * @param string $action Performed action in uppercase |
||
| 117 | * @param string $ad_name Advertisement name |
||
| 118 | * @return void |
||
| 119 | */ |
||
| 120 | 1 | public function log($action, $ad_name) |
|
| 124 | |||
| 125 | 1 | public function get_find_username_link() |
|
| 129 | |||
| 130 | |||
| 131 | /** |
||
| 132 | * Prepare end date for display |
||
| 133 | * |
||
| 134 | * @param mixed $end_date End date. |
||
| 135 | * @return string End date prepared for display. |
||
| 136 | */ |
||
| 137 | 5 | public function prepare_end_date($end_date) |
|
| 151 | |||
| 152 | /** |
||
| 153 | * Prepare ad owner for display. Method takes user_id |
||
| 154 | * of the ad owner and returns his/her username. |
||
| 155 | * |
||
| 156 | * @param int $ad_owner User ID |
||
| 157 | * @return string Username belonging to $ad_owner. |
||
| 158 | */ |
||
| 159 | 5 | protected function prepare_ad_owner($ad_owner) |
|
| 175 | } |
||
| 176 |
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.