Требования к коду ELMA BPM (C#)

Код C# в ELMA BPM напишет даже студент, с нюансами ELMA — требования к коду ELMA BPM — критическая необходимость

Чек лист проверки кода

Первые правила сложные — прочитайте полный список правил

Код в ELMA будет правильным если соблюдаете правила

  1. Правила именования (скачайте отсюда если не открывается) 

  2. Соглашения о написании кода на C#

  3. Стандарты написания программного кода на языке C#
  4. Соблюдаете принципы ООП (объектно-ориентированного программирования),

Чек лист

  • Названия переменных написаны на английском языке — названия полные (например currentPerformanceCounterCategory )
  • Переменные названы по правилам наименования (используйте Resharper — он предложит исправить согласно правилам) 
  • Код отформатирован автоматически (дизайнер Ctrl+I, Visual Studio Ctr+K , Ctrl+F)
  • Код отформатирован вручную и
    • занимает меньше половины ширины страницы (нет длинных строк, считаем монитор FullHD)
    • пустых строк не больше одной (регуляное выражение для замены пустых строк — ^(?([^\r\n])\s)*\r?$\r?\n)
  • Методы и классы содержат описание
  • Комментарии по коду только для сложной логики (комментарии для каждой строчки — не нужны)
  • Проставлены проверки на пустоту(null) или вызов ошибки (Exception) — перед обращением к полям объекта (исключение)
  • Код метода не больше 10-15 строк — за исключением зашитой бизнес логики (например изменение формы)
  • Перед приведением объекта имеется проверка (например is IContractor) или объект приводится оператором as (с последующей проверкой на null)
  • try — catch — обрабатывает ошибки там где известно как обработать
    • в скрипте процесса — если после ошибки бизнес процесс должен остановиться — ошибки не улавливаются
    • или обрабатываются эскалацией по ошибке
  • В одной транзакции только взаимодействие с базой данных (важно изменение записи) или использование ресурсов время работы которых неограничено
    • допускается изменения в базе данных применять после использования ресурсов время выполнения которых не ограничено

чек лист будет пополняться, подробнее изучите правила и стандарты (описаны ниже)

 

Основные принципы написания кода в ELMA BPM

Существуют базовые негласные правила которые соблюдают разработчики C#

  • Код понятен и студенту и опытному разработчику — а не только автору.

Правила именования

Изучите и соблюдайте. (скачайте отсюда если не открывается, описал эти правила Михаил Смирнов, спасибо сэкономил время.)

Идентификатор Регистр Пример
Класс Pascal User
Локальная переменная Camel user
Интерфейс Pascal IDisposable
Generic Pascal T, TKey, TValue
Public функция Pascal Authenticate
Private функция Pascal Authenticate
Параметр функции Camel userId (тут было ID — исправил на то как правильно)
Public свойство Pascal FirstName
Private свойство Pascal FirstName
Public поле Pascal FirstName
Private поле Camel firstName
Enum Pascal UserStatus
Значение enumа Pascal Active
Exception Pascal UserAuthenticationException
Event Pascal StatusChanged
Namespace Pascal UserManager

Правила форматирования кода

Правила опубликованные Microsoft —  соглашения о написании кода на C#  — прочтите и применяйте на практике

Добавлю негласные правила которых сам придерживаюсь

  • код в строке пишите максимум наполовину экрана
    •  если не получается — повод задуматься, хотя до такого сложно дойти (много вариантов как разнести код на строки — не все об этом знают..)
    • Вариантов много — вот пара примеров

 

Используйте принципы объектно ориентированного программирования

Большинство забывает о базовых принципах объектно-ориентированного программирования

Без них будут проблемы

  1. Код выглядит как костыль — костыли небольшие и легко заменяемые (время костыля закончится, а остальная логика должна остаться)
  2. Переписать код проще чем доработать или разбираться
  3. Код невозможно отлаживать
  4. Невозможно восстановить логику по коду
  5. Стыдно код показать коллеге

История от коллеги: Была консольная программа написанная давно —  на одном старом государственном предприятии. Потребовалось написать десктопное приложение с той же логикой…

  • После пары месяцев неудачных попыток — подключили одно приложение к другому — чтобы не погружаться в ад.
  • забудьте goto если знаете — такой код будет не линейным и нечитабельным
  • людей которые пишут непонятный код:
    • длинные строки не помещающиеся в экран
    • мешают логику двух операций в одну — и название метода не описывает происходящее )
    • использующие goto
    • использующие идентификаторы записей в базе данных для загрузки объекта
    • методы на 1000 строк (после 7 строк —  код постепенно становится сложным)

— я в шутку называю обфускаторами, кто пользовался декомпилятором — знают что это

 

Инкапсуляция

  • скрывать реализацию от глаз — это правильно
    • вместо 1000 строчек кода будет 7-10 вызовов методов из названий которых будет понятна логика
  • код получается модульным по типу черного ящика (нам неважно что происходит внутри — важно что мы получим)
    • при необходимости проще изменить логику в одном месте

Наследование

Если вы пишете код в скриптах бизнес-процесса ELMA BPM или в объекте, можете и не столкнуться с наследованием

Или не понять что столкнулись

  • и будет много повторяющегося кода и через 3 секунды невозможно с этим работать (память у рыбок 3 секунды — но это не точно)

Начали использовать глобальные модули ELMA

— Знать принципы ООП обязательно (Объектно-ориентированного программирования)

  • в интеграциях с внешними источниками
  • с сервисами (пример)
  • при работе с объектной моделью

нужны знания ООП и правил написания кода

Полиморфизм

Начиная расширять ELMA BPM, переопределять логику — без полиморфизма не обойтись. (читайте обучение по расширению системы )

  • это возможность объектов с общей спецификацией (интерфейсом) — иметь разную логику

Кратко смысл полиморфизма можно выразить фразой:

Один интерфейсмножество реализаций

Если вы все поняли

И не узнали ничего нового, подтвердили знания — супер,

Если эта статья открытие для вас — тоже прочтите, без них не обойтись — как только код будет сложнее арифметического уравнения

Где взять примеры правильного кода ELMA

  • в веб модулях ELMA — код открытый
  • в не обфусцированных сборках через декомпилятор (это касается только принципов ООП — т.к. компилятор код все же преобразовывает)

Задание

Прочитав правила — проведите код ревью (в bitbucket, GitLab или просто отправьте код коллегам)

  • сохранить код в репозитории (git например), исправьте в соответствии с правилами
  • отправьте pull request (изменения в коде на согласование) коллегам
  • проверьте соглашения и понимание кода коллег

 

Нюансы

  • Не пишите в одной транзакции действия с базой данных и сервисами время работы которых не ограничено (файловые операции, интеграции  и так далее)  ( проще говоря в скрипте ELMA BPM)
    • например — сначала изменение объекта и потом операции не связанные с с базой данных ( загрузка файлов, архивация, долгие интеграции)
    • изменения в базе данных заблокируют строки — до завершения транзакции
  • Не пишите длинный код — упрощайте, иначе даже вы не справитесь с багами или исправлением
  • код который не относится к процессу — выносите в глобальный модуль или собственный модуль
  • в процессах — используйте плагины чтобы не писать одинаковый код
  • «причесывайте» код — тем более если получили его из генератора

это первое что мне удалось вспомнить, этот список еще будет обновляться

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

%d такие блоггеры, как:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: