Хорошая статья. В ней хорошо раскрыта концепция, что нужно делать, а что не нужно.
Погрешности в конкретных примерах в данном случае не снижают ценность статьи, так как её задача - помочь человеку оптимизировать стиль своей работы. Эта задача решена блестяще, всё написано максимально просто и понятно.
The first value of the variable in the loop is wrong.
Instead of one if, there are two.
string comparison (character) must come at the end.
bool expressions are not bracketed.
Magic variable is missing in the input functions.
The position object was not created.
Я не видел ошибки в первый раз, пока она не была опубликована, так как я кодировал ее не в метаредакторе, а просто во время написания, но это не большая проблема, потому что, кстати, все использованные примеры кодирования должны были только указать
Pearls of wisdom for programmers collected from leading practitioners. - GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitio...
1. Ошибка в инициализации цикла от количества необходимо отнимать 1, когда делаем обратный перебор.
2. Если не смогли получить позицию по индексу из библиотечной функции нужно выходить из цикла с ошибкой и дальше уже если нужно обработать или повторить функцию заново, иначе есть риск получить недостоверное количество, а вы все таки с финансами работаем, а иногда в позиции бывают большие суммы, а такая мелочь может привести к убытку.
3. Сначала надо проверять переменные bool, далее перечисления ENUM и только после проверять int, double, string, если проверка не удалась то сразу переходить к следующему элементу цикла.
Если делать операции сравнения через &&, то программа будет в обязательном порядке делать проверку каждого условия.
4. Название для функции тоже важно, лучше выглядит PositionsByType, это кажется мелочью, но когда вы заходите использовать эту функцию вам не нужно переходить к библиотеке и ее оглавлению, а достаточно начать вводить стандартное наименование Positions, а у вас будет несколько вариантов вызова PositionsTotal, PositionsByType....
5. Необходимо соблюдать ширину кода, чтобы не использовать горизонтальное пролистывание, так как это сильно снижает читаемость и скорость разработки.
Aliaksandr Hryshyn #: По поводу этого вы ошибаетесь:
"Если делать операции сравнения через &&, то программа будет в обязательном порядке делать проверку каждого условия.".
Происходит сравнение по порядку до первого false.
Кстати, ещё в таких ситуациях можно учитывать вероятность невыполнения условия.
Да, Вы меня верно поправили, проверка будет до первого false, главное, чтобы мелкие типы данных были вначале.
В случае если условия состоят из функций, то первой должна стоять самая мелкая и до большой с точки зрения потребляемых ресурсов, но не нарушая логики программы...
Этот прием использую во всех своих проектах, прирост в скорости заметный для тестера в режиме оптимизации.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Хорошая статья. В ней хорошо раскрыта концепция, что нужно делать, а что не нужно.
Погрешности в конкретных примерах в данном случае не снижают ценность статьи, так как её задача - помочь человеку оптимизировать стиль своей работы. Эта задача решена блестяще, всё написано максимально просто и понятно.
Спасибо, Омега!
Интересно...
Стать хорошим программистом (часть 1): избавляемся от пяти привычек, чтобы лучше программировать на MQL5
Интересно...
Интересно...
Стать хорошим программистом (часть 1): избавляемся от пяти привычек, чтобы лучше программировать на MQL5
Это фриланс, заказчики чаще всего вообще не понимают в коде, а отзывы плохие не за качество кода. Написал, прибыль программа не дала, вот и отзыв.
всем (и автору статьи тем более) к прочтению обязательно : 97 Things Every Programmer Should Know
Вариант работающий быстрее и на мой взгляд понятнее:
1. Ошибка в инициализации цикла от количества необходимо отнимать 1, когда делаем обратный перебор.
2. Если не смогли получить позицию по индексу из библиотечной функции нужно выходить из цикла с ошибкой и дальше уже если нужно обработать или повторить функцию заново, иначе есть риск получить недостоверное количество, а вы все таки с финансами работаем, а иногда в позиции бывают большие суммы, а такая мелочь может привести к убытку.
3. Сначала надо проверять переменные bool, далее перечисления ENUM и только после проверять int, double, string, если проверка не удалась то сразу переходить к следующему элементу цикла.
Если делать операции сравнения через &&, то программа будет в обязательном порядке делать проверку каждого условия.
4. Название для функции тоже важно, лучше выглядит PositionsByType, это кажется мелочью, но когда вы заходите использовать эту функцию вам не нужно переходить к библиотеке и ее оглавлению, а достаточно начать вводить стандартное наименование Positions, а у вас будет несколько вариантов вызова PositionsTotal, PositionsByType....
5. Необходимо соблюдать ширину кода, чтобы не использовать горизонтальное пролистывание, так как это сильно снижает читаемость и скорость разработки.
По поводу этого вы ошибаетесь:
Да, Вы меня верно поправили, проверка будет до первого false, главное, чтобы мелкие типы данных были вначале.
В случае если условия состоят из функций, то первой должна стоять самая мелкая и до большой с точки зрения потребляемых ресурсов, но не нарушая логики программы...
Этот прием использую во всех своих проектах, прирост в скорости заметный для тестера в режиме оптимизации.
Это фриланс, заказчики чаще всего вообще не понимают в коде, а отзывы плохие не за качество кода. Написал, прибыль программа не дала, вот и отзыв.