rss

Профиль компании

Финансовые компании

Блог компании Os_Engine | Стандарты кода #1. Создание переменных. Коннекторы к OsEngine #20

В этой статье поговорим о том, как правильно создавать переменные внутри коннектора. А вернее про то, как это делать не нужно, чтобы не генерировать баги.

Запрет на создание полей и свойств для объектов во время создания объекта.

Стандарты кода #1. Создание переменных. Коннекторы к OsEngine #20 
Рис. 1. Как не надо создавать переменные. 

Подобный способ создания класса приведёт к следующим проблемам:

1)      В случае перехвата ошибки отладчик не будет указывать на строку проблемы.

2)      В случае пошаговой отладки невозможно будет определить быстро, в каком месте какая переменная откуда берётся, и где кроется ошибка.

3)      В данном конкретном примере также возникнут проблемы с выбором некоторых перечислений, т.к. вариантов несколько, а использовать адекватно IF с отладкой не выйдет.

Стандарты кода #1. Создание переменных. Коннекторы к OsEngine #20
Рис. 2. Правильное последовательное назначение полей и свойств класса при создании нового объекта Security.

Примечание.

В целом, данный запрет можно накладывать только лишь на комплексные объекты вроде бумаг (Security, как в примере) или срезов стакана. И может показаться, что «маленькие» объекты с небольшим количеством полей так (Рис. 1) создавать можно. Однако, понятие комплексности / большой / маленький – слишком расплывчаты. И создание объектов таким образом у нас в коннекторах под полным запретом.

Запрет на использование var.

Переменных с таким типом в OsEngine быть не должно. Данный тип записи переменной заявляет о неявной типизации переменной, которая будет понятна только в стадии компилирования кода. Вероятно, где-то это норм, но мы пишем код в OsEngine не для компилятора, а для других программистов. OsEngine – не место для экспериментов.

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

Язык C# во время создания славился тем, что является языком со строгой типизацией. Со временем всё стало не так однозначно, и С++ с его вольностями к переменным почти полностью перекочевал в С#.

Однако, вернёмся к истокам.

Одной из главных проблем С++ в своё время были:

1)      Ссылочные типы.

2)      Работа с памятью.

3)      Не строгая типизация.

4)      Оператор GoTo.

В итоге на С/С++ можно встретить примерно такой код:

Стандарты кода #1. Создание переменных. Коннекторы к OsEngine #20
Рис. 3. Сложение численной с другим типом переменной.

Не будем подробно на этом останавливаться, но суть в том, что СиШарп стал популярным именно потому, что эти проблемы изжиты. И в OsEngine мы будем придерживаться принципов явного объявления типов переменных.

Переменные типа var в коде OsEngine запрещены.

Бойтесь неявной типизации в целом.

Помните, OsEngine любят дети. Они в этом нихрена не понимают, но хотят обязательно использовать всё и сразу, «проявив себя». Это – нормально. Я и сам такой был. Но OsEngine – проект про деньги, а не про эксперименты. Поэтому, увидев какие-то не явно обозначенные переменные и массивы в коннекторе, он будет БЕЗ СОЖАЛЕНИЯ, СОМНЕНИЙ И АНАЛИЗА отправлен на помойку и переработку.

Неявная типизация запрещена.

Что почитать?

  1. https://www.cyberforum.ru/csharp-net/thread2821601.html Про проблемы var и неявной типизации.
  2. https://habr.com/ru/articles/127096/ Ещё про неявную типизацию.
  3. http://sergeyteplyakov.blogspot.com/2011/04/blog-post.html Про то, как не надо писать код.

Удачных алгоритмов!

Пост из серии «Коннекторы к OsEngine»

Серия о том, как стать настоящим программистом и изменить свою профессию.

Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php

Комментарии открыты для друзей, добавляйтесь!

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support

Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients

 Стандарты кода #1. Создание переменных. Коннекторы к OsEngine #20

★2

теги блога Алексей Ван <o-s-a.net>

....все тэги



UPDONW
Новый дизайн