powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / В каких случаях надо выносить функционал в отдельный модуль?
25 сообщений из 28, страница 1 из 2
В каких случаях надо выносить функционал в отдельный модуль?
    #39794738
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у меня есть Delphi-проект, хочу правильно его разделить на модули, чтоб в будущем избежать “лапшу” из кода.
Т.е. должны быть какие-то принципы?
Например, пишу новую функцию и новый класс, это надо в общую кучу или в отдельный модуль?

Уважаемые Delphi гуру, поделитесь своим богатым опытом.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794743
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо разделять код по функциональному смыслу. Когда они совершенно A - B < 0 то разделять.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794746
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1st,

Основам программирования ООП Вас навряд ли учить будут.
Я бы посоветовал детально изучить следующие вопросы:
http://www.maksakov-sa.ru/TehProgram/ObOrientProgr/PrincipOOP/index.html
http://www.codenet.ru/progr/cpp/ipn.php
Ну, а потом: на сколько мозгов хватит... (тех, что в черепной коробке )
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794754
High.Programer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Artem.1stDelphi гуру, поделитесь своим богатым опытом.
Можно я поделюсь богатым Java-опытом.
В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле).
Что мешает в Delphi так делать?
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794756
High.Programer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GerasimenkoОсновам программирования ООП Вас навряд ли учить будут.
...
http://www.maksakov-sa.ru/TehProgram/ObOrientProgr/PrincipOOP/index.html
http://www.codenet.ru/progr/cpp/ipn.php

... и даны две ссылки где именно "Основы ООП"
Сочувствую Автора топика, ведь он спрашивал про delphi-модули, а не про ООП.
)
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794765
Maxim.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Artem.1stхочу правильно его разделить на модули, чтоб в будущем избежать “лапшу” из кода.
Хорошая тема.
Попробую немного подсказать. Delphi-модуль управляет видимостью программных сущностей(идентификаторов). Т.е. вынося класс в отдельный модуль мы ограничиваем его видимость. Как класс инкапсулирует поля и методы, так и Delphi-модуль инкапсулирует свое содержимое.
А какие "принципы" это надо вникать, уверен, тема уже обсуждалась...
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794781
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
High.ProgramerArtem.1stDelphi гуру, поделитесь своим богатым опытом.
Можно я поделюсь богатым Java-опытом.
В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле).
Что мешает в Delphi так делать?
Мешает то, что это ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794803
High.Programer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий 2ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда.
Вот, выявили наглядное различие между Java и Delphi:
- Java работает с классами
- Delphi работает с файлами на диске(называются модули)

Похоже, что автор этого топика(delphi-программист) наткнулся на проблему, как правильно разделять функционал delphi-программы на модули(т.е. на файлы). А в Java такой проблемы нет, т.к. java-программа делится на классы. С классами все понятно из ООП , а вот что делать с delphi-файлами(которые называются модулями) ... Интересно, хоть кто-нибудь сможет дать адекватный ответ.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794811
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2High.Programerпропущено...Можно я поделюсь богатым Java-опытом.
В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле).
Что мешает в Delphi так делать?Мешает то, что это ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда.
Смысл в разделении классов на файлы в жабе может и есть. Просто там сажают по одному жабисту на каждый класс и всё получается написать быстро и весело. :-)
Для Delphi это не так актуально потому, что на третьем классе дельфисты (или бюджет) заканчиваются. Поэтому и на файлах можно тоже сэкономить.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794817
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2High.Programerпропущено...

Можно я поделюсь богатым Java-опытом.
В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле).
Что мешает в Delphi так делать?
Мешает то, что это ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда.
Мешает то, что в дельфи такое просто невозможно. Два класса, разнесенных по разным модулям и ссылающиеся один на другой в интерфейсной секции, вызывают бунт компилятора ("циклические ссылки"). Например, класс-контейнер и класс-элемент контейнера.
Поэтому обычно приходится все сваливать в одно файло (в рамках модуля ограничения видимости ООП не действуют). Или в качестве типа в интерфейсной части использовать безтиповой указатель или общий предок (TObject хоть), а в реализации ручками приводить к нужному типу.
Особенность такая.
Зато в дельфи можно быстро накидать батонов и гридов, а в яве - небыстро.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794820
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас монолит, то: Сначала разбиваете на слои. Например: слой отображения, слой домена, слой хранения.
Затем каждый слой делится на подслои: слой отображения делится на view и presenter. Слой домена содержит бизнес-объекты и бизнес-логику. Слой храгения отвечает за то где будут данные: бд, файлы, кеш, сервисы.
Ну и затем уже внутри подслоев разбиваете по модулям.
Если на проекте будет 5+ разработчиков и измений будет много, то потом проще сопровождать и расширять.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794858
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeразбиваете на слои... отображения, домена, хранения. Затем на подслои...
Выглядит весьма логично, большое спасибо за идею.
Я поищу информацию в этом нарпавлении.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794861
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем меньше в программе модулей - тем сильнее и быстрее разростаются те, что есть. И тем сложнее их потом разделить.
Не надо бояться разделять модули. Их потом легче будет использовать отдельно. Хотябы потому, что меньше текста.
До абсурда доводить тоже не стоит, конечно - не надо на каждый класс отдельный модуль.
Но если функционал каких-то объектов реально различается в любом смысле (имеет какую-либо независимость) - хорошо, если он разделен.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794868
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1st,

https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
Есть довольно неплохая статья https://habr.com/ru/company/mobileup/blog/335382/

Ну и вообще у Фаулера можно много чего почитать и поучиться
https://martinfowler.com/tags/application architecture.html
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794869
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вдогонку если у вас Enterprise решения с неограниченными(почти) ресурсами
https://blog.cleancoder.com/uncle-bob/2014/10/01/CleanMicroserviceArchitecture.html
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794878
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite ,
Именно эту информацию я ищу.
Спасибо за ссылки.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794887
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что в java, что в delphi это namespace
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794899
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
High.Programer,

авторМожно я поделюсь богатым Java-опытом.
В Java есть четкое правило: Каждый класс описывается в отдельном модуле(файле).
Что мешает в Delphi так делать?

У нас одна либа переписана с примерно двух тысяч файлов на плюсах, где вот как раз так - каждый класс отдельно на примерно 5 файлов.
В плюсах я на примерно тридцатом открытом файле в цепочке запутался окончательно. К счастью, в Delphi такого идиотства нет.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794900
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1stВот у меня есть Delphi-проект, хочу правильно его разделить на модули
С первого раза это не получится. Как и всему прочему, это надо учиться. Сразу нормально отнесись к тому, что будешь натыкаться на недостатки ранее принятых решений, переделывать и улучшать.

Artem.1stТ.е. должны быть какие-то принципы?
Общий принцип - учёт связей. Каждое место, где одна функция вызывает другую, где один класс так или иначе ссылается на другой - это связь. Так вот, наиболее общий принцип в том, что сильно связанные вещи должны лежать вместе, а слабо связанные - отдельно. Если визуализировать составляющие программы и их связи в виде графа, то один модуль должен накрывать "плотный клубок", кластер из связанных друг с другом составляющих, относительно слабо привязанных к остальной программе.

High.ProgramerВ Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле).
Во-первых, это неправда.

High.ProgramerЧто мешает в Delphi так делать?
Головной мозг, присутствующий в черепной коробке.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794920
High.Programer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaonя на примерно тридцатом открытом файле в цепочке запутался окончательно.
Т.е. вы работаете с 30 окрытыми файлами?
Мне так жаль, что спешу подсказать: Из этих 30 файлов целых 27 вы открыли напрасно, закройте лишние!
Архитектура программы должна иметь иерархический вид. Для конретной задачи достаточно пройтись по узлам нужной ветки, а не открывать все дерево.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794945
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
High.Programermakhaonя на примерно тридцатом открытом файле в цепочке запутался окончательно.
Т.е. вы работаете с 30 окрытыми файлами?
Мне так жаль, что спешу подсказать: Из этих 30 файлов целых 27 вы открыли напрасно, закройте лишние!
Архитектура программы должна иметь иерархический вид. Для конретной задачи достаточно пройтись по узлам нужной ветки, а не открывать все дерево.Ммм, очередной "гуру" :-)
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794954
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

угу. очередной гуру по ходу либа - сторонняя. написана она вполне себе слоями. колл-стэк вызова разбросан по 30-ти файлам, и концов там найти было почти невозможно. спасибо, кушайте свои идеи (один класс - один файл) сами, смотрите не подавитесь.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794959
Artem.1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОбщий принцип - учёт связей. Каждое место, где одна функция вызывает другую, где один класс так или иначе ссылается на другой - это связь. Так вот, наиболее общий принцип в том, что сильно связанные вещи должны лежать вместе, а слабо связанные - отдельно. Если визуализировать составляющие программы и их связи в виде графа, то один модуль должен накрывать "плотный клубок", кластер из связанных друг с другом составляющих, относительно слабо привязанных к остальной программе.
"Учёт связей" - похоже, это ценная информация сильно облегчит построение архитектуры программы. Я могу лишь примерно "подозревать" о методиках и принципах, а Вы раскладываете по полочкам.
Спасибо.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39794961
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Artem.1st,

X-Cite вот всё хорошо расписал. добавлю, что чем меньше между слоями связей, тем лучше. связи должны быть оправданы и продуманы.
...
Рейтинг: 0 / 0
В каких случаях надо выносить функционал в отдельный модуль?
    #39795001
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле это процесс живой, итеративный. С ростом кода выделяются логические блоки и почкуются модули. Грубо говоря, поначалу есть пара утилиток в модуле главной формы. Потом их становится пять, и они просятся в отдельный модуль. Потом их уже двадцать, часть отвечает за файлы, часть - за БД, и вот у нас уже два модуля утилит. И т.п.
А мельчение я невзлюбил еще с тех пор, когда в универе изучали Паскаль и Си параллельно, и на Сях для простейшего printf надо было подключать ДВА инклюда
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / В каких случаях надо выносить функционал в отдельный модуль?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]