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 |
||
7 | View Code Duplication | trait TwitchTrait |
|
|
|||
8 | { |
||
9 | /** |
||
10 | * Twitch username. |
||
11 | * |
||
12 | * @var string|null |
||
13 | * |
||
14 | * @ODM\String |
||
15 | */ |
||
16 | private $twitchUsername; |
||
17 | |||
18 | /** |
||
19 | * Twitch nickname. |
||
20 | * |
||
21 | * @var string|null |
||
22 | * |
||
23 | * @ODM\String |
||
24 | */ |
||
25 | private $twitchNickname; |
||
26 | |||
27 | /** |
||
28 | * Twitch first name. |
||
29 | * |
||
30 | * @var string|null |
||
31 | * |
||
32 | * @ODM\String |
||
33 | */ |
||
34 | private $twitchFirstName; |
||
35 | |||
36 | /** |
||
37 | * Twitch last name. |
||
38 | * |
||
39 | * @var string|null |
||
40 | * |
||
41 | * @ODM\String |
||
42 | */ |
||
43 | private $twitchLastName; |
||
44 | |||
45 | /** |
||
46 | * Twitch real name. |
||
47 | * |
||
48 | * @var string|null |
||
49 | * |
||
50 | * @ODM\String |
||
51 | */ |
||
52 | private $twitchRealName; |
||
53 | |||
54 | /** |
||
55 | * Twitch profilePicture. |
||
56 | * |
||
57 | * @var string|null |
||
58 | * |
||
59 | * @ODM\String |
||
60 | */ |
||
61 | private $twitchEmail; |
||
62 | |||
63 | /** |
||
64 | * Twitch profile picture. |
||
65 | * |
||
66 | * @var string|null |
||
67 | * |
||
68 | * @ODM\String |
||
69 | */ |
||
70 | private $twitchProfilePicture; |
||
71 | |||
72 | /** |
||
73 | * Twitch access token. |
||
74 | * |
||
75 | * @var string|null |
||
76 | * |
||
77 | * @ODM\String |
||
78 | */ |
||
79 | private $twitchAccessToken; |
||
80 | |||
81 | /** |
||
82 | * Twitch refresh token. |
||
83 | * |
||
84 | * @var string|null |
||
85 | * |
||
86 | * @ODM\String |
||
87 | */ |
||
88 | private $twitchRefreshToken; |
||
89 | |||
90 | /** |
||
91 | * Twitch expires in. |
||
92 | * |
||
93 | * @var string|null |
||
94 | * |
||
95 | * @ODMString |
||
96 | */ |
||
97 | private $twitchExpiresIn; |
||
98 | |||
99 | /** |
||
100 | * Twitch data. |
||
101 | * |
||
102 | * @var array|null |
||
103 | * |
||
104 | * @ODM\Hash |
||
105 | */ |
||
106 | private $twitchData; |
||
107 | |||
108 | /** |
||
109 | * Get Twitch access token. |
||
110 | * |
||
111 | * @return string|null |
||
112 | */ |
||
113 | 3 | public function getTwitchAccessToken() |
|
117 | |||
118 | /** |
||
119 | * Gets the Twitch data. |
||
120 | * |
||
121 | * @return array|null |
||
122 | */ |
||
123 | 3 | public function getTwitchData() |
|
127 | |||
128 | /** |
||
129 | * Get Twitch email. |
||
130 | * |
||
131 | * @return string|null |
||
132 | */ |
||
133 | 3 | public function getTwitchEmail() |
|
137 | |||
138 | /** |
||
139 | * Get Twitch expires in. |
||
140 | * |
||
141 | * @return string|null |
||
142 | */ |
||
143 | 3 | public function getTwitchExpiresIn() |
|
147 | |||
148 | /** |
||
149 | * Get Twitch first name. |
||
150 | * |
||
151 | * @return string|null |
||
152 | */ |
||
153 | 3 | public function getTwitchFirstName() |
|
157 | |||
158 | /** |
||
159 | * Get Twitch last name. |
||
160 | * |
||
161 | * @return string|null |
||
162 | */ |
||
163 | 3 | public function getTwitchLastName() |
|
167 | |||
168 | /** |
||
169 | * Get Twitch nickname. |
||
170 | * |
||
171 | * @return string|null |
||
172 | */ |
||
173 | 3 | public function getTwitchNickname() |
|
177 | |||
178 | /** |
||
179 | * Get Twitch profile picture. |
||
180 | * |
||
181 | * @return string|null |
||
182 | */ |
||
183 | 3 | public function getTwitchProfilePicture() |
|
187 | |||
188 | /** |
||
189 | * Get Twitch real name. |
||
190 | * |
||
191 | * @return string|null |
||
192 | */ |
||
193 | 3 | public function getTwitchRealName() |
|
197 | |||
198 | /** |
||
199 | * Get Twitch refresh token. |
||
200 | * |
||
201 | * @return string|null |
||
202 | */ |
||
203 | 3 | public function getTwitchRefreshToken() |
|
207 | |||
208 | /** |
||
209 | * Get Twitch username. |
||
210 | * |
||
211 | * @return string|null |
||
212 | */ |
||
213 | 3 | public function getTwitchUsername() |
|
217 | |||
218 | /** |
||
219 | * Set Twitch access token. |
||
220 | * |
||
221 | * @param string|null $accessToken |
||
222 | * |
||
223 | * @return self |
||
224 | */ |
||
225 | 3 | public function setTwitchAccessToken($accessToken) |
|
231 | |||
232 | /** |
||
233 | * Sets the Twitch data. |
||
234 | * |
||
235 | * @param array|null $data |
||
236 | * |
||
237 | * @return self |
||
238 | */ |
||
239 | 3 | public function setTwitchData(array $data = null) |
|
245 | |||
246 | /** |
||
247 | * Set Twitch email. |
||
248 | * |
||
249 | * @param string|null $email |
||
250 | * |
||
251 | * @return self |
||
252 | */ |
||
253 | 3 | public function setTwitchEmail($email) |
|
259 | |||
260 | /** |
||
261 | * Set Twitch expires in. |
||
262 | * |
||
263 | * @param string|null $expiresIn |
||
264 | * |
||
265 | * @return self |
||
266 | */ |
||
267 | 3 | public function setTwitchExpiresIn($expiresIn) |
|
273 | |||
274 | /** |
||
275 | * Set Twitch first name. |
||
276 | * |
||
277 | * @param string|null $firstName |
||
278 | * |
||
279 | * @return self |
||
280 | */ |
||
281 | 3 | public function setTwitchFirstName($firstName) |
|
287 | |||
288 | /** |
||
289 | * Set Twitch last name. |
||
290 | * |
||
291 | * @param string|null $lastName |
||
292 | * |
||
293 | * @return self |
||
294 | */ |
||
295 | 3 | public function setTwitchLastName($lastName) |
|
301 | |||
302 | /** |
||
303 | * Set Twitch nickname. |
||
304 | * |
||
305 | * @param string|null $nickname |
||
306 | * |
||
307 | * @return self |
||
308 | */ |
||
309 | 3 | public function setTwitchNickname($nickname) |
|
315 | |||
316 | /** |
||
317 | * Set Twitch profile picture. |
||
318 | * |
||
319 | * @param string|null $profilePicture |
||
320 | * |
||
321 | * @return self |
||
322 | */ |
||
323 | 3 | public function setTwitchProfilePicture($profilePicture) |
|
329 | |||
330 | /** |
||
331 | * Set Twitch real name. |
||
332 | * |
||
333 | * @param string|null $realName |
||
334 | * |
||
335 | * @return self |
||
336 | */ |
||
337 | 3 | public function setTwitchRealName($realName) |
|
343 | |||
344 | /** |
||
345 | * Set Twitch refresh token. |
||
346 | * |
||
347 | * @param string|null $refreshToken |
||
348 | * |
||
349 | * @return self |
||
350 | */ |
||
351 | 3 | public function setTwitchRefreshToken($refreshToken) |
|
357 | |||
358 | /** |
||
359 | * Set Twitch username. |
||
360 | * |
||
361 | * @param string|null $username |
||
362 | * |
||
363 | * @return self |
||
364 | */ |
||
365 | 3 | public function setTwitchUsername($username) |
|
371 | } |
||
372 |
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.