Как разбить код на части и включаемые файлы правильно, первый раз с таким сталкиваюсь по этому задаю вопрос к опытным спецам
Вот пример
ТО есть класс наследуется от другого класса и содержит структуру, в примере структуру я сократил, далее идут методы по работе с массивом структуры
Зачем структура объявлена в теле класса? Ведь она в таком случае не будет доступна вне этого класса. Объявление структуры лучше вынести в какой-то включаемый файл, доступ к которому будет из любого другого участка кода.
этих методов штук 40-50 может больше пока не знаю
Хочу каждый метод Вынести во включаемый файл или иначе как то организовать структуру кода что бы в самом советнике не городить 10 000 -20 000 строк кода в которых потом затруднен поиск.
Методы класса лучше располагать в одном включаемом файле. В VS это файл реализации (cpp), а в MQL аналог заголовочного файла (в VS - h) и файл реализации тогда уж можно объединить в один файл. Чтобы уменьшить размер файла реализации в идеале все методы сводятся к одной-двум строкам, которые вызывают различные утилиты. А вот для утилит - собственные включаемые файлы (утилиты для работы со строками, для работы с графикой, для работы с файлами и т. д.)
Единственное что на текущий момент вижу это отправлять массив структуры по ссылке
типа
Мне кажется это не самый удачный выбор.
Что можно сделать ?
Зачем структура объявлена в теле класса? Ведь она в таком случае не будет доступна вне этого класса. Объявление структуры лучше вынести в какой-то включаемый файл, доступ к которому будет из любого другого участка кода.
Методы класса лучше располагать в одном включаемом файле. В VS это файл реализации (cpp), а в MQL заголовочный файл (h) и файл реализации тогда уж можно объединить в один файл. Чтобы уменьшить размер файла реализации в идеале все методы сводятся к одной-двум строкам, которые вызывают различные утилиты. А вот для утилит - собственные включаемые файлы (утилиты для работы со строками, для работы с графикой, для работы с файлами и т. д.)
Как раз наоборот - все структуры и массивы лучше передавать по ссылке. Если метод не должен изменять данные в структуре/массиве, то тогда и ссылка должна быть константной.Правильно ли я понял, что лучше все структуры вынести за пределы класса, в отдельный инклюдник ?
И при работе с методами передача структуры по ссылке не затруднит работу кода, и не повлияет на скорость работы ?
Мне бы простой пример если не сложно...
Правильно ли я понял, что лучше все структуры вынести за пределы класса, в отдельный инклюдник ?
И при работе с методами передача структуры по ссылке не затруднит работу кода, и не повлияет на скорость работы ?
Мне бы простой пример если не сложно...
Описание структуры может быть за пределами класса (и даже желательно). Но в классе могут быть объявлены члены с типом этих структур, и ничего передавать не придется.
Описание структуры может быть за пределами класса (и даже желательно). Но в классе могут быть объявлены члены с типом этих структур, и ничего передавать не придется.
struct STRUCT_SYMBOL // Структура символа { bool TRADING_IS_ALLOWED; // Обновлять double INDIKATOR_VOLUME; // Обновлять }; struct STRUCT_WATCH_LIST // Структура сохраненных листов { string NAME_LIST; }; class WL : public C_Object { private: MqlTick tick; STRUCT_WATCH_LIST WatchList[]; STRUCT_SYMBOL SymbolMass[]; }
Правильно ли я понял, что лучше все структуры вынести за пределы класса, в отдельный инклюдник ?
И при работе с методами передача структуры по ссылке не затруднит работу кода, и не повлияет на скорость работы ?
Мне бы простой пример если не сложно...
Если Вы имеете дело со структурой, которая потенциально может быть использована в другом классе - желательно вынести.
Вы не сможете передать ни структуру, ни массив в функцию/метод по значению. Только по ссылке.
Да, в качестве примера, можете посмотреть структуру стандартной библиотеки mql.
Если Вы имеете дело со структурой, которая потенциально может быть использована в другом классе - желательно вынести.
Вы не сможете передать ни структуру, ни массив в функцию/метод по значению. Только по ссылке.
Большое спасибо, я понял, в моем случае работа должна быть с одним массивом структур, в Вашем примере если я правильно понял в каждом экземпляре класса будет создаваться индивидуальный массив структур.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как разбить код на части и включаемые файлы правильно, первый раз с таким сталкиваюсь по этому задаю вопрос к опытным спецам
Вот пример
ТО есть класс наследуется от другого класса и содержит структуру, в примере структуру я сократил, далее идут методы по работе с массивом структуры
этих методов штук 40-50 может больше пока не знаю.
Хочу каждый метод Вынести во включаемый файл или иначе как то организовать структуру кода что бы в самом советнике не городить 10 000 -20 000 строк кода в которых потом затруднен поиск.
Единственное что на текущий момент вижу это отправлять массив структуры по ссылке
типа
Мне кажется это не самый удачный выбор.
Что можно сделать ?