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 |
||
14 | trait LazyIterableTrait |
||
15 | { |
||
16 | public function toArray() |
||
25 | |||
26 | public function toValuesArray() |
||
30 | |||
31 | public function toVector() |
||
35 | |||
36 | public function toImmVector() |
||
40 | |||
41 | public function toSet() |
||
45 | |||
46 | public function toImmSet() |
||
50 | |||
51 | public function lazy() |
||
55 | |||
56 | public function values() |
||
60 | |||
61 | public function map(callable $callback) |
||
65 | |||
66 | public function filter(callable $callback) |
||
70 | |||
71 | public function zip($iterable) |
||
79 | |||
80 | public function take($size = 1) |
||
84 | |||
85 | public function takeWhile($fn) |
||
89 | |||
90 | public function skip($n) |
||
94 | |||
95 | public function skipWhile($fn) |
||
99 | |||
100 | public function slice($start, $len) |
||
104 | |||
105 | public function concat($iterable) |
||
113 | |||
114 | public function first() |
||
122 | |||
123 | public function last() |
||
131 | |||
132 | /** |
||
133 | * {@inheritDoc} |
||
134 | * @return $this |
||
135 | */ |
||
136 | public function each(callable $callable) |
||
144 | |||
145 | /** |
||
146 | * {@inheritdoc} |
||
147 | */ |
||
148 | public function exists(callable $fn) |
||
158 | |||
159 | View Code Duplication | public function concatAll() |
|
171 | |||
172 | /** |
||
173 | * {@inheritDoc} |
||
174 | * @return $this |
||
175 | */ |
||
176 | View Code Duplication | public function groupBy($callback) |
|
192 | |||
193 | /** |
||
194 | * {@inheritDoc} |
||
195 | * @return $this |
||
196 | */ |
||
197 | View Code Duplication | public function indexBy($callback) |
|
207 | |||
208 | /** |
||
209 | * {@inheritdoc} |
||
210 | */ |
||
211 | public function reduce(callable $callback, $initial = null) |
||
219 | } |
||
220 |