Passed
Pull Request — master (#130)
by Marcin
08:18 queued 05:46
created

CompareStrategyFactory::create()   C

Complexity

Conditions 11
Paths 11

Size

Total Lines 25
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
rs 5.2653
c 0
b 0
f 0
cc 11
eloc 22
nc 11
nop 1

How to fix   Complexity   

Long Method

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:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Phpml\Strategy\Compare;
6
7
use Phpml\Exception\InvalidArgumentException;
8
9
class CompareStrategyFactory
10
{
11
    /**
12
     * @param string $operator
13
     *
14
     * @return CompareStrategy
15
     *
16
     * @throws InvalidArgumentException
17
     */
18
    public static function create(string $operator): CompareStrategy
19
    {
20
        switch ($operator) {
21
            case '>':
22
                return new GreaterThan();
23
            case '>=':
24
                return new GreaterThanOrEqual();
25
            case '=':
26
            case '==':
27
                return new EqualTo();
28
            case '===':
29
                return new IdenticalTo();
30
            case '<=':
31
                return new LessThanOrEqual();
32
            case '<':
33
                return new LessThan();
34
            case '!=':
35
            case '<>':
36
                return new NotEqualTo();
37
            case '!==':
38
                return new NotIdenticalTo();
39
            default:
40
                throw InvalidArgumentException::invalidOperator($operator);
41
        }
42
    }
43
}
44