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