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 |
||
13 | class DatacubeApi extends BaseApi |
||
14 | { |
||
15 | |||
16 | /** |
||
17 | * 用户分析数据接口 |
||
18 | */ |
||
19 | |||
20 | /** |
||
21 | * 获取用户增减数据 (最大时间跨度 7 天) |
||
22 | * |
||
23 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
24 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
25 | * |
||
26 | * @return array |
||
27 | */ |
||
28 | View Code Duplication | public function getusersummary($begin_date, $end_date) |
|
42 | |||
43 | /** |
||
44 | * 获取累计用户数据 (最大时间跨度 7 天) |
||
45 | * |
||
46 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
47 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
48 | * |
||
49 | * @return array |
||
50 | */ |
||
51 | View Code Duplication | public function getusercumulate($begin_date, $end_date) |
|
65 | |||
66 | /** |
||
67 | * 图文分析数据接口 |
||
68 | */ |
||
69 | |||
70 | /** |
||
71 | * 获取图文群发每日数据 (最大时间跨度 1 天) |
||
72 | * |
||
73 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
74 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
75 | * |
||
76 | * @return array |
||
77 | */ |
||
78 | View Code Duplication | public function getarticlesummary($begin_date, $end_date) |
|
92 | |||
93 | /** |
||
94 | * 获取图文群发总数据 (最大时间跨度 1 天) |
||
95 | * |
||
96 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
97 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
98 | * |
||
99 | * @return array |
||
100 | */ |
||
101 | View Code Duplication | public function getarticletotal($begin_date, $end_date) |
|
115 | |||
116 | /** |
||
117 | * 获取图文统计数据 (最大时间跨度 3 天) |
||
118 | * |
||
119 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
120 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
121 | * |
||
122 | * @return array |
||
123 | */ |
||
124 | View Code Duplication | public function getuserread($begin_date, $end_date) |
|
138 | |||
139 | /** |
||
140 | * 获取图文统计分时数据 (最大时间跨度 1 天) |
||
141 | * |
||
142 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
143 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
144 | * |
||
145 | * @return array |
||
146 | */ |
||
147 | View Code Duplication | public function getuserreadhour($begin_date, $end_date) |
|
161 | |||
162 | /** |
||
163 | * 获取图文分享转发数据 (最大时间跨度 7 天) |
||
164 | * |
||
165 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
166 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
167 | * |
||
168 | * @return array |
||
169 | */ |
||
170 | View Code Duplication | public function getusershare($begin_date, $end_date) |
|
184 | |||
185 | /** |
||
186 | * 获取图文分享转发分时数据 (最大时间跨度 1 天) |
||
187 | * |
||
188 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
189 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
190 | * |
||
191 | * @return array |
||
192 | */ |
||
193 | View Code Duplication | public function getusersharehour($begin_date, $end_date) |
|
207 | |||
208 | /** |
||
209 | * 消息分析数据接口 |
||
210 | */ |
||
211 | |||
212 | /** |
||
213 | * 获取消息发送概况数据 (最大时间跨度 7 天) |
||
214 | * |
||
215 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
216 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
217 | * |
||
218 | * @return array |
||
219 | */ |
||
220 | View Code Duplication | public function getupstreammsg($begin_date, $end_date) |
|
234 | |||
235 | /** |
||
236 | * 获取消息分送分时数据 (最大时间跨度 1 天) |
||
237 | * |
||
238 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
239 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
240 | * |
||
241 | * @return array |
||
242 | */ |
||
243 | View Code Duplication | public function getupstreammsghour($begin_date, $end_date) |
|
257 | |||
258 | /** |
||
259 | * 获取消息发送周数据 (最大时间跨度 30 天) |
||
260 | * |
||
261 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
262 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
263 | * |
||
264 | * @return array |
||
265 | */ |
||
266 | View Code Duplication | public function getupstreammsgweek($begin_date, $end_date) |
|
280 | |||
281 | /** |
||
282 | * 获取消息发送月数据 (最大时间跨度 30 天) |
||
283 | * |
||
284 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
285 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
286 | * |
||
287 | * @return array |
||
288 | */ |
||
289 | View Code Duplication | public function getupstreammsgmonth($begin_date, $end_date) |
|
303 | |||
304 | /** |
||
305 | * 获取消息发送分布数据 (最大时间跨度 15 天) |
||
306 | * |
||
307 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
308 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
309 | * |
||
310 | * @return array |
||
311 | */ |
||
312 | View Code Duplication | public function getupstreammsgdist($begin_date, $end_date) |
|
326 | |||
327 | /** |
||
328 | * 获取消息发送分布周数据 (最大时间跨度 30 天) |
||
329 | * |
||
330 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
331 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
332 | * |
||
333 | * @return array |
||
334 | */ |
||
335 | View Code Duplication | public function getupstreammsgdistweek($begin_date, $end_date) |
|
349 | |||
350 | /** |
||
351 | * 获取消息发送分布月数据 (最大时间跨度 30 天) |
||
352 | * |
||
353 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
354 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
355 | * |
||
356 | * @return array |
||
357 | */ |
||
358 | View Code Duplication | public function getupstreammsgdistmonth($begin_date, $end_date) |
|
372 | |||
373 | /** |
||
374 | * 接口分析数据接口 |
||
375 | */ |
||
376 | |||
377 | /** |
||
378 | * 获取接口分析数据 (最大时间跨度 30 天) |
||
379 | * |
||
380 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
381 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
382 | * |
||
383 | * @return array |
||
384 | */ |
||
385 | View Code Duplication | public function getinterfacesummary($begin_date, $end_date) |
|
399 | |||
400 | /** |
||
401 | * 获取接口分析分时数据 (最大时间跨度 1 天) |
||
402 | * |
||
403 | * @param string $begin_date 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时,begin_date和end_date的差值只能为0,才能小于1),否则会报错 |
||
404 | * @param string $end_date 获取数据的结束日期,end_date允许设置的最大值为昨日 |
||
405 | * |
||
406 | * @return array |
||
407 | */ |
||
408 | View Code Duplication | public function getinterfacesummaryhour($begin_date, $end_date) |
|
422 | } |
||
423 |
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.