
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да-да, fxsaber, плавали, знаем. Совсем недавно же кто-то предлагал алгоритм нахождения знаков после запятой, и потом оправдывался, мол, "этот алгоритм был предназначен для цен, а не для всех чисел вобще"... Ситуация же близкая - расчитываешь на одни неявные предположения, а код используется без этих условий.
Некорректно выдрано из контекста.
В данном случае - ситуация схожая. Или такой пример. Какой-нибудь ID, в котором разряды старше 32 что-то обозначают. Процедура написана, все нормально работает. А потом - я ее решил использовать, забыв про старшие разряды, передав ей uint. Процедура-то ждет, что в старших разрядах есть информация, а в инте - ее нет. И вылезти проблема может далеко не сразу.
Никому же не мешает, что мэджики ордеров могут быть отрицательными.
Сейчас с предупреждениями все отлично. Например, при написании кроссплатформенного кода будут возникать предупреждения (не без оснований) с тикетами и мэджиками.
Чтобы в этой связи любые потери/ошибки учитывать и было сделано
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2018.03.06 09:26
Ниже код, который компилируется без предупреждений под MQL4/5
Спасибо @Andrey Voytenko за предложение такого решения!
Некорректно выдрано из контекста.
Никому же не мешает, что мэджики ордеров могут быть отрицательными.
Сейчас с предупреждениями все отлично. Например, при написании кроссплатформенного кода будут возникать предупреждения (не без оснований) с тикетами и мэджиками.
Чтобы в этой связи любые потери/ошибки учитывать и было сделано
Ну, так это ж и есть причина ошибки - когда код, использованный для одного контекста - используется для другого... Все верно. Потому я и считаю, что предупреждение по datetime должно быть - как раз во избежание случайного изменения контекста (хотя, реально, тип не изменяется) !
Если все используется по назначению - то эти предупреждения не нужны. Но в том-то и задача предупреждений, чтобы ограничить возможность возникновения неправильного использования.
Ну, так это ж и есть причина ошибки - когда код, использованный для одного контекста - используется для другого... Все верно. Потому я и считаю, что предупреждение по datetime должно быть - как раз во избежание случайного изменения контекста (хотя, реально, тип не изменяется) !
Если все используется по назначению - то эти предупреждения не нужны. Но в том-то и задача предупреждений, чтобы ограничить возможность возникновения неправильного использования.
Демонстрации проблемы не было приведено. Перепутать порядок входных в функции можно и в случае, когда входные только int.
Демонстрации проблемы не было приведено. Перепутать порядок входных в функции можно и в случае, когда входные только int.
Можно. Но, тут не введешь предупреждение. А когда у нас datetime и long - можно. Кстати, насколько я понимаю, datetime - это, по смыслу беззнаковое длинное. ulong, а вовсе не long - число секунд не может быть отрицательным.
А проблема - опять же, напомню тебе код, который ты сам и предложил. Я его себе, кстати, в библиотеку забрал. Но, добавил там несколько ASSERT'ов, как раз для того, чтобы его можно было бы использовать исключительно так, как задумывалось.
fxsaber:
Передача по ссылке может иногда помочь избежать Вам таких ошибок.
Вреда от этого будет больше, чем пользы:
Это не разные типы, а один и тот же.
Вы вероятно путаете понятие типа и битового представление в памяти. Это разные вещи. Тип - это интерпретация данных на этапе компиляции.
Глупо отрицать преимущества строгой типизации. Это залог надёжного и качественного кода. Вот объясните мне, зачем вам нужно отправлять вместо datetime какой-то числовой параметр без явного приведения? Неужели вы не понимаете, что это плохой стиль программирования?
Вреда от этого будет больше, чем пользы:
По-моему, это выглядит полезно.
Вы вероятно путаете понятие типа и битового представление в памяти. Это разные вещи. Тип - это интерпретация данных на этапе компиляции.
Мне удобно работать с datetime в нынешнем виде. Ошибок не совершаю. datetime - long.
Глупо отрицать преимущества строгой типизации. Это залог надёжного и качественного кода. Вот объясните мне, зачем вам нужно отправлять вместо datetime какой-то числовой параметр без явного приведения? Неужели вы не понимаете, что это плохой стиль программирования?
Не понимаю. инт к лонгу приводится без предупреждений.
насколько я понимаю, datetime - это, по смыслу беззнаковое длинное. ulong, а вовсе не long - число секунд не может быть отрицательным.
datetime - это именно long.
А вот причина этого предупреждения мне не ясна
Это, видимо, рудимент - когда datetime был int-ом.Лучше флаг -Wparanoia
Я недавно приятно был удивлён, когда увидел, что такая конструкция не создаёт предупреждения о добивки размера до байта, всегда вызывала рвотный рефлекс
Действительно, убрали.