На одном из проектов я встретил интересное мнение. Весь код в проекте должен быть максимально открыт по умолчанию. Т.е. мы делаем все методы и поля public
, а final
нигде не ставим. Мотивировано это было сложностями дальнейшей поддержки:
Если я захочу наследовать класс, а там метод
private
, мне придется изучать код, чтобы понять, зачем его сделалиprivate
и могу ли я сделать его публичным.
Это мнение было очень необычным для меня, и я решил выяснить: действительно ли приватные поля и методы принесут больше проблем, чем публичные.
Давайте напишем класс с лишним публичным методом и посмотрим, насколько просто его будет поддерживать.
interface FooInterface {
public function foo();
}
class Foo implements FooInterface {
public function foo() {
// do stuff
$this->bar();
// do stuff
}
public function bar() {
// do stuff
}
}