МТ4 или МТ5. Какие преимущества и недостатки? - страница 42

 
Artyom Trishkin:

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

Вот поэтому логика должна быть прозрачной - какой тикет пользователь установил тот и должен исполняться, а не тот что задумал создатель класса. Это приводит к куче непоняток бессмысленных.

 
Artyom Trishkin:

Всё проще, чем вы себе придумали.

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

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

Ну, так а я о чем говорю ? У пользователя библиотеки, класса или функции - не должно быть доступа ни к чему, сверх того, что ему непосредственно надо.  Все правильно - тикет ордера должен храниться внутри класса, и изменить его у пользователя не должно быть возможности. Максимум - запросить в режиме "ридонли".

 
Artyom Trishkin:

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

От кривых ручек защиты нет. )) Нужно просто корректно описать логику функции, а не городить огород со всякими ограничениями.

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

 
Andrei:

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

И это для самого простого проекта, а что будет если проект будет чуть посложней?

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

Ответ на вопрос "как подсоединяется интерфейс и на каких условиях" - должен быть также как можно проще. Интерфейс должен быть таким, чтобы его просто невозможно было бы подключить иначе.

Вот, тот же вышеприведенный интерфейс позиции. После ее выбора - пользователь может прочесть компоненты (ордера МТ4 или позиции МТ5), запросить все свойства каждой, но даже при желании - он ничего не сможет изменить. Если бы это была структура данных, то изменить ее поле - вполне реально. Сперва это делается для каких-то текущих целей, временно, но потом - забываем "вернуть" код к исходному состоянию - и пожалуйста, имеем ошибку (которая у меня пару раз когда-то, еще в студенческие времена, случалась).

Andrei:

Также вопрос о том должен ли программист, севший писать код, придумывать средства против самого себя мы уже обсуждали - если программист в трезвом уме и временно не пьян, то "защиты от дурака", то есть от него самого, ему не нужны в принципе, не говоря уже о том что это затрудняет понимание логики,  потому что дурак при желании всегда найдет способ как себя обдурачить и эта борьба двух дураков имеет непредсказуемый результат.

Мой опыт показывает, что "защита от дурака" нужна обязательно, именно от себя самого. Я уже неоднократно благодарил сам себя за подобные ограничения, когда хотел что-то изменить, а в интерфейсе не было таких возможностей, я возмущался, мне казалось это глупостью, но начав разбираться - я неожиданно наталкивался на тонкость, про которую уже не помню, но которая как раз и ограничивала возможности интерфейса.

В последние годы я такие тонкости - всегда описываю в коде подробными комментариями, что мне также очень помогает. Хочу иметь доступ - доступа нет. Почему ? Начинаю разбираться по коду, натыкаюсь на этот самый большой комментарий, читаю, и вспоминаю, ах да, действительно, доступ в том месте неразумен. Делать надо иначе. И так было неоднократно.

 
Andrei:

От кривых ручек защиты нет. )) Нужно просто корректно описать логику функции, а не городить огород со всякими ограничениями.

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

Проблема в том, что человеку свойственно ошибаться и забывать. Поэтому "кривые руки" у него изначально. И именно всякие ограничения и позволяют "не наделать делов" с этими самыми "кривыми ручками".

Что же касается исключений - то я, видимо, неадекватен, поскольку считаю исключения очень даже хорошим инструментом, и в С++ всегда их широко использую, наряду с кодами возврата. В MQL исключений нет - я использую только коды возврата. Большой разницы не вижу, можно использовать и то, и другое, спор "код возврата vs исключение" - скорее религиозен.

 
George Merts:

Мой опыт показывает, что "защита от дурака" нужна обязательно, именно от себя самого. Я уже неоднократно благодарил сам себя за подобные ограничения, когда хотел что-то изменить, а в интерфейсе не было таких возможностей, я возмущался, мне казалось это глупостью, но начав разбираться - я неожиданно наталкивался на тонкость, про которую уже не помню, но которая как раз и ограничивала возможности интерфейса.

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

Даже если и есть какой-то случай когда функция ведет себя некоректно, то это можно просто пометить в коде в виде сообщения - интерфейсы тут явно не в тему приплетаются непонятно каким боком.

 
Andrei:

И еще про ООП, объект - это тип данных и вроде бы работают с ним как типом данных, например объявление объекта и т.п.

Но  сразу видна полная неадекватность тех кто это все придумывал ибо к этим данным начисто отсутствует доступ извне и нормально работать с ними как с данными практически невозможно.

Более того эти данные имеют способность неконтролируемо накапливаться и нужно придумывать всякие извращения как за всем этим следить...

Не будем говорить про структуры - это логичный тип данных ибо это тупо было украдено из Си и ООП деятели просто не смогли это испоганить...

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

 
Vasiliy Sokolov:

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

Вы бы еще из детсада моего выискали бы пример и сделали бы далеко идущие выводы на всю оставшуюся жисть. )) Спасибо, повеселили...
 
Andrei:
Вы бы еще из детсада моего выискали бы пример и сделали бы далеко идущие выводы на всю оставшуюся жисть. )) Спасибо, повеселили...

А что делать, если ничем кроме дедсадовских кодов Вы неизвестны. Предъявите хоть один реализованный проект средней руки для подтверждения своих слов. Ах да, таких у Вас нет. 

 
Vasiliy Sokolov:

А что делать, если ничем кроме дедсадовских кодов Вы неизвестны. Предъявите хоть один реализованный проект средней руки для подтверждения своих слов. Ах да, таких у Вас нет.

А у вас самого есть интересненькое хоть что-то предьявить?)

Причина обращения: