В этой статье поговорим о том, как правильно создавать переменные внутри коннектора. А вернее про то, как это делать не нужно, чтобы не генерировать баги.
Запрет на создание полей и свойств для объектов во время создания объекта.
Рис. 1. Как не надо создавать переменные.
Подобный способ создания класса приведёт к следующим проблемам:
1) В случае перехвата ошибки отладчик не будет указывать на строку проблемы.
2) В случае пошаговой отладки невозможно будет определить быстро, в каком месте какая переменная откуда берётся, и где кроется ошибка.
3) В данном конкретном примере также возникнут проблемы с выбором некоторых перечислений, т.к. вариантов несколько, а использовать адекватно IF с отладкой не выйдет.
Рис. 2. Правильное последовательное назначение полей и свойств класса при создании нового объекта Security.
Примечание.
В целом, данный запрет можно накладывать только лишь на комплексные объекты вроде бумаг (Security, как в примере) или срезов стакана. И может показаться, что «маленькие» объекты с небольшим количеством полей так (Рис. 1) создавать можно. Однако, понятие комплексности / большой / маленький – слишком расплывчаты. И создание объектов таким образом у нас в коннекторах под полным запретом.
Запрет на использование var.
Переменных с таким типом в OsEngine быть не должно. Данный тип записи переменной заявляет о неявной типизации переменной, которая будет понятна только в стадии компилирования кода. Вероятно, где-то это норм, но мы пишем код в OsEngine не для компилятора, а для других программистов. OsEngine – не место для экспериментов.
Данный тип переменных другим программистам мешают при чтении кода. Они до сих пор есть, изжить это явление мы сможем лишь через несколько лет. Однако, путь начат.
Язык C# во время создания славился тем, что является языком со строгой типизацией. Со временем всё стало не так однозначно, и С++ с его вольностями к переменным почти полностью перекочевал в С#.
Однако, вернёмся к истокам.
Одной из главных проблем С++ в своё время были:
1) Ссылочные типы.
2) Работа с памятью.
3) Не строгая типизация.
4) Оператор GoTo.
В итоге на С/С++ можно встретить примерно такой код:
Рис. 3. Сложение численной с другим типом переменной.
Не будем подробно на этом останавливаться, но суть в том, что СиШарп стал популярным именно потому, что эти проблемы изжиты. И в OsEngine мы будем придерживаться принципов явного объявления типов переменных.
Переменные типа var в коде OsEngine запрещены.
Бойтесь неявной типизации в целом.
Помните, OsEngine любят дети. Они в этом нихрена не понимают, но хотят обязательно использовать всё и сразу, «проявив себя». Это – нормально. Я и сам такой был. Но OsEngine – проект про деньги, а не про эксперименты. Поэтому, увидев какие-то не явно обозначенные переменные и массивы в коннекторе, он будет БЕЗ СОЖАЛЕНИЯ, СОМНЕНИЙ И АНАЛИЗА отправлен на помойку и переработку.
Неявная типизация запрещена.
Что почитать?
Удачных алгоритмов!
Пост из серии «Коннекторы к OsEngine»
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients