К вопросу о модульности

Статус
В этой теме нельзя размещать новые ответы.

Donald

Новичок
К вопросу о модульности

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

Попробую на пальцах привести пример.
Имеем некую структуру, необходимо произвести стандартные операции над узлом этой структуры.
Что лучше:
1. Звести файл node_utils.inc, в котором будут описаны функции для стандартных операций show_nodes, add_node, update_node и файл node.phtml, который будет работать с узлами и генерить все необходимые html-ки для показа, удаления и изменения узлов. (2 файла)
2. Оставить такой же node_utils.inc, но при работе использовать по своему phtml-файлу на каждую генерированную html-ку, т.е. появится show_nodes.phtml, add_node.phtml и update_node.phtml (4 файла)
3. Разбть еще и и файл с функциями на соответствующие по функциональности show_nodes.inc, add_node.inc, update_node.inc и вызывать соответствующие иклюдники в соответствующих show_nodes.phtml, add_node.phtml и update_node.phtml (6 файлов)

Вообще как принято при программировании именно на PHP? Я лично у всех вариантов вижу как и преимущества, так и недостатки.
 

csa

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

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

confguru

ExAdmin
Команда форума
Re: К вопросу о модульности

class node
===============
node->show_nodes(params[])
node->add_node(params[])
node->update_node(params[])
noder->delete_node(node_id)
===============
1 файл :)
 

Donald

Новичок
Re: Re: К вопросу о модульности

Автор оригинала: admin
class node
===============
node->show_nodes(params[])
node->add_node(params[])
node->update_node(params[])
noder->delete_node(node_id)
===============
1 файл :)
Ну это и будет файл node_utils.inc, а отображение тоже туда же пихать? Тогда звиняйте, а где же модульность? Ошибемся где-нибудь, увидим сообщение об ошибке в строке 3546 в файле node_utils.inc и вперед искать что там, да как там все устроено в этом файле все предыдущие 3545 строк.
 

csa

Guest
Re: Re: Re: К вопросу о модульности

Автор оригинала: Donald
Ну это и будет файл node_utils.inc, а отображение тоже туда же пихать? Тогда звиняйте, а где же модульность? Ошибемся где-нибудь, увидим сообщение об ошибке в строке 3546 в файле node_utils.inc и вперед искать что там, да как там все устроено в этом файле все предыдущие 3545 строк.
функции для работы с чем-нибудь общим (список тот же) как раз отличный кандидат на выделение в отдельный модуль..
 

Donald

Новичок
Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: csa
функции для работы с чем-нибудь общим (список тот же) как раз отличный кандидат на выделение в отдельный модуль..
Ну это совершенно понятно. Именно так я и написал. Но вопрос стОит ли бить еще на более мелкие модули по функциональности. А с отображением как быть?
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: Donald
Ну это совершенно понятно. Именно так я и написал. Но вопрос стОит ли бить еще на более мелкие модули по функциональности. А с отображением как быть?
1. вообще-то тебе уже ответили выше
2. Выделять ф-ции (классы) в отдельные модули
3. На более мелкие бить - имхо неудобно, и времени на чтение всех инклудов будет много уходить
4. Отображение должно быть в том самом nodes.phtml
ну, конечно, еще лучше, чтобы в nodes.phtml генерился xml, и юзался вместе с nodes.xslt для отображения
 

csa

Guest
Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: AnToXa
3. На более мелкие бить - имхо неудобно, и времени на чтение всех инклудов будет много уходить
думается мне, что он хочет просто через урл указывать нужный файл для выполнени (и отображения) нужного действия.. так?
 

Donald

Новичок
Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: AnToXa
1. вообще-то тебе уже ответили выше
2. Выделять ф-ции (классы) в отдельные модули
3. На более мелкие бить - имхо неудобно, и времени на чтение всех инклудов будет много уходить
Вот о том и речь, ограничиться классом nodes или все-таки сделать 4 класса show_nodes, add_node, update_node, delete_node? Где грань между рациональными разбиением и нерационально мелким?
 

Donald

Новичок
Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: csa
функции для работы с чем-нибудь общим (список тот же) как раз отличный кандидат на выделение в отдельный модуль..
Вообще-то я так и делаю, все функции для работы с чем-то одним пихаю в отдельный модуль, а в основном файле именно свитчу по значению переменной или ключу хэша.
Но, блин, Сишники наезжают, говорят бей все не маленькие модули. Вот и хотелось бы знать, кто прав и есть ли золотая середина...
 

nail

Guest
Re: Re: Re: Re: Re: Re: Re: К вопросу о модульности

У меня все действия (Controller) раскиданы по множеству файлов *.class.php
В каждом файле - всего один класс.
Средний размер класса: 80-100 строк.

Автор оригинала: Donald
Вот о том и речь, ограничиться классом nodes или все-таки сделать 4 класса show_nodes, add_node, update_node, delete_node? Где грань между рациональными разбиением и нерационально мелким?
 

nail

Guest
И еще: если используешь ООП, то не юзай switch ... case - дурной стиль
 

Donald

Новичок
Автор оригинала: nail
И еще: если используешь ООП, то не юзай switch ... case - дурной стиль
Ну скажем так, я не совсем использую ООП просто потому, что PHP не является языком ООП :) Но иногда, конечно, проще создать свой объект и юзать его.

Я не понял, а какую альтернативу ты предполагаешь для switch ... case? if ... elseif?
 

Vladimirovich

Guest
Re: Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: Donald
Где грань между рациональными разбиением и нерационально мелким?
в голове программиста...
 

Donald

Новичок
Re: Re: Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: Vladimirovich
в голове программиста...
Голова-то у всех своя, но должны же существовать некие стандарты и правила...
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: Donald
Голова-то у всех своя, но должны же существовать некие стандарты и правила...
тебе уже 2 раза ответили.
 

Donald

Новичок
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: AnToXa
тебе уже 2 раза ответили.
Ну либо я такой тупой, что так и не нашел ЗАКОНЧЕННОГО и ОБОСНОВАННОГО ответа, либо вы, молодой человек, излишне горячи и малоопытны...
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: К вопросу о модульности

Автор оригинала: Donald
Ну либо я такой тупой, что так и не нашел ЗАКОНЧЕННОГО и ОБОСНОВАННОГО ответа
чтож. повторюсь.
1. Помещать классы в отдельные файлы. Я имею в виду ЗАКОНЧЕННЫЕ КЛАССЫ. Например: Подключение к базе данных. Запрос к базе данных. (хотя эти бы два я поместил в один файл. т.к. они сильно связаны :) ). Форма. Файл. и т.д.
Ваши show_node, add_node - это не отдельные классы. это методы одного класса.

2. Все это дело разбить по каталогам. (Пример: PEAR)

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

4. согласен с наилем. Наиль! клссная у тебя книжка! :)

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