Возможный дубликат:
Классы. В чем смысл?
Я прочитал тонны учебников, написал много классов, использовал их, но я до сих пор не могу определить некоторые точки ООП.
Я имею в виду, я думаю, что получил теорию. Это парадигма, другой способ думать и решать проблему. Я знаю все точки коммутации: повторное использование кода, инкапсуляция, улучшенная обработка ошибок, упрощение обслуживания, наследование, дизайн по контракту, улучшенная документация, агрегация, состав, некоторые шаблоны проектирования...
Тем не менее, отпустите реальную сделку. Скажем, у меня есть следующее:
- базу данных и класс для доступа и запроса.
- У меня есть таблица с именем person и другая таблица с именем address
- Простой бизнес-правило: у одного человека может быть один или несколько адресов (дома, работы, доставки...), простого отношения к многим.
- У меня есть класс высокого уровня для операций commom (CRUD). Каждая таблица имеет класс, который является расширением от этого.
- Конечно, каждый класс (человек и адрес) имеет свои собственные методы: например, getAddressByLocation или getPersonsByAge.
- Также есть дюжина просмотров и пара форм
Все это потрясающе и полезно, но... Я не могу перестать думать в простейшем случае: перечисление некоторых людей. Да, потому что каждая строка в выходной таблице создается на одном экземпляре класса. Я не могу перестать думать о том, сколько памяти и процессора используется на неиспользуемых ресурсах.
Листинг 50 человек означает создание 50 экземпляров, таких как crud, фильтрация загрузок, проверка правильности и т.д., когда мне нужно запустить запрос и просто вывести результаты с помощью простого цикла.
Меня это смущает. И не просто сбивать с толку, так как я уже видел некоторые приложения, где время выполнения увеличивается экспоненциально с базой данных, когда бизнес-правила немного сложнее.
Я думаю, это случай для создания новых классов или простых скриптов, чтобы просто обрабатывать выходы и отчеты? Если да, значит, это означает двойное усилие, использование ООП бессмысленно, как только мне понадобится создать много разных классов для одного и того же объекта базы данных. Кодирование становится сложнее, обслуживание не охлаждает.
Я что-то упустил? Или это недостаток подхода ООП?
Должны ли мы пожертвовать прямой точкой, тонким, более быстрым кодом, чтобы ускорить разработку и обслуживание?
ИЗМЕНИТЬ
Как и ожидалось, некоторые моменты, которые я поставил раньше, вводили в заблуждение для некоторых парней...
Во-первых, я приправлен к действительно действительно крупным проектам (я работал в IBM по продаже для Sprint/Nextel USA и Directv North America, поэтому я привык видеть, что каждый терабайт обрабатывается ежедневно).
Когда я сказал, что 50 человек были извлечены из базы данных, я имею в виду не только 50 человек, я просто хочу дать представление о многих записях. Я знаю, что 50 записей ничего не представляют для сегодняшних серверов. 50 миллионов. Представьте это последнее число, если это необходимо.