|
|
| Результаты опроса: используете ли вы ооп | |||
| да |
|
238 | 86.55% |
| нет |
|
37 | 13.45% |
| Голосовавшие: 275. Вы ещё не голосовали в этом опросе | |||
|
|
Рейтинг 4.76/461:
|
|
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
|
|
Стоит ли использовать ООП?09.02.2010, 13:44. Показов 103221. Ответов 793
Метки нет (Все метки)
Здравствуйте.
Возник такой вопрос: стоит ли использовать ооп. Даже не так, когда использовать ооп? Иногда (даже чаще всего) легче написать простые функции, а не мутить с классами обектами и методами. Раздражает инкапсуляция - какой вообще ее смысл? Чтобы получить переменную класса по правилам ооп нужно создавать метод для ее чтения? когда такой подход оправдан - ведь затрачивается куча лишнего времени.
5
|
|
| 09.02.2010, 13:44 | |
|
Ответы с готовыми решениями:
793
Стоит ли использовать ООП -- часть вторая
|
|
|
|||
| 01.04.2018, 16:29 | |||
|
Тогда методы уже не будут абстрактны. Они же стали составной частью класса. Абстрактный метод может работать с любой сущностью, на которую завязан абстрактно. В этом его сила. Что такое абстракция? Это всего лишь заключение в одно обозначение некоего конгломерата функций, которые в свою очередь являются абстрактными обозначениями более мелких действий. Именно действий, а не данных! Данные - сами по себе! Каждый тип данных самодостаточен сам по себе, поэтому его нельзя ни от кого наследовать. ООП позиционировался как отображение окружающего нас мира. В мире есть (якобы) отдельные обьекты, которые (как бы) самостоятельно функционируют. Однако не принимается во внимание, что обьекты, являются потоком энергии, действия, а не статики. Там во всём одно лишь действие, - нет там статичных обьектов, которые можно было бы назвать статичными данными. Абстрактно наследуются действия, причём от действий же.. Наивысшая функция - точка, это - человек, последнее слово программы.. Данные скрыты, глубоко скрыты. Данные принадлежат всем. Данные - элементарные типы. Данные - вещество, функции - энергия. Энергия всегда выше данных, абстрактнее их, ибо данные сами по себе тоже производные этой энергии на самом низшем уровне. Чем большее количество кода будет исполнятся под единственым обозначением, тем абстрактнее действие. Самое главное - отрешиться от низкоуровневых вещей, когда они уже обёрнуты в абстрактные оболочки, и функционировать уже там, на высшем уровне. Наращивание слоёв абстракций и есть функциональное программирование, а не то, чем его считают ныне. А в ООП всё вывернуто наизнанку мира..
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 01.04.2018, 16:36 | ||
|
0
|
||
|
|
||
| 01.04.2018, 16:43 | ||
|
Добавлено через 2 минуты Ой, забыл что сегодня 1 апреля.. Ну нехай живе
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 01.04.2018, 16:46 | |
|
CoderHuligan, Главный вредитель в С++ - коммитет. Это с самого начала ясно было.
0
|
|
|
|
||
| 01.04.2018, 17:07 | ||
|
Конкретизирование по определению ограничено своей сущностью, например классом. Поэтому такие обьекты не могут развиваться и свободно изменятся. "Сокрытие данных" некогда было обьявлено архиважнецкой вещью, и по всей видимости, нанесло индустрии непоправимый вред. Сокрывать нужно не данные, а функции, которые должны быть чёрными ящиками для других клиентов, но каждая функция должна заботиться не только о том, что у неё имеется на входе, но и о том, КУДА (не КОМУ) она отдаёт свой выхлоп. Принцип - ты мне, я - тебе. Так в природе принято. Там всё функционирует на взаимном узнавании, ибо если было бы иначе, вирусы уже давно погубили бы всё живое.
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 01.04.2018, 17:13 | ||
|
Впрочем, если Вам нравится, можете продолжать раскрашивать кнопки в интерфейсе. Остальные Ваши реплики либо сильно расходятся с реальностью, либо не имеют отношения к тому, что я писал. Поэтому отвечать на них (сразу на все) не вижу смысла. Но, если Вам интересно, могу ответить, но только по очереди. Выбирайте любую, и я попытаюсь объяснить Вам, что с ней не так. Потом следующую... и так далее.
0
|
||
| 01.04.2018, 17:44 | ||
Кода примерно с .. ну хз, более тысячи только .cpp файлов, причем самописных (с либками-то любой скажет что у него мульен строк). Коду более 20 лет, написан в суровом процедурном стиле, на классы - болт, а уж о константности остается только мечтать. Ну ясно что критиковать - много ума не надо, но не стоит забывать что этот код свои 20 (с гаком) лет работал. Какие проблемы я бы выделил- недостаток "классовости" - да, есть такое дело. Ф-ции с 10 и даже 15 аргументами - дело рядовое, пользоваться ими весьма неудобно. Но дело не только в том что "нет классов", а может и "не столько". Другие вещи не менее важны, и на них уходит по крайней мере не меньше времени. С др стороны многое в тупеньком "процедурном стиле" пашет весьма удачно и лепить там классы неуместно
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 01.04.2018, 18:42 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 01.04.2018, 18:57 | |||
|
Добавлено через 1 минуту
0
|
|||
|
|
||
| 01.04.2018, 20:29 | ||
|
Имеем функцию, которая принимает на вход тип указателя на динамическую строку, неважно какого устройства. Функция возвращает новую реаллоцированную строку, и при необходимости что-то туда записывает. Возникает вопрос: если функция возвратит новый указатель на новую строку обычным образом(положит его в регистр EAX к примеру, в зависимости от платформы и соглашений) , то что делать с прежним входным указателем, если принимающая сторона не удосужится положить новый указатель в старый? А? Правильно - возникнет висячий указатель, как это ОЧЕНЬ часто бывает.. Поэтому, правильней и намного, передавать функции не просто указатель, а указатель на указатель, и возвращать его разыменовывая в функции. А кодом возврата возвращать ошибку либо успех! В этом случае никаких висячих ссылок не образуется, ибо функция "ложит" новый адрес в тот указатель, который получила на входе. Она это делает САМА, поэтому она в курсе КУДА отправляет выходной параметр!!
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 01.04.2018, 20:40 | |
|
CoderHuligan, Эта проблема элементарно решается рефкаунтингом буфера. при этом никаких указателей на указатель. буфер просто устроен так что рефкаунт лежит по отрицательному смещению. Передаются при этом не сами указатели а объекты-холдеры по значению которые содержат указатель на буфер и осуществляют рефкаунтинг. Все.Никаких проблем в этом плане нет и никогда не было. Мораль сей и всех остальных басней про указатели такова- чтобы указатели были безопасными, умными должны быть объекты которые их используют, а не сами указатели, а тем более не функции, у которых даже знание куда отправить выходной параметр никак не решает того вопроса что ссылаться на этот же буфер может еще неизвестно сколько указателей..
0
|
|
|
|
|||
| 02.04.2018, 11:12 | |||
|
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 02.04.2018, 14:44 | ||
|
Если функция создаёт новую строку, то пусть вызывающая сторона думает, что делать со старым и новым указателями. Если функция изменяет строку, то передавать в неё нужно не указатель, а адрес указателя.
0
|
||
|
|
|||
| 02.04.2018, 20:14 | |||
|
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 02.04.2018, 20:23 | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 06.04.2018, 13:56 | |
|
CoderHuligan, Shamil1, один раз пишем шаблонный класс "динамический буффер" который сам думает о указателях. А дальше делаем на нем строки массивы и че там еще с динамическими буферами душа пожелает. И никто из них уже не думает что с буфером и когда делать. думают максимум над семантикой - у кого COW у кого семантика указателя (это с двойным указателем под капотом) и т.д. А те кто пользуют оные строки массивы и т.д. уже вообще ни о чем не думают кроме своей задачи.
0
|
|
|
|
|||||||
| 06.04.2018, 14:42 | |||||||
0
|
|||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 06.04.2018, 14:45 | ||
|
Что касается функций, которым нужен буфер, то я не вижу общего решения. Зависит от зачем, когда, где и сколько. Но в любом случае, такой функции требуется "обёртка", чтобы посторонняя логика не выплёскивалась в код.
0
|
||
|
|
|
| 06.04.2018, 16:46 | |
|
В функциях скрыта и логика проверки с какими строками она работает - с сишными строками или с dms строками.
Добавлено через 1 час 44 минуты Как видно, в функцию передаётся адрес указателя, то есть образуется косвенность вызова, а это позволяет в функции изменить указатель. dms строки имеют magic-поле, по которому можно определить отличие от сишной строки. Magic-поля довольно обычны в структурах, которые описывают различные типы файлов, однако применительно к динамическим строкам, я такого не встречал. Это очень удобно, хотя и увеличивает длину строки, но кто сейчас думает об экономии 4 лишних байтов? Добавлено через 15 минут Не требуется никаких классов тем более шаблонных, чтобы сделать простейшую вещь. Всё определяется соглашениями, и этого достаточно.
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 06.04.2018, 16:55 | |
|
0
|
|
| 06.04.2018, 16:55 | |
|
Стоит ли учить ООП в одно время с Яп Как использовать ООП в WinAvr Js class как правильно использовать ООП Когда следует использовать ООП в РНР? WITH AS стоит ли использовать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|