Должен ли я напечатать мои переменные внедрения зависимости? - PullRequest
2 голосов
/ 17 декабря 2010

Допустим, класс Foo требует инъекции класса Bar. Должен ли я напечатать параметр метода, потому что я знаю, каким должен быть Bar, или не указывать его, если Bar изменится в будущем?

class Foo {
    public function __construct( Bar $bar ) {
        // do something
    }
}

или

class Foo {
    public function __construct( $bar ) {
        // do something
        // the wrong class could be passed in here, but I'm also future-proof in case
        // another class provides similar functionality to Bar
    }
}

Предположительно, "лучший" ответ - заставить Bar реализовать интерфейс, но я действительно чувствую себя глупо, создавая интерфейс, который будет иметь только один класс расширения в обозримом будущем. Какова лучшая практика?

1 Ответ

2 голосов
/ 17 декабря 2010

Простое, простое решение: на данный момент наберите Bar, создайте интерфейс и измените подсказку позже. Если вы правильно используете методы рефакторинга и правильно разрабатываете свой код, изменения не окажут никакого влияния в дальнейшем.

...