Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 27.04.2018, 12:38   #1
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Адрес: Химки
Сообщений: 13,564
Репутация: 2756
По умолчанию Вопрос актуализации манов, кто за ними следит, и почему жалуются на устаревшие примеры, которые переходят из проекта в проект при существующих современных альтернатив?

Мы же часто берем примеры из манов не задумываясь, особенно на старте изучения.

можно рассмотреть примёр у Флёнова. - http://www.flenov.info/blog/show/Mal...svyazannyy-kod

Скопировал на форум для ознакомления со статьёй:

Наверно в каждой книге написано про то, что нужно писать код без жёстких зависимостей - использовать интерфейсы и инъекцию зависимостей. Но почему-то мало, кто реально следует этому. И отчасти это проблема документации, на которую смотрят программисты.

Вот взять для примера всеми любимые фреймворки для PHP и посмотреть на код оправки почты - вот возьмем пример отправки E-mail из Symfony. Я специально беру его, потому что фреймворк хороший и в нем можно писать код без зависимостей.

Код:

public function indexAction($name, \Swift_Mailer $mailer)
{
    $message = (new \Swift_Message('Hello Email'))
        ->setFrom('send@example.com')
        ->setTo('recipient@example.com')
        ->setBody(
            $this->renderView(
                // templates/emails/registration.html.twig
                'emails/registration.html.twig',
                array('name' => $name)
            ),
            'text/html'
        )
}

Пример взят с сайта сайта Symfony.

Прямо в методе контроллера нам предлагают использовать жёсткую привязку к конкретной реализации Swift Message. А что если завтра эта реализация умрет? Где интерфейс, который абстрагируется от этой конкретной реализации? Где Dependency Injection?

Фреймворк - это круто, он предоставляет кучу вкусняшек, но уже вот здесь пользователи видят как не нужно в реальности делать.

Фреймворка должен упрощать программирование и примеры в официальной документации должны использовать все современные рекомендации по хорошем написанию кода. А то получается, что все говорят отросшем тоне, а потом программисты берут код из официальной документации а он оказывается далеко не идеален и оказывается программист ещё должен сделать кучу телодвижений, реже чем использовать код.

А ведь в Symfony уже есть все готовое, просто пример на сайте не отражает это. Можно зарегистрировать сервис:

Код:

services:

    sample.service:

        class:     %sample.service.class%

        arguments: [@mailer]

И теперь через конструктор получать его:

Код:

 __construct($mailer)

Можно сохранить этот мейлер в качестве локальной переменной и использовать его. Больше не нужно задумываться о том, какой сервис будет создан, легче перейти на другой, в случае необходимости и так далее.
Alar на форуме   Ответить с цитированием
Старый 27.04.2018, 14:06   #2
Pavia
Лис
Профессионал
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,614
Репутация: 1708
По умолчанию

Автор прав что не пишут в примерах абстракции. Но зачем городить лишние абстракции? Когда я ищу код я в первую очередь ожидаю увидеть минимально рабочий пример. Потому что одно дело увидеть а другое дело пощупать этот пример. Вот рабочий пример я могут скомпилировать и поломать по модифицировать по отлаживать.

А тут автор предлагает либо писать абстракции это же получается полуфабрикаты получаются. Которые ещё и приготовить надо и не факт что эти приготовления займут как с Юпи 5 минут (Юпи-просто добавь воды). Скорее напротив несколько часов.

Зачем мне в примере шелуха по созданию интрефейса? Лишний код только отвлекает от главного.

Так что с автором я не согласен. Если он хочет видеть качественный код то для этого мастер-классы.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia на форуме   Ответить с цитированием
Старый 27.04.2018, 14:08   #3
Скарам
Дружите с Linq ;)
Участник клуба
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Адрес: Москва
Сообщений: 796
Репутация: 359
По умолчанию

А какой смысл им в примере для отправки письма приводить пример DI? Если он у тебя в проекте есть, то ты сам решишь хочешь ли абстрагироваться от конкретной реализации. В большинстве проектов этого нет, особенно в легаси. Любая технология должна применяться к месту и со знанием дела. Это относиться и к инверсии контроля. И вообще применять SOLID, без определенного набора знаний вредно. Поэтому фреймворк показывает самый примитивный пример.
Возьмем людей, с которыми работаю я (все программисты на .net или oem-щики). Для большей части лень прочитать документацию по TPL и ключевым словам async/await. Вводить асинхронное программирование сложно, любая ошибка с использованием тасок приводит к панике. Приходиться сидеть с ними, объяснять, читать лекции. Поэтому SOLID или TDD у нас тоже зависает на уровне сервисов, которые написал я. Я не могу сказать, что у них недостаточно квалификации или еще чего-то, просто они очень инертны. Таким людям нужны примеры с DI? Серьезно? Они либо выкинут DI, либо найдут пример, где его нет. Ну или фреймворк сменят (может и на более худший), где этого "непонятного" нет.
__________________
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума   Ответить с цитированием
Старый 29.04.2018, 13:34   #4
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 876
Репутация: 86
По умолчанию

Лень двигала прогресс всегда вперёд.
__________________
мой канал на Ютубе: youtube.com/channel/UCdtIJx_8tDGrc9n-Y0JsllA
jura_k вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему при компиляции программы ,все переменные которые начинаются на 0 теряют этот ноль и становятся обрезанными. GRUB_666 Помощь студентам 13 27.12.2016 13:18
Проект VB5 в современных VS Stilet Софт 2 18.06.2014 21:53
Запрос sql. Найти людей, которые чаще всего переходят с одного тарифа на другой. GoodNight SQL, базы данных 3 28.05.2014 13:40


22:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru