Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Результаты опроса: Реализовать лучше
1 модуль - 1 файл(класс) 8 80.00%
Несколько подобных модулей в одном файле(классе) 1 10.00%
Никогда не работал с созданием модулей 1 10.00%
Голосовавшие: 10. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
1

Модульная структура

11.09.2012, 11:39. Показов 3672. Ответов 22
Метки нет (Все метки)

Здравствуйте)))
Ставлю перед собой задачу реализовать модули на сайте.
Логику всю продумал, построил - Каждый модуль это определенный набор функций.
Теперь вопрос в оптимизации, и быстродействии.

Что именно интересует? -> Например есть у нас товары и для них нам нужно реализовать: каталог, просмотр, сопутствующие товары и другие. Вывод: нужно сделать соответствующие модули.
Тут сразу напрашивается вопрос: обеденить ли эти модули в один класс, или для каждого модуля отдельный класс.

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

Так вот в чем сам вопрос.

Лучше подключать один большой файл класса и создавать его обьект, для некоторых модулей одной направлености(например товаров), или же все таки лучше подключить больше файлов и создать их обьекты, которые будут занимать меньше места в памяти?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2012, 11:39
Ответы с готовыми решениями:

Модульная структура c++
Всем доброго времени суток. В с++ я пока еще медный чайник, посему мне требуется ваша помощь=). ...

Модульная структура программ!!!
Тема: Модульная структура программ Цель работы: Изучить средства построения многомодульных...

Стандартные модули и модульная структура приложений в VB
В бюро по ремонту квартир поступили сведения о состоянии n кооперативных квартир (n - задано)....

Модульная структура приложений и стандартные модули в VB
Помогите написать программу В гостинице проживает n постояльцев (n - заданное число). О каждом...

22
2221 / 2137 / 525
Регистрация: 27.05.2011
Сообщений: 7,339
11.09.2012, 11:52 2
На мой взгляд надо делать каждый модуль свой класс.
например класс каталог , наследуется от класса базового каталога , тот в свою очередь наследуется от базового класса модулей .
в классе каталога описывается алгаритм разных действий модуля (показ по категориям , показ конкретного товара и т.д.), и не более , весь функционал в базовом классе каталога .
Базовый класс модулей содержит методы необходимые всем модулям .
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 12:00  [ТС] 3
crautcher, а можно уточнить:
Вы тут написали:
Цитата Сообщение от crautcher Посмотреть сообщение
показ по категориям , показ конкретного товара
- но тут Вы уже сказали о 2-х модулях(модуль каталога, модуль показа товара). Здесь можно и сделать одним классом, но тогда в показе товара будет грузится не нужный модуль каталога, а в модуле каталога(модуль товара).

Но я понял что Вы поклонник того, чтобы все таки разделить все модули на отдельные классы. Правильно ли я понял?
0
2221 / 2137 / 525
Регистрация: 27.05.2011
Сообщений: 7,339
11.09.2012, 12:02 4
что такое каталог , в моем понимании , это разделы , подразделы , я могу выбрать раздел выведутся подразделы , выберу подраздел выведутся товары - на верху будут фильтры поиска по дате , цене и т.д. в низу пагинация и все эти страницы - один модуль "Каталог"
каждое действие это отдельный метод модуля "каталог"
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 12:29  [ТС] 5
Да, Вы правы, но тут же исходя из оптимизации кода получается так что:
Нам просто необходимо вывести разделы каталога. Что мы делаем. Создаем обьект каталога кторый имеет в себе много методов которые не нужны для текущего модуля и текущей страницы. Что мы получаем в итоге: Мы загрузили в память сервера больше данных чем нам нужно, и тем самым проиграли в быстродействии и нагрузке. Не так ли?
0
2221 / 2137 / 525
Регистрация: 27.05.2011
Сообщений: 7,339
11.09.2012, 12:35 6
но не все же методы выполняются ,а только те которые нам нужны:
somesite?module=catalog&action=topprices
PHP
1
2
3
4
5
6
7
class Catalog extends BaseCatalog{
 
 function TopPrices(){
   $this -> LoadTop() -> Paginate() -> Otput('top');
 }
 
}
вызвали дейстиве , сработали 2 метода базового класса и отдали на вывод . остальные методы никак не нагружают систему ...
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 12:44  [ТС] 7
crautcher, Вы правы что срабатыват 2 метода, но все же.
Например:
1. Подключаем файл(Catalog.php) вместо 2 кб -> 10 кб.
2. Когда создается обьект класа $oCatalog = new Catalog(); он соответственно занимает вместо 1 кб в памяти -> 3 кб.

Это ведь так?
0
2221 / 2137 / 525
Регистрация: 27.05.2011
Сообщений: 7,339
11.09.2012, 12:49 8
Цитата Сообщение от Nazz Посмотреть сообщение
Это ведь так?
ну процессор то не грузится , а памяти в современных серверах немало что-бы из за лишних килобайт переживать , но если так критично подходить можете каждое действие паковать в свой класс
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 12:54  [ТС] 9
crautcher, просто я хочу создать систему которая не будет грузить лишней памяти и процессорных ресурсов, что покажет высокие показатели в быстродействии ресурсов и в работе.

Так же чтобы облегчить работу самой разработки системы(тоисть если нужно пофиксить какой-то баг в модуле, то не нужно заходить в класс, а можно просто отдельный модуль отредактировать).


crautcher, спасибо за Выше внимание и дискуссию.
0
201 / 198 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
11.09.2012, 14:55 10
Nazz, Я вот что скажу. Преждевременная оптимизация Зло. Время загрузки файла можно разбить на этапы этой самой загрузки. и кстати можете проверить читаете 100500 файлов по несколько байт и 1 файл того же размера. Какая операция будет быстрей? Посему не надо мельчить с классами объединяйте зависимые классы в один файл.
1
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
11.09.2012, 15:56 11
Цитата Сообщение от Nazz Посмотреть сообщение
Здравствуйте)))
который занимает много места в памяти
сколько много? точные цифры в студию. без них разговор продолжать не стоит.
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 17:15  [ТС] 12
Цитата Сообщение от Василий Макогон Посмотреть сообщение
сколько много?
не могу сказать, так как говорится в целом, а не про уже готовый результат. Я потому и задал вопрос перед построением модулей, потому чтобы потом не переделывать логики...
0
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
11.09.2012, 18:15 13
суть в том, что ты повторяешь заученные новичками фразы про нагрузку и что лучше - один класс или несколько.

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

возьми, напиши скрипт в котором подгрузи 500 раз файлы в скрипт. и посмотри на нагрузку. она будет микроскопическая.
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 18:32  [ТС] 14
Василий Макогон, ок, спасибо за Вашу помощь)

Я и сам понимаю что один класс и есть одна сущность, но в такой ситуации стал прям на роздорожье...)

Но пока что, как вижу народ за то чтобы делать отдельные классы для разных модулей почему-то))
0
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
11.09.2012, 22:34 15
народ тут сам не в теме.

что такое модуль? нет четкого ответа на этот вопрос. по мне модуль - это просто абстрактное понятие классов, лежащих в директории. все.
0
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
11.09.2012, 23:06  [ТС] 16
Василий Макогон, модуль это определённый набор функций для реализации некоторого функционала. Например: модуль авторизации, модуль пагинации, модуль сортировки, модуль опроса...
0
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
12.09.2012, 01:09 17
ok. у тебя был вопрос про скорость подгрузки классов/файлов. у меня все построено на объектах. __autoload при создании класса выполняет автоподгрузку классов в PEAR стиле. на странице 51 include (51 класс лежащий в 51 отдельном файле) , время выполнения на виртуальном хостинге - 0.04 сек.
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
12.09.2012, 09:43  [ТС] 18
Василий Макогон, оо)) ну ето хорошая скорость)))
а классы сами большие по размерах?
0
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
12.09.2012, 10:43 19
от 1000 до 100 строк
1
WEB-developer
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
12.09.2012, 10:46  [ТС] 20
Василий Макогон, ок) хорошо)) спасибо за данные)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2012, 10:46

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

CMS без базы данных, модульная структура
Добрый день! Ищу CMS без базы данных, для небольших сайтов на дешёвых хостингах. Перепробовал...

Лабораторная работа «Стандартные модули и модульная структура приложений в VB»
На продажу выставлено N квартир. О каждой квартире известно: адрес, категория дома, общая площадь,...

C++ модульная структура. Как разделить код на разные самостоятельные части и подключить их
1. У меня задача стоит в том чтоб разбить код на отдельные куски и подключить с помощью файла...

Модульная программа!
Ребят. Очень срочная ситуация...не к кому обратиться кроме вас.... Дело вот в чем. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.