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