Это системная функция языка. Считаю, что переназначать системные функции/константы очень плохая идея мягко говоря, а грубо говоря - высшая степень садомазохизма))
Однако, это код от MQ без каких-либо warnings. Явная неоднозначность.
Это системная функция языка. Считаю, что переназначать системные функции/константы очень плохая идея мягко говоря, а грубо говоря - высшая степень садомазохизма))
Для класса обертки над системными функциями, когда метод класса прямо похож на системную функцию - это разумно (обертка должна как можно ближе быть к сути) и осознанно.
Внутри функци область видимости правильно указана:
Это системная функция языка. Считаю, что переназначать системные функции/константы очень плохая идея мягко говоря, а грубо говоря - высшая степень садомазохизма)) А Вы любитель дефайнить всё что дефайниться и даже что не дифайнется тоже умудряетесь.)
Выше дали ссылку на обсуждение трехлетней давности. Прочел - понравилось объяснение. Приведу его здесь.
Выделил цветом причину обязательного "замусоривания" кода. В кодобазе такой "замусоренный" код и выкладываю. Мне он значительно понятнее при чтении, чем СБ.
Например, вот читаю кусок штатного файла MQL5\Include\Trade\Trade.mqh:
Можете понять при чтении, что за OrderSend вызывается?
Я же не считаю, что замусоривание есть абсолютное зло. Я только отметил, что "this." замусоривает сильнее чем "m_", и уж тем более сильнее чем "m".
И Вы, как я понимаю, не команда, а одиночка. Вы пишите так, как понятнее Вам и это правильно. Но я встречал где-то кусок Вашего весьма запутанного кода (что-то было с условиями и/или логическими операциями) и, вроде, Ваш комментарий, что Вы не помните, почему так, но код был когда-то отлажен и он рабочий. И вот это я считаю неправильным, потому что код должен быть читаем по крайней мере разработчиком этого кода.
Для класса обертки над системными функциями, когда метод класса прямо похож на системную функцию - это разумно (обертка должна как можно ближе быть к сути) и осознанно.
Внутри функци область видимости правильно указана:
я как раз об этом и говорю, что в рамках класса можно делать и разумно делать всё что угодно и удобно, но переназначать системные функции глобально (как это делает fxsaber) - это даже не выстрел в ногу, а в голову - пользователь кода обязательно когда ни будь получит результат не тот, который ожидал.
Это системная функция языка. Считаю, что переназначать системные функции/константы очень плохая идея мягко говоря, а грубо говоря - высшая степень садомазохизма))
Однако, это код от MQ без каких-либо warnings. Явная неоднозначность.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3320: Улучшения и исправления
Renat Fatkhullin, 2022.08.03 06:40
не дай бог, если вы с такими неоднозначностями пишите боевой код. В профессиональных больших проектах вас просто выгонят и правильно сделают.
С this вы продемонстрировали осознанный самострел с последующим корявым исправлением, не говоря уже о тотальном замусоривании кода.
Это системная функция языка. Считаю, что переназначать системные функции/константы очень плохая идея мягко говоря, а грубо говоря - высшая степень садомазохизма))
Для класса обертки над системными функциями, когда метод класса прямо похож на системную функцию - это разумно (обертка должна как можно ближе быть к сути) и осознанно.
Внутри функци область видимости правильно указана:
Внутри функци область видимости правильно указана:
Автор этого кода просто не хотел попасть в рекурсию, поэтому написал через "замусоривание". Очевидно же, что ответ на этот вопрос
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3320: Улучшения и исправления
fxsaber, 2022.08.03 09:05
Можете понять при чтении, что за OrderSend вызывается?
Однако, это код от MQ без каких-либо warnings. Явная неоднозначность.
Никакой неоднозначности нет ни по какому критерию.
Класс-обертка выполняет то, что задумано в рамках своей области видимости.
Это системная функция языка. Считаю, что переназначать системные функции/константы очень плохая идея мягко говоря, а грубо говоря - высшая степень садомазохизма)) А Вы любитель дефайнить всё что дефайниться и даже что не дифайнется тоже умудряетесь.)
А как вам это из того-же файла библиотеки
Автор этого кода просто не хотел попасть в рекурсию, поэтому написал через "замусоривание". Очевидно же, что ответ на этот вопрос
Не учите профессионалов, пожалуйста.
Что вызывается, легко узнать навигатором по коду. Не придумывайте проблем там, где их нет.
Никакой неоднозначности нет ни по какому критерию.
С точки зрения компилятора - да. Но это не мои слова.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3320: Улучшения и исправления
Renat Fatkhullin, 2022.08.03 06:40
Но не дай бог, если вы с такими неоднозначностями пишите боевой код. В профессиональных больших проектах вас просто выгонят и правильно сделают.
Заложена потенциальная проблема лишь по той причине, чтобы не писать this.
Выше дали ссылку на обсуждение трехлетней давности. Прочел - понравилось объяснение. Приведу его здесь.
Выделил цветом причину обязательного "замусоривания" кода. В кодобазе такой "замусоренный" код и выкладываю. Мне он значительно понятнее при чтении, чем СБ.
Например, вот читаю кусок штатного файла MQL5\Include\Trade\Trade.mqh:
Можете понять при чтении, что за OrderSend вызывается?
Что вызывается, легко узнать навигатором по коду.
Главное, не забывать на "штатных" функциях в ME нажимать ALT+G. Ну а мало ли это нештатная функция...
При чтении же в Web или в других редакторах, наверное, нужно делать что-то другое.
Для класса обертки над системными функциями, когда метод класса прямо похож на системную функцию - это разумно (обертка должна как можно ближе быть к сути) и осознанно.
Внутри функци область видимости правильно указана:
я как раз об этом и говорю, что в рамках класса можно делать и разумно делать всё что угодно и удобно, но переназначать системные функции глобально (как это делает fxsaber) - это даже не выстрел в ногу, а в голову - пользователь кода обязательно когда ни будь получит результат не тот, который ожидал.
а в приведённом примере из СБ как раз всё хорошо.