Скачать MetaTrader 5

INCLUDE или LIBRARY

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
ERROR-404
23
ERROR-404  
Частично сталкивался писать одно и то же, что в MQL, что в PHP, что в ASP и прочее, ну в PHP многим известно есть include, require.. для результата разницы не имеют(почти)... в MQL встретил include, в отличии от library(в Library только описания функций), мне кажется в include больше возможностей, можно использовать глобальные переменные, предопределенные. Но в Library идет все независимо только от входящих переменых в функцию, вобщем хочу услышать мнение... Поясню готовлю крупный проект, функции и "части" проги кладу конечно в инклуд, но может стоит независимым в либ?? короче, че лучше??
Ihor Herasko
9754
Ihor Herasko  

Библиотека используется в том случае, когда предполагается ее распространение. То есть у конечного пользователя кода библиотеки не будет, будут только описания функций.

Для своего проекта логичнее использовать включаемые файлы.

TarasBY
1739
TarasBY  
ERROR-404 :
Частично сталкивался писать одно и то же, что в MQL, что в PHP, что в ASP и прочее, ну в PHP многим известно есть include, require.. для результата разницы не имеют(почти)... в MQL встретил include, в отличии от library(в Library только описания функций), мне кажется в include больше возможностей, можно использовать глобальные переменные, предопределенные. Но в Library идет все независимо только от входящих переменых в функцию, вобщем хочу услышать мнение... Поясню готовлю крупный проект, функции и "части" проги кладу конечно в инклуд, но может стоит независимым в либ?? короче, че лучше??

Если рассматривать вопрос с точки зрения универсальности и масштабирования, то лучше использовать *.ex4 - библиотеку. В неё можно впихнуть любую универсальность, т.е работу как с единичными ордерами, с сетью, так и с набором сетей (если это вообще в Вашем проекте актуально), в то время, как с включаемыми файлами приходится делать несколько вариантов одних и тех же библиотек в зависимости от "нужд" конкретного советника.

Alexey Navoykov
4129
Alexey Navoykov  

Я тоже считаю, что использование библиотек предпочтительнее.

Во-первых, библиотека - это отдельный независимый код с собственными глобальными переменными и функциями с ограниченной видимостью (за исключением экспортирумых). Поэтому при её использовании отсутствуют конфликты, связанные с совпадением имён функций или глобальных переменных, в отличие от инклюдников. Кстати, использование общих глобальных переменных во включаемых файлах, о чём упомянул автор, на мой взгляд не очень хорошая идея. Потом будет сложно отслеживать взаимосвязи и выявлять ошибки. Лучше взаимодействовать с помощью функций и статических переменных.

Во-вторых, библиотека - это уже скомпилированная программа, поэтому сокращается время на компиляцию основного проекта.

В-третьих, динамическая библиотека даёт гибкость в работе. После её модификации не потребуется потом перекомпилировать все проекты, использующие данную библиотеку.

Однако есть и минус. В функциях библиотеки ex4 в качестве параметров почему-то нельзя передавать переменные по ссылке (это касается даже string). Приходится использовать массивы. А это далеко не всегда удобно. Непонятно, зачем разработчики устроили такой гемор. Причём в документации ни слова не сказано об этом.



ERROR-404
23
ERROR-404  
Scriptong :

Библиотека используется в том случае, когда предполагается ее распространение. То есть у конечного пользователя кода библиотеки не будет, будут только описания функций.

Для своего проекта логичнее использовать включаемые файлы.


Проект для ограниченого круга(не знающих основ программирования). Расростронение тут исключено.
TarasBY
1739
TarasBY  
Meat : Однако есть и минус. В функциях библиотеки ex4 в качестве параметров почему-то нельзя передавать переменные по ссылке (это касается даже string). Приходится использовать массивы. А это далеко не всегда удобно. Непонятно, зачем разработчики устроили такой гемор. Причём в документации ни слова не сказано об этом.

Я тоже так думал... Документация:

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

Но с мнением "про гемор" полностью солидарен.

ERROR-404
23
ERROR-404  
Понимаете по ссылки передаются параметры, их у меня бывает до 50, естественно они не указываются, они в глобальные заключены
Vladimir Kazakov
6115
Vladimir Kazakov  

Параметры по умолчанию нельзя передавать. У меня, например, все торговые функции заменяются на @Order...(...) - довольно удобно: подсветка, подсказки сохраняются, но, к сожалению, при вызове из библиотеки пришлось бы заполнять все аргументы. А через инклюд код вставлять - вызывает когнитивный диссонанс :)

Alexey Navoykov
4129
Alexey Navoykov  
kazakov.v :

Параметры по умолчанию нельзя передавать. У меня, например, все торговые функции заменяются на @Order...(...) - довольно удобно: подсветка, подсказки сохраняются, но, к сожалению, при вызове из библиотеки пришлось бы заполнять все аргументы. А через инклюд код вставлять - вызывает когнитивный диссонанс :)

Ну для таких целей можно функцию @Order... оформить просто как промужуточную прокладку, из которой уже вызывать конечную функцию с полным числом параметров.
Evgeniy Myznikov
441
Evgeniy Myznikov  
Однажды я столкнулся с написанием своих инклуд и либрари!) Написал и то и то! Прошло пару месяцев и понадобилось внести небольшие изменения! Начался гемор от начавшегося забывания алгоритма работы! От инклуд отказался! Оставил только либрари! Вобщем мне показалось так удобнее! Т. к. либрари необходимо для работы основых экспертов и разных скриптов!
Роман
7939
Роман  
festival :
Однажды я столкнулся с написанием своих инклуд и либрари!) Написал и то и то! Прошло пару месяцев и понадобилось внести небольшие изменения! Начался гемор от начавшегося забывания алгоритма работы! От инклуд отказался! Оставил только либрари! Вобщем мне показалось так удобнее! Т. к. либрари необходимо для работы основых экспертов и разных скриптов!

Где - то читал (в том числе и в доке), что через библу МЕДЛЕННЕЕ тестируется эксп, чем с инклюдами.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий