Ошибки, баги, вопросы - страница 1439
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как показывает мой опыт - если программист в массив, содержащий 10 элементов что-то записывает по индексу 20 - это с большой вероятностью означает, что он ошибся, и программа должна выдать ошибку, а не увеличивать размер массива, тем самым скрывая сомнительное действие.
Все эти "массивы, подстраивающие размер" несут гораздо больше проблем в связи с сокрытием потенциальных ошибок, чем удобства. Более того, и отсутствие необходимости слежения за размером массива - это также потенциально опасная практика, ведущая к трудно устранимым ошибкам.
Мне кажется или вы не работали с языками о которых речь? Индекс добавляемому элементу указывать не нужно вообще, он присваивается автоматом и размерность массива увеличивается также. У программиста просто нет шанса ошибиться в индексе при этой операции
Можно реализовать похожее поведение классами, добавить связанные с ним функции pop, shift, unshift итд. И таскать телегу классов из кода в код, при том что в каждом коде из неё используются %10..20 функций. Похоже это на правильное решение? Пример правильного решения на моё имхо - добавление в функцию ObjectsDeleteAll возможности удалять по префиксу - это ещё микрон в сторону более высокоуровневого программирования - и у большинства кодеров улетела в корзину соотв самопальная функция. Увы, с массивами мы такого вряд ли дождёмсо..
И таскать телегу классов из кода в код, при том что в каждом коде из неё используются %10..20 функций.
Не нужно писать классы "умных массивов", они уже есть в Стандартной библиотеке MetaQuotes, посмотрите семейство классов Arry
Мне кажется или вы не работали с языками о которых речь? Индекс добавляемому элементу указывать не нужно вообще, он присваивается автоматом и размерность массива увеличивается также. У программиста просто нет шанса ошибиться в индексе при этой операции
Ууууу... Каких только шансов у программиста нет ошибиться. Вы зря думаете, что способны учесть все варианты работы сколь-нибудь сложной программы.
Все эти "действия по умолчанию" - должны быть свойствами сложных объектов. Только классов. Простые же объекты типа переменных, массивов и простых структур - должны иметь как можно меньше "умолчательных" свойств.
Например, при создании - в них должно храниться неопределенное значение, а вовсе не нуль.
Можно реализовать похожее поведение классами, добавить связанные с ним функции pop, shift, unshift итд. И таскать телегу классов из кода в код, при том что в каждом коде из неё используются %10..20 функций. Похоже это на правильное решение?
Это правильное решение с точки зрения логики. При работе с такими классами - их поведение прозрачно.
А насчет "таскать телегу классов" - при кодировании вы их не таскаете, просто подключаете библиотеку. А при компиляции - нормальный компоновщик не должен пихать в исполняемый модуль все методы из библиотеки подряд, а только те, что используются.
Пример правильного решения на моё имхо - добавление в функцию ObjectsDeleteAll возможности удалять по префиксу - это ещё микрон в сторону более высокоуровневого программирования - и у большинства кодеров улетела в корзину соотв самопальная функция. Увы, с массивами мы такого вряд ли дождёмсо..
А на мой взгляд - это тоже неверный подход, по той же причине. Функция нагружается несвойственными ей задачами, которые не следуют из логики ее применения.
Правильное решение, как мне кажется - это класс-менеджер объектов на графике, который ведет их список, и удаляет необходимые, по мере вызовов функций. Префиксы названий, как мне кажется, должны служить исключительно для того, чтобы человеку было понятна некоторая информация по объекту. А удаление - должно основываться никак не на имени объекта, а на сохранении этого имени в массиве.
version 5.0 build 1150, демо
Обновите свой терминал (нужно подключится к демо-серверу MetaQuotes-Demo). Текущий билд:
Вот такой скрипт:
даёт такой результат:
Обновите свой терминал (нужно подключится к демо-серверу MetaQuotes-Demo). Текущий билд:
Вот такой скрипт:
даёт такой результат:
Спасибо, а не знаете почему у флага значение 0 , как будто ничего не изменилось