Skip to content

Модуль для обучения сотрудников

Notifications You must be signed in to change notification settings

Akrid782/iny.training

Repository files navigation

Обучение сотрудников

Речь

1 слайд:

Всем привет! Я Иванов Николай TeamLead из ПО3. Тема сегодняшнего доклада "Применение паттернов и структура модулей".

2 слайд:

Сегодня у нас по плану:

  1. Вводная по паттернам;
  2. Структура модулей и как не создать спагетти код;
  3. Что такое DI и как его можно использовать в bitrix
  4. Автоматическая проверка вашего кода

3 слайд:

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

На левом QR-code

Рекомендую ютуб канал: https://www.youtube.com/watch?v=xk5z6vZZjEA&list=PLoonZ8wII66hKbEvIVAZnp1h4CE-4Mtk4&index=2

Курс, где человек объясняет все очень хорошо и понятно с примерами реализаций.

На правом QR-code

Сайт: https://sourcemaking.com/design_patterns

Так же рекомендую сайт по паттернам, как их можно реализовать с примерами на различных языках плюс с разделением по категориям.

Категории:

  1. Поведенческие
  2. Структурные
  3. Порождающие

Предложение по самообучению, это выпускать дайджест с реализованным паттерном и описанием для чего он нужен и когда его лучше применять. И тут уже на выбор, внутри своего ПО чтобы обучение шло точечно внутри команды или на все ПО но тут главное чтобы все вникали. Как по мне лучше внутри команды т.к. получится разобрать более детально реализацию паттерна.

4 слайд:

Давайте лучше мы разберем с вами как писать код в модулях, так чтобы нам или новым сотрудникам не становилось плохо, а тим лидам не пришлось погружать сотрудника в проект тратив кучу времени на это. Так же рассмотрим подход к разработке чтобы наш код был максимально переиспользуемый или легко расширяемый.

Пример /lib/Services/example1

Объяснение кода и директорий

5 слайд:

Теперь обсудим что такое DI. DI - это метод, широко используемый в программировании и хорошо подходящий для разработки приложений. Следуя принципам DI, вы закладываете основу для хорошей архитектуры приложения в нашем случае это архитектура модуля.

Bitrix реализовал у себя такой подход и активно его развивает, позволяя использовать определенные точки приложения для их кастомизации и удобного использования не думая о зависимостях сервиса так как все покрывает данный подход.

Ссылки на документацию:

  1. https://dev.1c-bitrix.ru/api_d7/bitrix/main/di/servicelocator/index.php
  2. https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=14032

Пример /lib/Services/example2

Объяснение кода и директорий

6 слайд:

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

Пример /lib/Services/example3

Объяснение кода и директорий

7 слайд:

Таким примером может выступать кастомизация timeline в карточках crm. Если вы сделаете это в одном месте, то не будет никаких проблем. Другое дело если вы пытаетесь кастомизировать timeline из разных мест, что может привести к не очень хорошим последствиям и запутанности кода.

8 слайд:

Теперь после того как мы разобрали структуру модулей, DI и хорошие источники для обучения паттернам проектирования, можно разобрать как проанализировать свой код на ошибки code style который используется на проекте.

PSR (PHP Standards Recommendations) — это набор рекомендаций по программированию на языке PHP. Основное назначение — предоставить проверенные общие концепции, чтобы сделать разработку простой и удобной, повысить надежность и работоспособность продуктов, так же в psr входит и форматирования кода.

Ссылка на описание psr: https://blog.skillfactory.ru/glossary/psr/

9 слайд:

Пример не форматированного кода

10 слайд:

Пример форматированного кода

Пример /lib/Services/example4

11 слайд:

Разберем с вами стиль форматирования кода psr12.

Для начала стянем phar с phpcs

curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar

В корне проекта или модуля создаем файл phpcs.xml со следующей конфигурацией

<?xml version="1.0"?>
<ruleset name="PHP_CodeSniffer">
    <description>PHP_CodeSniffer configuration</description>
    <arg name="colors"/>
    <arg value="p"/>
    <arg value="s"/>
    <arg name="report" value="code"/>
    <arg name="extensions" value="php"/>

    <rule ref="PSR12"/>

    <rule ref="Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase">
        <exclude-pattern>bootstrap.php</exclude-pattern>
    </rule>

    <rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
        <exclude-pattern>install/index.php</exclude-pattern>
    </rule>

    <rule ref="Squiz.Classes.ValidClassName.NotCamelCaps">
        <exclude-pattern>install/index.php</exclude-pattern>
    </rule>

    <rule ref="PSR1.Methods.CamelCapsMethodName.NotCamelCaps">
        <exclude-pattern>install/index.php</exclude-pattern>
    </rule>

    <rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
        <exclude-pattern>install/index.php</exclude-pattern>
    </rule>
</ruleset>

Объяснение кода и правил файла phpcs.xml

Как только настройку завершили, мы можем запустить проверку нашего кода

php phpcs.phar --standard=/var/www/bitrix/local/modules/iny.training/phpcs.xml --runtime-set testVersion 8.1 /var/www/bitrix/local/modules/iny.training

Показать пример отчета

Теперь вы можете валидировать свой код у себя на стенде вне ci/cd gitlab или других подобных системах

12 слайд:

Всем спасибо за внимание!

About

Модуль для обучения сотрудников

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages