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