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 |
||
| 23 | class ext extends \phpbb\extension\base |
||
| 24 | { |
||
| 25 | /** |
||
| 26 | * Check whether or not the extension can be enabled. |
||
| 27 | * The current phpBB version should meet or exceed |
||
| 28 | * the minimum version required by this extension: |
||
| 29 | * |
||
| 30 | * Requires phpBB 3.1.3 due to usage of container aware migrations. |
||
| 31 | * |
||
| 32 | * @return bool |
||
| 33 | * @access public |
||
| 34 | */ |
||
| 35 | public function is_enableable() |
||
| 41 | |||
| 42 | /** |
||
| 43 | * Overwrite enable_step to enable extension notifications before any included migrations are installed. |
||
| 44 | * |
||
| 45 | * @param mixed $old_state State returned by previous call of this method |
||
| 46 | * |
||
| 47 | * @return mixed Returns false after last step, otherwise temporary state |
||
| 48 | * @access public |
||
| 49 | */ |
||
| 50 | View Code Duplication | public function enable_step($old_state) |
|
| 67 | |||
| 68 | /** |
||
| 69 | * Overwrite disable_step to disable extension notifications before the extension is disabled. |
||
| 70 | * |
||
| 71 | * @param mixed $old_state State returned by previous call of this method |
||
| 72 | * |
||
| 73 | * @return mixed Returns false after last step, otherwise temporary state |
||
| 74 | * @access public |
||
| 75 | */ |
||
| 76 | View Code Duplication | public function disable_step($old_state) |
|
| 93 | |||
| 94 | /** |
||
| 95 | * Overwrite purge_step to purge extension notifications before any included and installed migrations are reverted. |
||
| 96 | * |
||
| 97 | * @param mixed $old_state State returned by previous call of this method |
||
| 98 | * |
||
| 99 | * @return mixed Returns false after last step, otherwise temporary state |
||
| 100 | * @access public |
||
| 101 | */ |
||
| 102 | View Code Duplication | public function purge_step($old_state) |
|
| 121 | |||
| 122 | /** |
||
| 123 | * Notification handler to call notification enable/disable/purge steps |
||
| 124 | * |
||
| 125 | * @author VSEphpbb (Matt Friedman) |
||
| 126 | * @copyright (c) 2014 phpBB Limited <https://www.phpbb.com> |
||
| 127 | * @license GNU General Public License, version 2 (GPL-2.0) |
||
| 128 | * |
||
| 129 | * @param string $step The step (enable, disable, purge) |
||
| 130 | * @param array $notification_types The notification type names |
||
| 131 | * |
||
| 132 | * @return string Return notifications as temporary state |
||
| 133 | * @access protected |
||
| 134 | */ |
||
| 135 | protected function notification_handler($step, $notification_types) |
||
| 147 | } |
||
| 148 |
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.