Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Например, передать любое количество массивов в функцию в процедурном стиле не получится.
То есть передать в функцию переменное количество массивов? Такой код будет невозможно отлажить.
Да ну ???
Попробуй возможность не копировать массив, а передавать адрес - дорого стоит.
И в чем проблема передать массив по ссылке в функцию?
Georgiy Merts:
В частности, я уже не раз показывал, как у меня организован доступ к истории или к позиции - ты получаешь виртуальный интерфейс, в котором одни функции. Внутренняя реализация - полностью скрыта. Именно инкапсуляция ООП это и позволяет. Без ООП такую инкапсуляцию сделать не выйдет.
Такой код будет нечитаемым и баги в нем замучаешься ловить. Причем создается проблема на ровном месте, так как логически он ничего не делает.
И в чем проблема передать массив по ссылке в функцию?
Это когда тебе надо в одну функцию передать один массив.
А вот когда у тебя вложенность превышает десяток, в каждой функции из этих "матрешек" требуются какие-то данные, а массивы не нужны, а массивы понадобятся на самом "глубоком" уровне - то тебе придется передавать массивы по ссылкам внутрь всех этих функция-"матрешек", И тащить все это будет весьма напряжно.
С классом же - ты получаешь указатель, сохраняешь его внутри класса, и лишь на самом глубоком уровне - обращаешься к массиву, используя указатель.
С классом же - ты получаешь указатель, сохраняешь его внутри класса, и лишь на самом глубоком уровне - обращаешься к массиву, используя указатель.
С указателями давно уже никто не работает со времен С, это плохой стиль ибо код будет невозможно отлаживать.
Такой код будет нечитаемым и баги в нем замучаешься ловить. Причем создается проблема на ровном месте, так как логически он ничего не делает.
Он будет никак не менее читаемым, чем код в "функциональном" стиле с массой ifdef'ов.
Никакой проблемы не создается - написать-то можно и так, и так. Но вот когда потребуется отладка, или, особенно, модификация - ООП-подход дает очень существенные плюсы.
Если ты-монстр запоминания - то вобще, можно все данные свалить в один огромный глобально доступный массив, и работать с ним. Но, большинство народа уже через неделю, как правило, забывают тонкости, с которыми пришлось работать на том или ином участке кода, и как раз жестко заданные интерфейсы, полная инкапсуляция, запрет на доступ к любым данным, кроме тех, которые тебе необходимы на данном участке кода - позволяет избежать очень многих ошибок.
Georgiy Merts:
Если ты-монстр запоминания - то вобще, можно все данные свалить в один огромный глобально доступный массив
Как раз чтобы помнить все интерфейсы где они что скрывают, куда ведут и зачем и надо быть монстром.)
С указателями давно уже никто не работает со времен С, это плохой стиль ибо код будет невозможно отлаживать.
Всегда работаю ТОЛЬКО с указателями. Код прекрасно отлаживается.
Интересно, как ты собираешься работать без указателей, если оператор new возвращает именно указатель ?
Плохой ли это стиль ? Ну не знаю... Я не раз уже показывал свои функции...
Допустим, вот функция класса CDataProviderT (провайдер данных), которая создает указанную таймсерию по ее типу, символу, таймфрейму, с нужным размером:
В зависимости от типа таймсерии мы создаем нужную таймсерию по new, если вернулся нулевой указатель - значит, была ошибка, возвращаем код. Если указатель вернулся валидный - то инициализируем его. В случае, если инициализация вернула ошибку - удаляем созданный объект, и возвращаем признак ошибки. Если инициализация прошла успешно - добавляем указатель на таймсерию в массив объектов-таймсерий.
Таким образом, в дата-провайдере мы имеем массив, в котором лежат все таймсерии, использующиеся в ТС. Есть возможность работы сразу нескольких ТС в рамках одного эксперта - каждая будет обращаться к дата-провайдеру за таймсериями, а дата-провайдер, как раз поглядит, есть ли в массиве указателей нужная таймсерия, и если есть - возвратит ее, не создавая заново.
Как подобное сделать без указателей ?
Да и отладка этого кода - не такая уж мудреная...
Как раз чтобы помнить все интерфейсы где они что скрывают, куда ведут и зачем и надо быть монстром.)
Интересно-интересно.
Я уже не раз показывал, вот интерфейс торговой позиции:
Вызываем Select(), а потом можем запросить общее число компонент, и каждую компоненту в отдельности.
ЧТО в данном интерфейсе - тебе надо "запоминать" ? Ты физически не можешь сделать ничего другого, кроме как выбрать позицию, и перебрать открытые ее компоненты. В функции - ты тоже сунуться не можешь, они приравнены нулю, чисто виртуальны. Но в отладчике - это возможно.
А по-твоему, ты должен здесь что-то запомнить, чтобы не перепутать ? Что ?