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 |
||
50 | class NewsController extends AbstractController |
||
51 | { |
||
52 | /** |
||
53 | * @Inject("form.factory") |
||
54 | * @var FormFactory |
||
55 | */ |
||
56 | protected $formFactory; |
||
57 | |||
58 | /** |
||
59 | * @Inject("eccube.event.dispatcher") |
||
60 | * @var EventDispatcher |
||
61 | */ |
||
62 | protected $eventDispatcher; |
||
63 | |||
64 | /** |
||
65 | * @Inject(NewsRepository::class) |
||
66 | * @var NewsRepository |
||
67 | */ |
||
68 | protected $newsRepository; |
||
69 | |||
70 | /** |
||
|
|||
71 | * 新着情報一覧を表示する。 |
||
72 | * |
||
73 | * @Route("/{_admin}/content/news", name="admin_content_news") |
||
74 | * @Template("Content/news.twig") |
||
75 | * |
||
76 | * @param Application $app |
||
77 | * @return \Symfony\Component\HttpFoundation\Response |
||
78 | */ |
||
79 | 1 | View Code Duplication | public function index(Application $app, Request $request) |
101 | |||
102 | /** |
||
103 | * 新着情報を登録・編集する。 |
||
104 | * |
||
105 | * @Route("/{_admin}/content/news/new", name="admin_content_news_new") |
||
106 | * @Route("/{_admin}/content/news/{id}/edit", requirements={"id" = "\d+"}, name="admin_content_news_edit") |
||
107 | * @Template("Content/news_edit.twig") |
||
108 | * |
||
109 | * @param Application $app |
||
110 | * @param Request $request |
||
111 | * @param null $id |
||
112 | * @return array|\Symfony\Component\HttpFoundation\RedirectResponse |
||
113 | */ |
||
114 | 2 | public function edit(Application $app, Request $request, $id = null) |
|
167 | |||
168 | /** |
||
169 | * 指定した新着情報の表示順を1つ上げる。 |
||
170 | * |
||
171 | * @Method("PUT") |
||
172 | * @Route("/{_admin}/content/news/{id}/up", requirements={"id" = "\d+"}, name="admin_content_news_up") |
||
173 | * |
||
174 | * @param Application $app |
||
175 | * @param Request $request |
||
176 | * @param News $News |
||
177 | * @return \Symfony\Component\HttpFoundation\RedirectResponse |
||
178 | */ |
||
179 | 1 | View Code Duplication | public function up(Application $app, Request $request, News $News) |
196 | |||
197 | /** |
||
198 | * 指定した新着情報の表示順を1つ下げる。 |
||
199 | * |
||
200 | * @Method("PUT") |
||
201 | * @Route("/{_admin}/content/news/{id}/down", requirements={"id" = "\d+"}, name="admin_content_news_down") |
||
202 | * |
||
203 | * @param Application $app |
||
204 | * @param Request $request |
||
205 | * @param News $News |
||
206 | * @return \Symfony\Component\HttpFoundation\RedirectResponse |
||
207 | */ |
||
208 | 1 | View Code Duplication | public function down(Application $app, Request $request, News $News) |
225 | |||
226 | /** |
||
227 | * 指定した新着情報を削除する。 |
||
228 | * |
||
229 | * @Method("DELETE") |
||
230 | * @Route("/{_admin}/content/news/{id}/delete", requirements={"id" = "\d+"}, name="admin_content_news_delete") |
||
231 | * |
||
232 | * @param Application $app |
||
233 | * @param Request $request |
||
234 | * @param News $News |
||
235 | * @return \Symfony\Component\HttpFoundation\RedirectResponse |
||
236 | */ |
||
237 | 1 | View Code Duplication | public function delete(Application $app, Request $request, News $News) |
263 | } |
||
264 |