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

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

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

4 ответов

18 просмотров

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта