| Conditions | 1 |
| Paths | 1 |
| Total Lines | 85 |
| Code Lines | 57 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 170 | public function testCanUseRecordEncoder() |
||
| 171 | { |
||
| 172 | $data = (object)[ |
||
| 173 | 'post' => (object)[ |
||
| 174 | 'id' => 123, |
||
| 175 | 'title' => 'Lorem ipsum dolor', |
||
| 176 | 'content' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique iste voluptatum sequi. Officia dignissimos minus ipsum odit, facilis voluptatibus veniam enim molestiae ipsam quae temporibus porro necessitatibus quia non mollitia!', |
||
| 177 | 'date' => (new DateTime())->format('d/m/yy H:m'), |
||
| 178 | 'author' => (object)[ |
||
| 179 | 'userName' => 'someUser12', |
||
| 180 | 'displayName' => 'Sam Smith' |
||
| 181 | ], |
||
| 182 | 'url' => 'https://www.url.tld/post/123/lorem-ipsum-dolor' |
||
| 183 | ], |
||
| 184 | 'comments' => [ |
||
| 185 | (object)[ |
||
| 186 | 'post' => 123, |
||
| 187 | 'author' => (object)[ |
||
| 188 | 'userName' => 'someUser2', |
||
| 189 | 'displayName' => 'Jane Jameson', |
||
| 190 | 'comment' => 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Hic, illo tempore repudiandae quos vero, vitae aut ullam tenetur officiis accusantium dolor animi ipsa omnis impedit, saepe est harum quisquam sit.', |
||
| 191 | 'date' => (new DateTime('yesterday'))->format('d/m/yy H:m'), |
||
| 192 | ] |
||
| 193 | ], |
||
| 194 | (object)[ |
||
| 195 | 'post' => 123, |
||
| 196 | 'author' => (object)[ |
||
| 197 | 'userName' => 'someUser22', |
||
| 198 | 'displayName' => 'Barry Burton', |
||
| 199 | 'comment' => 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Hic, illo tempore repudiandae quos vero, vitae aut ullam tenetur officiis accusantium dolor animi ipsa omnis impedit, saepe est harum quisquam sit.', |
||
| 200 | 'date' => (new DateTime('yesterday'))->format('d/m/yy H:m'), |
||
| 201 | ] |
||
| 202 | ] |
||
| 203 | ], |
||
| 204 | 'shares' => [ |
||
| 205 | 'facebook' => 125, |
||
| 206 | 'twitter' => 1458, |
||
| 207 | 'instagram' => 8 |
||
| 208 | ] |
||
| 209 | ]; |
||
| 210 | |||
| 211 | // Simplified post encoder |
||
| 212 | $encoder = array( |
||
| 213 | Func\encodeProperty('id', Func\pluckProperty('post', 'id')), |
||
| 214 | Func\encodeProperty('title', Func\pluckProperty('post', 'title')), |
||
| 215 | Func\encodeProperty('url', Func\pluckProperty('post', 'url')), |
||
| 216 | Func\encodeProperty('author', Func\pluckProperty('post', 'author', 'displayName')), |
||
| 217 | Func\encodeProperty('comments', Func\composeR('count', Func\getProperty('comments'))), |
||
| 218 | Func\encodeProperty('totalShares', Func\composeR('array_sum', Func\getProperty('shares'))), |
||
| 219 | Func\encodeProperty('fakeValue', Func\pluckProperty('i', 'do', 'not', 'exist')), |
||
| 220 | ); |
||
| 221 | |||
| 222 | // Create a generic stdClass encoder. |
||
| 223 | $objectBuilder = Func\recordEncoder(new stdClass()); |
||
| 224 | $arrayBuilder = Func\recordEncoder([]); |
||
| 225 | |||
| 226 | |||
| 227 | // Populte builders with the encoder. |
||
| 228 | $simplePostCreatorObject = $objectBuilder(...$encoder); |
||
| 229 | $simplePostCreatorArray = $arrayBuilder(...$encoder); |
||
| 230 | |||
| 231 | // Build the final array/object |
||
| 232 | $simpleObject = $simplePostCreatorObject($data); |
||
| 233 | $simpleArray = $simplePostCreatorArray($data); |
||
| 234 | |||
| 235 | $this->assertEquals(123, $simpleObject->id); |
||
| 236 | $this->assertEquals(123, $simpleArray['id']); |
||
| 237 | |||
| 238 | $this->assertEquals('Lorem ipsum dolor', $simpleObject->title); |
||
| 239 | $this->assertEquals('Lorem ipsum dolor', $simpleArray['title']); |
||
| 240 | |||
| 241 | $this->assertEquals('https://www.url.tld/post/123/lorem-ipsum-dolor', $simpleObject->url); |
||
| 242 | $this->assertEquals('https://www.url.tld/post/123/lorem-ipsum-dolor', $simpleArray['url']); |
||
| 243 | |||
| 244 | $this->assertEquals('Sam Smith', $simpleObject->author); |
||
| 245 | $this->assertEquals('Sam Smith', $simpleArray['author']); |
||
| 246 | |||
| 247 | $this->assertEquals(2, $simpleObject->comments); |
||
| 248 | $this->assertEquals(2, $simpleArray['comments']); |
||
| 249 | |||
| 250 | $this->assertEquals(1591, $simpleObject->totalShares); |
||
| 251 | $this->assertEquals(1591, $simpleArray['totalShares']); |
||
| 252 | |||
| 253 | $this->assertNull($simpleObject->fakeValue); |
||
| 254 | $this->assertNull($simpleArray['fakeValue']); |
||
| 255 | } |
||
| 303 |