ООП vs процедурное программирование - страница 40

 
Andrei:

Вот именно, что от конкретного человека. Зачем программисту, который не страдает шизофренией, усиленно прятать от себя самого доступ к какой-то части собственного кода, отладкой которого он же и занимается? Может лучше руки себе завязать? :)

Ну, я уже сказал - попробуй поработать с файлом структуры, который привел выше Петер. "Выловить" оттуда необходимые вам данные, а потом вписать их обратно в правильное место.

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

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

СанСаныч вон, предлагает заменить ООП документированием - в принципе, тоже вариант, более того, он гораздо ближе к структурам, предложенным Петером. Просто у Петера - все документирование "в уме", а у СанСаныча - на бумаге (или на электронном носителе).

 
Andrei:

А вот интересно в чем проявляется этот "ужас".

Кстати, Renat Fatkhullin,  и правда, было бы интересно поглядеть на примеры...

 
George Merts:

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

СанСаныч вон, предлагает заменить ООП документированием - в принципе, тоже вариант, более того, он гораздо ближе к структурам, предложенным Петером. Просто у Петера - все документирование "в уме", а у СанСаныча - на бумаге (или на электронном носителе).

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

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

 

Кстати, всем противникам ООП - хорошо бы вспомнить времена, когда программы писались на ассемблере.

И конкретно - работу с файлами средствами BIOS и DOS.

На мой взгляд, отличие между процедурным и ООП-подходом - как раз примерно такое же, как в работе с диском средствами BIOS и DOS.

Как БИОС, так и ДОС - имеют все необходимые функции для работы с диском.

Однако, создать файл функциями БИОС, и записать туда "Hello,world !" - это весьма нехилая проблема даже для дисков с системой  FAT. Я в свое время - делал такое на спор, и мне было весьма непросто. В ДОСе это делается запросто одной функцией.

Представляю, насколько непросто с помощью БИОСа создать такой файл для системы NTFS...

 
Andrei:

Читайте внимательней, речь шла о классе, а не о конструкторе класса.

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


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

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

А напрямую как? Если не через дверь, то стену выносить? Через конструктор как раз и выглядит как передача напрямую. Параметры можно передавать сразу при создании объекта, даже без new. Получается, что вам лень описать параметры, которые класс должен принять? А функции писать и переменные объявлять вам не лень? 

Стопудо вы не поняли ничего из написанного))

 

Dmitry Fedoseev:

А функции писать и переменные объявлять вам не лень?

Функции писать и переменные объявлять надо везде и при ООП тоже. Только при ООП с этим бесполезной возни будет на порядок больше и то, если заранее все предвидеть пророчески, какая там будет структура данных в конце проекта, чтобы не переписывать по сто раз. Вроде очевидно.

 
Andrei:

Функции писать и переменные объявлять надо везде и при ООП тоже. Только при ООП с этим бесполезной возни будет на порядок больше и то, если заранее все предвидеть пророчески, какая там будет структура данных в конце проекта, чтобы не переписывать по сто раз. Вроде очевидно.


Побольше возни, но есть случаи и много, когда овчинка стоит выделки. В общем не смертельно.

 
Dmitry Fedoseev:

Побольше возни, но есть случаи и много, когда овчинка стоит выделки. В общем не смертельно.

Известно ведь, когда стоит выделки - когда оплата за труд почасовая, так как тогда чем больше возни тем выгодней. :)
 
Dmitry Fedoseev:

Как долго вы корпели над этой своей библиотекой?

2 года беспрерывного труда.

Ядро графического интерфейса (кстати есть еще прото-ядро содержащие прототипы элементов. Занимает 2 мегабайта. Состоит из таких таблиц, как та, что я привел), содержит тысячи переменных. Как Вы думаете, если бы не использовал ядро как центр и разбросал переменные по классам и структурам и налаживал бы между ними связь через различные разграничения доступа, я бы справился со своей задачей? - В одиночку никогда. Количество сущностей программы у меня увеличилось бы в несколько раз. Связи внутри кода между функциями и классами стали бы так сложны, что я бы просто был бы не в силах один продолжать работу. Эффективность работы всего механизма в целом упала бы.

Я бы достиг предела своих возможностей гораздо раньше и остановился. 

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

К тому же, мое мышление и так структурировано, и потому необходимости в ООП у меня в этом плане нет.

 
Renat Fatkhullin:

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

Была мысль сделать нормальный интрерфейс в R из MQL5, но после того, как глубже покопался в нем, сразу отказал в интеграции. Система категорически не способна защищать данные и сессии.

Пока программист не поработает в нормальных девелоперских коллективах с жесткими требованиями(битиЁм по рукам в течение пары лет минимум), он не станет разработчиком в нормальном смысле. Мы хватаемся за голову в 90% случаев, когда смотрим на тестовые задания при рассмотрении кандидатов. Тотальный ужас по всей индустрии разработки.

Поэтому еще раз повторю - оппоненты ООП демонстрируют тут какой-то балаган.

Извините еще раз.


Ренат, пожалуйста не нервничайте. Я сам не сторонник R. Вы отличный руководитель и программист, не воспринимайте близко к сердцу крики с форума.

Желаю Вам и Рашиду, а также вашей команде хорошего здоровья и творческих успехов!