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 |
||
16 | class Metadata implements MetadataInterface |
||
17 | { |
||
18 | /** |
||
19 | * @var string |
||
20 | */ |
||
21 | const PREPARE_DATA_RUN_TYPE_METHOD = 'method'; |
||
22 | |||
23 | /** |
||
24 | * Флаг определят нужно ли запускать workflow |
||
25 | * |
||
26 | * @var boolean |
||
27 | */ |
||
28 | protected $workflowDispatch = false; |
||
29 | |||
30 | /** |
||
31 | * Определяет что мы хотим сделать с workflow. Запустить новый процесс (initialize), или инициировать переход в уже |
||
32 | * запущенном процессе (doAction) |
||
33 | * |
||
34 | * @var string |
||
35 | */ |
||
36 | protected $workflowRunType; |
||
37 | |||
38 | /** |
||
39 | * Флаг определят нужно вызвать метод или сервис, с целью подготовки данных, которые в дальнейшем передаются в workflow |
||
40 | * |
||
41 | * @var bool |
||
42 | */ |
||
43 | protected $flagRunPrepareData = false; |
||
44 | |||
45 | /** |
||
46 | * Значение определяет что является обработчиком подготавливающим данные (метод контроллера, сервис и т.д.) |
||
47 | * |
||
48 | * @var string |
||
49 | */ |
||
50 | protected $prepareDataMethod; |
||
51 | |||
52 | /** |
||
53 | * Строка содержащая имя обработчика (имя метода контроллера или имя сервиса) в котором происходит подготовка данных |
||
54 | * |
||
55 | * @var string |
||
56 | */ |
||
57 | protected $prepareDataHandler; |
||
58 | |||
59 | /** |
||
60 | * Флаг указывает на то что есть условия для запуска workflow |
||
61 | * |
||
62 | * @var bool |
||
63 | */ |
||
64 | protected $flagHasConditions = false; |
||
65 | |||
66 | /** |
||
67 | * Метаданные, содержащии информацию о том как вызвать условия, для проверка нужно ли запускать workflow |
||
68 | * |
||
69 | * @var DispatchConditionMetadata[]|SplObjectStorage |
||
70 | */ |
||
71 | protected $conditions; |
||
72 | |||
73 | /** |
||
74 | * Разрешенные способы запука обработчика отвечающего за подготовку данных для wf |
||
75 | * |
||
76 | * @var array |
||
77 | */ |
||
78 | protected $allowPrepareDataMethod = [ |
||
79 | self::PREPARE_DATA_RUN_TYPE_METHOD => self::PREPARE_DATA_RUN_TYPE_METHOD |
||
80 | ]; |
||
81 | |||
82 | /** |
||
83 | * |
||
84 | */ |
||
85 | public function __construct() |
||
89 | |||
90 | /** |
||
91 | * Флаг определят нужно ли запускать workflow |
||
92 | * |
||
93 | * @return boolean |
||
94 | */ |
||
95 | public function isWorkflowDispatch() |
||
99 | |||
100 | /** |
||
101 | * Устанавливает флаг определяющий нужно ли запускать workflow |
||
102 | * |
||
103 | * @param boolean $workflowDispatch |
||
104 | * |
||
105 | * @return $this |
||
106 | */ |
||
107 | public function setWorkflowDispatch($workflowDispatch) |
||
113 | |||
114 | /** |
||
115 | * Определяет что мы хотим сделать с workflow. Запустить новый процесс (initialize), или инициировать переход в уже |
||
116 | * запущенном процессе (doAction) |
||
117 | * |
||
118 | * @return string |
||
119 | */ |
||
120 | public function getWorkflowRunType() |
||
124 | |||
125 | /** |
||
126 | * |
||
127 | * Определяет что мы хотим сделать с workflow. Запустить новый процесс (initialize), или инициировать переход в уже |
||
128 | * запущенном процессе (doAction) |
||
129 | * |
||
130 | * @param string $workflowRunType |
||
131 | * |
||
132 | * @return $this |
||
133 | * |
||
134 | */ |
||
135 | public function setWorkflowRunType($workflowRunType) |
||
141 | |||
142 | /** |
||
143 | * Флаг определят нужно вызвать метод или сервис, с целью подготовки данных, которые в дальнейшем передаются в workflow |
||
144 | * |
||
145 | * @return boolean |
||
146 | */ |
||
147 | public function isFlagRunPrepareData() |
||
151 | |||
152 | /** |
||
153 | * Устанавливает флаг определяющий нужно вызвать метод или сервис, с целью подготовки данных, которые в дальнейшем |
||
154 | * передаются в workflow |
||
155 | * |
||
156 | * @param boolean $flagRunPrepareData |
||
157 | * |
||
158 | * @return $this |
||
159 | */ |
||
160 | public function setFlagRunPrepareData($flagRunPrepareData) |
||
166 | |||
167 | /** |
||
168 | * Значение определяет что является обработчиком подготавливающим данные (метод контроллера, сервис и т.д.) |
||
169 | * |
||
170 | * @return string |
||
171 | */ |
||
172 | public function getPrepareDataMethod() |
||
176 | |||
177 | /** |
||
178 | * Устанавливает значение определяющие что является обработчиком подготавливающим данные |
||
179 | * (метод контроллера, сервис и т.д.) |
||
180 | * |
||
181 | * @param string $prepareDataMethod |
||
182 | * |
||
183 | * @return $this |
||
184 | * |
||
185 | * @throws Exception\InvalidMetadataException |
||
186 | */ |
||
187 | View Code Duplication | public function setPrepareDataMethod($prepareDataMethod) |
|
197 | |||
198 | /** |
||
199 | * Строка содержащая имя обработчика (имя метода контроллера или имя сервиса) в котором происходит подготовка данных |
||
200 | * |
||
201 | * @return string |
||
202 | */ |
||
203 | public function getPrepareDataHandler() |
||
207 | |||
208 | /** |
||
209 | * Устанавлвивает строку содержащую имя обработчика (имя метода контроллера или имя сервиса) |
||
210 | * в котором происходит подготовка данных |
||
211 | * |
||
212 | * @param string $prepareDataHandler |
||
213 | * |
||
214 | * @return $this |
||
215 | */ |
||
216 | public function setPrepareDataHandler($prepareDataHandler) |
||
222 | |||
223 | /** |
||
224 | * Флаг указывает на то что есть условия для запуска workflow |
||
225 | * |
||
226 | * @return boolean |
||
227 | */ |
||
228 | public function getFlagHasConditions() |
||
232 | |||
233 | /** |
||
234 | * Устанавливает флаг указываеющий на то что есть условия для запуска workflow |
||
235 | * |
||
236 | * @param boolean $flagHasConditions |
||
237 | * |
||
238 | * @return $this |
||
239 | */ |
||
240 | public function setFlagHasConditions($flagHasConditions) |
||
246 | |||
247 | /** |
||
248 | * Возвращает метаданные, содержащии информацию о том как вызвать условия, для проверка нужно ли запускать workflow |
||
249 | * |
||
250 | * @return DispatchConditionMetadata[]|SplObjectStorage |
||
251 | */ |
||
252 | public function getConditions() |
||
256 | |||
257 | /** |
||
258 | * Добавляет метаданные, содержащии информацию о том как вызвать условия, для проверка нужно ли запускать workflow |
||
259 | * |
||
260 | * @param DispatchConditionMetadata $condition |
||
261 | * |
||
262 | * @return $this |
||
263 | */ |
||
264 | public function addConditions(DispatchConditionMetadata $condition) |
||
271 | |||
272 | /** |
||
273 | * Проверка метаданных |
||
274 | * |
||
275 | * @throws Exception\InvalidMetadataException |
||
276 | */ |
||
277 | public function validate() |
||
306 | } |
||
307 |
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.