169 похожих чатов

Я чего спрашиваю, просто ни разу не делал свой класс

final😭
1. Какие плюсы final дает?
Не дает унаследовать класс - ок. Но, в чем реальный плюс? Дает понять что "у тебя не должно быть мысли наследовать этот класс"? Так-то следующим коммитом я могу снести final, если оно не в vendor.
2. как с phpunit тестировать классы зависящие от final класса? Я вижу следующие варианты:
- а. мокать интерфейс если final класс его имеет.
- b. Передавать весь сервис-контейнер в конструктор и в тесте мокать контейнер get(). - но, это хрень на мой вгзляд, нафига передавать весь контейнер если намного наглядней передать конкретные зависимости.
Так, все таки, как тестировать код зависящий от final класса? Или не должно быть такой ситуации когда код зависит от конкретного final класса, а должен зависеть только от интерфейса (пункт а)

4 ответов

13 просмотров

fesor же отвечал. Либо делаешь интерфейс, либо не ставишь final

1. Самоконтроль. Ты доверяешь себе? А всем коллегам? 2. Как на счёт классицизма?

https://ocramius.github.io/blog/when-to-declare-classes-final/

1. запрет расширения через наследование, если ты этого не предполагаешь на этапе проектирования класса 2. final вешается там где есть интерфейс либо не подразумевается что это что-то надо мокать (например ты не будешь мокать DateTime класс и расширять можешь не давать по дефолту).

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта