All streams
Search
Write a publication
Pull to refresh
39
0
Роман Сохарев @greabock

Разработчик

Send message

Простите мне мою оплошность, я забыл что на хабре каждый второй — Шелдон Купер*. Впредь, во избежание недоразумений, я все свои шутки буду помечать курсивом и делать сноску** — дабы не вводить в заблуждение писателей, читателей и комментаторов.




*Шутка.
**Шутка встроенная в шутку — одновременно рекурсия и самоирония.

Мне кажется, тут дело не в преимуществах. Проблема в том, что все сторонние решения имеют один фатальный недостаток.
Я так и не понял, как не надо писать код =(

25р в час — это даже для пенсионера из региона на «минималке» не заработок — просто волонтёрство какое-то. Но я не уверен, что даже этой суммы можно достигнуть, не делая задания на «отвяжись».

Сейчас зарегистрировался, чтобы посмотреть что это вообще такое.
За 2 часа заработал 8 центов. А ведь «яжпрограммист» — человек изначально подготовленный, и умеющий почти моментально извлекать суть из тонн «воды».

И что же мне помешает?


1) Можно указать просто класс, а не интерфейс. И инъекция таки возможно по имени класса.


2) Контейнер Laravel, например вообще вот такое умеет:


$value = new SomeDepClass;

$this->app->when(Some::class)
          ->needs('$someDependency')
          ->give($value);

contextual binding называется.
Не зря же нам пых Reflection API предоставляет.

Чтобы инжектить в клиенте зависимости, они в сервисе должны быть связаны по интерфейсу.

нет, не должны.

хотел сказать "мамаамакриминал"… но нет в самом конце статьи меня оправдали

Формально? Ну, допустим, LSP, OС и DI «вытекают» из теории типов (хотя, последнее может и нет).
В то время как SR и IS — вещи скорее интуитивные, как мне кажется.
Получается, что объяснение SOLID не может быть простым, так?
тут да, фигню ляпнул )
OCP это НЕ про наследование

и НЕ про композицию. А потому, примеры нужны разные.


не умеет в ковариантность/контрвариантность для пре/пост кондишенов

таки с постусловиями там всё норм.


dependency inversion — вообще не интересует, каким образом поставляются зависимости, ты можешь делать это хоть в императивном стиле, хоть в декларативном через механизм DI. Ничего инверсия зависимостей не требует.

при указании возвращаемых значений

при указании типов входящих значений, простите


примеры с усилением предусловий и ослаблением постусловий

примеры с ослаблением предусловий и усилением постусловий, конечно же. Опечатался.

Я не знаю откуда столько плюсов. Примеры очень плохие.


S
У нас был килограмм гуано. После "рефакторинга", мы получили четыре куска гуано по 250 грамм.


O
Показан пример (довольно слабый) с полиморфизмом.
Не показан пример с наследованием.


L
ОЧЕНЬ слабый пример. Который просто говорит о соблюдении интерфейсов, и вообще не затрагивает тот момент, что принцип подстановки при указании возвращаемых значений в PHP работает неправильно. Не разобраны примеры с усилением предусловий и ослаблением постусловий.


I
Ну а где пример с композицией интерфейсов?


D
Ну тут ладно, тут попадание.
Почему инверсия зависимостей идет бок о бок с внедрением зависимостей?
Ну потому, что последнее невозможно без соблюдения первого.

математика чрезмерно эффективна
Довольно разрозненно. «Старички-активисты» получили, что хотели, прокачались, и теперь каждый занят своим делом, в основном. Новички в большинстве своем слабоваты и/или не очень активны. SerafimArts сейчас пилит graphql-фреймворк на php — получается неплохо.
Ну нормальные же технические статьи писали. А тут вот это…
По ответу на первый вопрос сразу видно, кто настоящий технарь, а кто гуманитарий )
Откуда эта боязнь обширных текстов?

Не стоит искать подвох там, где все объясняется обычной ленью.
Им (маркетологам) банально нечего нам сказать, и (как следствие) сложно выдавливать из себя осмысленный текст.

>… Они [программисты] знают, что большую часть времени они этот код читают…

Я вот большую часть времени вообще думаю о том, чем являются вещи и как они работают в реальном мире. Рисую диаграмки там всякие… наверное я не программист )
1. Это не фасады, (это не фасады, даже в терминах Laravel, не говоря уже о шаблоне проектирования «фасад») это простое проксирование на новый инстанс.
2. Контейнер никак не участвует в этом процессе.
3. Мокать можно, это да.

Information

Rating
Does not participate
Location
Россия
Registered
Activity