Complex classes like Stub often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Stub, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
10 | class Stub implements ServiceInterface |
||
11 | { |
||
12 | |||
13 | |||
14 | 1 | public function getAthlete($id = null) |
|
19 | |||
20 | 1 | public function getAthleteStats($id) |
|
25 | |||
26 | 1 | public function getAthleteClubs() |
|
31 | |||
32 | 1 | public function getAthleteActivities($before = null, $after = null, $page = null, $per_page = null) |
|
37 | |||
38 | 1 | public function getAthleteFriends($id = null, $page = null, $per_page = null) |
|
43 | |||
44 | 1 | public function getAthleteFollowers($id = null, $page = null, $per_page = null) |
|
49 | |||
50 | 1 | public function getAthleteBothFollowing($id, $page = null, $per_page = null) |
|
55 | |||
56 | 1 | public function getAthleteKom($id, $page = null, $per_page = null) |
|
61 | |||
62 | 1 | public function getAthleteZones() |
|
67 | |||
68 | 1 | public function getAthleteStarredSegments($id = null, $page = null, $per_page = null) |
|
73 | |||
74 | 1 | public function updateAthlete($city, $state, $country, $sex, $weight) |
|
79 | |||
80 | public function getActivityFollowing($before = null, $page = null, $per_page = null) |
||
85 | |||
86 | 1 | public function getActivity($id, $include_all_efforts = null) |
|
91 | |||
92 | 1 | public function getActivityComments($id, $markdown = null, $page = null, $per_page = null) |
|
97 | |||
98 | 1 | public function getActivityKudos($id, $page = null, $per_page = null) |
|
103 | |||
104 | 1 | public function getActivityPhotos($id, $size = 2048, $photo_sources = 'true') |
|
109 | |||
110 | 1 | public function getActivityZones($id) |
|
115 | |||
116 | 1 | public function getActivityLaps($id) |
|
121 | |||
122 | 1 | public function getActivityUploadStatus($id) |
|
127 | |||
128 | 1 | public function createActivity($name, $type, $start_date_local, $elapsed_time, $description = null, $distance = null) |
|
133 | |||
134 | 1 | public function uploadActivity($file, $activity_type = null, $name = null, $description = null, $private = null, $trainer = null, $data_type = null, $external_id = null) |
|
139 | |||
140 | 1 | public function updateActivity($id, $name = null, $type = null, $private = false, $commute = false, $trainer = false, $gear_id = null, $description = null) |
|
145 | |||
146 | 1 | public function deleteActivity($id) |
|
151 | |||
152 | 1 | public function getGear($id) |
|
157 | |||
158 | 1 | public function getClub($id) |
|
163 | |||
164 | 1 | public function getClubMembers($id, $page = null, $per_page = null) |
|
169 | |||
170 | 1 | public function getClubActivities($id, $page = null, $per_page = null) |
|
175 | |||
176 | 1 | public function getClubAnnouncements($id) |
|
181 | |||
182 | 1 | public function getClubGroupEvents($id) |
|
187 | |||
188 | 1 | public function joinClub($id) |
|
193 | |||
194 | 1 | public function leaveClub($id) |
|
199 | |||
200 | 1 | public function getSegment($id) |
|
205 | |||
206 | 1 | public function getSegmentLeaderboard($id, $gender = null, $age_group = null, $weight_class = null, $following = null, $club_id = null, $date_range = null, $context_entries = null, $page = null, $per_page = null) |
|
211 | |||
212 | 1 | public function getSegmentExplorer($bounds, $activity_type = 'riding', $min_cat = null, $max_cat = null) |
|
217 | |||
218 | 1 | public function getSegmentEffort($id, $athlete_id = null, $start_date_local = null, $end_date_local = null, $page = null, $per_page = null) |
|
223 | |||
224 | 1 | public function getStreamsActivity($id, $types, $resolution = null, $series_type = 'distance') |
|
229 | |||
230 | 1 | public function getStreamsEffort($id, $types, $resolution = null, $series_type = 'distance') |
|
235 | |||
236 | 1 | public function getStreamsSegment($id, $types, $resolution = null, $series_type = 'distance') |
|
241 | |||
242 | 1 | public function getStreamsRoute($id) |
|
247 | |||
248 | /** |
||
249 | * @param string $result |
||
250 | */ |
||
251 | 38 | private function format($result) |
|
255 | } |
||
256 |