Completed
Pull Request — master (#6)
by Veaceslav
11:19
created

BuilderFactory   A

Complexity

Total Complexity 41

Size/Duplication

Total Lines 207
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 41

Importance

Changes 0
Metric Value
wmc 41
lcom 0
cbo 41
dl 0
loc 207
rs 9.1199
c 0
b 0
f 0

41 Methods

Rating   Name   Duplication   Size   Complexity  
A callbackRequest() 0 4 1
A callbackRequests() 0 4 1
A components() 0 4 1
A contact() 0 4 1
A discriminator() 0 4 1
A encoding() 0 4 1
A encodings() 0 4 1
A example() 0 4 1
A examples() 0 4 1
A externalDocs() 0 4 1
A header() 0 4 1
A headers() 0 4 1
A info() 0 4 1
A license() 0 4 1
A link() 0 4 1
A links() 0 4 1
A mediaType() 0 4 1
A mediaTypes() 0 4 1
A openapi() 0 4 1
A operation() 0 4 1
A operationResponses() 0 4 1
A parameter() 0 4 1
A parameterCollection() 0 4 1
A parameters() 0 4 1
A path() 0 4 1
A paths() 0 4 1
A ref() 0 4 1
A requestBodies() 0 4 1
A requestBody() 0 4 1
A response() 0 4 1
A responses() 0 4 1
A schema() 0 4 1
A schemas() 0 4 1
A securityRequirement() 0 4 1
A securityRequirementCollection() 0 4 1
A server() 0 4 1
A serverCollection() 0 4 1
A serverVariable() 0 4 1
A serverVariables() 0 4 1
A tag() 0 4 1
A tagCollection() 0 4 1

How to fix   Complexity   

Complex Class

Complex classes like BuilderFactory 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 BuilderFactory, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Aweapi\Openapi;
6
7
final class BuilderFactory
8
{
9
    public function callbackRequest(): Builders\CallbackRequestBuilder
10
    {
11
        return new Builders\CallbackRequestBuilder();
12
    }
13
14
    public function callbackRequests(): Builders\CallbackRequestsBuilder
15
    {
16
        return new Builders\CallbackRequestsBuilder();
17
    }
18
19
    public function components(): Builders\ComponentsBuilder
20
    {
21
        return new Builders\ComponentsBuilder();
22
    }
23
24
    public function contact(): Builders\ContactBuilder
25
    {
26
        return new Builders\ContactBuilder();
27
    }
28
29
    public function discriminator(): Builders\DiscriminatorBuilder
30
    {
31
        return new Builders\DiscriminatorBuilder();
32
    }
33
34
    public function encoding(): Builders\EncodingBuilder
35
    {
36
        return new Builders\EncodingBuilder();
37
    }
38
39
    public function encodings(): Builders\EncodingsBuilder
40
    {
41
        return new Builders\EncodingsBuilder();
42
    }
43
44
    public function example(): Builders\ExampleBuilder
45
    {
46
        return new Builders\ExampleBuilder();
47
    }
48
49
    public function examples(): Builders\ExamplesBuilder
50
    {
51
        return new Builders\ExamplesBuilder();
52
    }
53
54
    public function externalDocs(): Builders\ExternalDocumentationBuilder
55
    {
56
        return new Builders\ExternalDocumentationBuilder();
57
    }
58
59
    public function header(): Builders\HeaderBuilder
60
    {
61
        return new Builders\HeaderBuilder();
62
    }
63
64
    public function headers(): Builders\HeadersBuilder
65
    {
66
        return new Builders\HeadersBuilder();
67
    }
68
69
    public function info(): Builders\InfoBuilder
70
    {
71
        return new Builders\InfoBuilder();
72
    }
73
74
    public function license(): Builders\LicenseBuilder
75
    {
76
        return new Builders\LicenseBuilder();
77
    }
78
79
    public function link(): Builders\LinkBuilder
80
    {
81
        return new Builders\LinkBuilder();
82
    }
83
84
    public function links(): Builders\LinksBuilder
85
    {
86
        return new Builders\LinksBuilder();
87
    }
88
89
    public function mediaType(): Builders\MediaTypeBuilder
90
    {
91
        return new Builders\MediaTypeBuilder();
92
    }
93
94
    public function mediaTypes(): Builders\MediaTypesBuilder
95
    {
96
        return new Builders\MediaTypesBuilder();
97
    }
98
99
    public function openapi(): Builders\OpenApiBuilder
100
    {
101
        return new Builders\OpenApiBuilder();
102
    }
103
104
    public function operation(): Builders\OperationBuilder
105
    {
106
        return new Builders\OperationBuilder();
107
    }
108
109
    public function operationResponses(): Builders\OperationResponsesBuilder
110
    {
111
        return new Builders\OperationResponsesBuilder();
112
    }
113
114
    public function parameter(): Builders\ParameterBuilder
115
    {
116
        return new Builders\ParameterBuilder();
117
    }
118
119
    public function parameterCollection(): Builders\ParameterCollectionBuilder
120
    {
121
        return new Builders\ParameterCollectionBuilder();
122
    }
123
124
    public function parameters(): Builders\ParametersBuilder
125
    {
126
        return new Builders\ParametersBuilder();
127
    }
128
129
    public function path(): Builders\PathBuilder
130
    {
131
        return new Builders\PathBuilder();
132
    }
133
134
    public function paths(): Builders\PathsBuilder
135
    {
136
        return new Builders\PathsBuilder();
137
    }
138
139
    public function ref(): Builders\ReferenceBuilder
140
    {
141
        return new Builders\ReferenceBuilder();
142
    }
143
144
    public function requestBodies(): Builders\RequestBodiesBuilder
145
    {
146
        return new Builders\RequestBodiesBuilder();
147
    }
148
149
    public function requestBody(): Builders\RequestBodyBuilder
150
    {
151
        return new Builders\RequestBodyBuilder();
152
    }
153
154
    public function response(): Builders\ResponseBuilder
155
    {
156
        return new Builders\ResponseBuilder();
157
    }
158
159
    public function responses(): Builders\ResponsesBuilder
160
    {
161
        return new Builders\ResponsesBuilder();
162
    }
163
164
    public function schema(): Builders\SchemaBuilder
165
    {
166
        return new Builders\SchemaBuilder();
167
    }
168
169
    public function schemas(): Builders\SchemasBuilder
170
    {
171
        return new Builders\SchemasBuilder();
172
    }
173
174
    public function securityRequirement(): Builders\SecurityRequirementBuilder
175
    {
176
        return new Builders\SecurityRequirementBuilder();
177
    }
178
179
    public function securityRequirementCollection(): Builders\SecurityRequirementCollectionBuilder
180
    {
181
        return new Builders\SecurityRequirementCollectionBuilder();
182
    }
183
184
    public function server(): Builders\ServerBuilder
185
    {
186
        return new Builders\ServerBuilder();
187
    }
188
189
    public function serverCollection(): Builders\ServerCollectionBuilder
190
    {
191
        return new Builders\ServerCollectionBuilder();
192
    }
193
194
    public function serverVariable(): Builders\ServerVariableBuilder
195
    {
196
        return new Builders\ServerVariableBuilder();
197
    }
198
199
    public function serverVariables(): Builders\ServerVariablesBuilder
200
    {
201
        return new Builders\ServerVariablesBuilder();
202
    }
203
204
    public function tag(): Builders\TagBuilder
205
    {
206
        return new Builders\TagBuilder();
207
    }
208
209
    public function tagCollection(): Builders\TagCollectionBuilder
210
    {
211
        return new Builders\TagCollectionBuilder();
212
    }
213
}
214