|
|
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Вот у меня есть Delphi-проект, хочу правильно его разделить на модули, чтоб в будущем избежать “лапшу” из кода. Т.е. должны быть какие-то принципы? Например, пишу новую функцию и новый класс, это надо в общую кучу или в отдельный модуль? Уважаемые Delphi гуру, поделитесь своим богатым опытом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 17:34 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Надо разделять код по функциональному смыслу. Когда они совершенно A - B < 0 то разделять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 17:40 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Artem.1st, Основам программирования ООП Вас навряд ли учить будут. Я бы посоветовал детально изучить следующие вопросы: http://www.maksakov-sa.ru/TehProgram/ObOrientProgr/PrincipOOP/index.html http://www.codenet.ru/progr/cpp/ipn.php Ну, а потом: на сколько мозгов хватит... (тех, что в черепной коробке ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 17:42 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Artem.1stDelphi гуру, поделитесь своим богатым опытом. Можно я поделюсь богатым Java-опытом. В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле). Что мешает в Delphi так делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 17:58 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
GerasimenkoОсновам программирования ООП Вас навряд ли учить будут. ... http://www.maksakov-sa.ru/TehProgram/ObOrientProgr/PrincipOOP/index.html http://www.codenet.ru/progr/cpp/ipn.php ... и даны две ссылки где именно "Основы ООП" Сочувствую Автора топика, ведь он спрашивал про delphi-модули, а не про ООП. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 18:05 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Artem.1stхочу правильно его разделить на модули, чтоб в будущем избежать “лапшу” из кода. Хорошая тема. Попробую немного подсказать. Delphi-модуль управляет видимостью программных сущностей(идентификаторов). Т.е. вынося класс в отдельный модуль мы ограничиваем его видимость. Как класс инкапсулирует поля и методы, так и Delphi-модуль инкапсулирует свое содержимое. А какие "принципы" это надо вникать, уверен, тема уже обсуждалась... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 18:18 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
High.ProgramerArtem.1stDelphi гуру, поделитесь своим богатым опытом. Можно я поделюсь богатым Java-опытом. В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле). Что мешает в Delphi так делать? Мешает то, что это ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 18:46 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Василий 2ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда. Вот, выявили наглядное различие между Java и Delphi: - Java работает с классами - Delphi работает с файлами на диске(называются модули) Похоже, что автор этого топика(delphi-программист) наткнулся на проблему, как правильно разделять функционал delphi-программы на модули(т.е. на файлы). А в Java такой проблемы нет, т.к. java-программа делится на классы. С классами все понятно из ООП , а вот что делать с delphi-файлами(которые называются модулями) ... Интересно, хоть кто-нибудь сможет дать адекватный ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 19:20 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Василий 2High.Programerпропущено...Можно я поделюсь богатым Java-опытом. В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле). Что мешает в Delphi так делать?Мешает то, что это ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда. Смысл в разделении классов на файлы в жабе может и есть. Просто там сажают по одному жабисту на каждый класс и всё получается написать быстро и весело. :-) Для Delphi это не так актуально потому, что на третьем классе дельфисты (или бюджет) заканчиваются. Поэтому и на файлах можно тоже сэкономить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 19:29 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Василий 2High.Programerпропущено... Можно я поделюсь богатым Java-опытом. В Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле). Что мешает в Delphi так делать? Мешает то, что это ересь неудобная. Тысячи модулей, по которым прыгаешь туда-сюда. Мешает то, что в дельфи такое просто невозможно. Два класса, разнесенных по разным модулям и ссылающиеся один на другой в интерфейсной секции, вызывают бунт компилятора ("циклические ссылки"). Например, класс-контейнер и класс-элемент контейнера. Поэтому обычно приходится все сваливать в одно файло (в рамках модуля ограничения видимости ООП не действуют). Или в качестве типа в интерфейсной части использовать безтиповой указатель или общий предок (TObject хоть), а в реализации ручками приводить к нужному типу. Особенность такая. Зато в дельфи можно быстро накидать батонов и гридов, а в яве - небыстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 19:43 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Если у вас монолит, то: Сначала разбиваете на слои. Например: слой отображения, слой домена, слой хранения. Затем каждый слой делится на подслои: слой отображения делится на view и presenter. Слой домена содержит бизнес-объекты и бизнес-логику. Слой храгения отвечает за то где будут данные: бд, файлы, кеш, сервисы. Ну и затем уже внутри подслоев разбиваете по модулям. Если на проекте будет 5+ разработчиков и измений будет много, то потом проще сопровождать и расширять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 19:47 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
X-Citeразбиваете на слои... отображения, домена, хранения. Затем на подслои... Выглядит весьма логично, большое спасибо за идею. Я поищу информацию в этом нарпавлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 22:04 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Чем меньше в программе модулей - тем сильнее и быстрее разростаются те, что есть. И тем сложнее их потом разделить. Не надо бояться разделять модули. Их потом легче будет использовать отдельно. Хотябы потому, что меньше текста. До абсурда доводить тоже не стоит, конечно - не надо на каждый класс отдельный модуль. Но если функционал каких-то объектов реально различается в любом смысле (имеет какую-либо независимость) - хорошо, если он разделен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 22:09 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 22:18 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
И вдогонку если у вас Enterprise решения с неограниченными(почти) ресурсами https://blog.cleancoder.com/uncle-bob/2014/10/01/CleanMicroserviceArchitecture.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 22:20 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
X-Cite , Именно эту информацию я ищу. Спасибо за ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 22:37 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Что в java, что в delphi это namespace ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2019, 23:14 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
High.Programer, авторМожно я поделюсь богатым Java-опытом. В Java есть четкое правило: Каждый класс описывается в отдельном модуле(файле). Что мешает в Delphi так делать? У нас одна либа переписана с примерно двух тысяч файлов на плюсах, где вот как раз так - каждый класс отдельно на примерно 5 файлов. В плюсах я на примерно тридцатом открытом файле в цепочке запутался окончательно. К счастью, в Delphi такого идиотства нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 00:52 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Artem.1stВот у меня есть Delphi-проект, хочу правильно его разделить на модули С первого раза это не получится. Как и всему прочему, это надо учиться. Сразу нормально отнесись к тому, что будешь натыкаться на недостатки ранее принятых решений, переделывать и улучшать. Artem.1stТ.е. должны быть какие-то принципы? Общий принцип - учёт связей. Каждое место, где одна функция вызывает другую, где один класс так или иначе ссылается на другой - это связь. Так вот, наиболее общий принцип в том, что сильно связанные вещи должны лежать вместе, а слабо связанные - отдельно. Если визуализировать составляющие программы и их связи в виде графа, то один модуль должен накрывать "плотный клубок", кластер из связанных друг с другом составляющих, относительно слабо привязанных к остальной программе. High.ProgramerВ Java есть четкое правило: Каждый класс описывается в отдельном модуле (файле). Во-первых, это неправда. High.ProgramerЧто мешает в Delphi так делать? Головной мозг, присутствующий в черепной коробке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 01:05 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
makhaonя на примерно тридцатом открытом файле в цепочке запутался окончательно. Т.е. вы работаете с 30 окрытыми файлами? Мне так жаль, что спешу подсказать: Из этих 30 файлов целых 27 вы открыли напрасно, закройте лишние! Архитектура программы должна иметь иерархический вид. Для конретной задачи достаточно пройтись по узлам нужной ветки, а не открывать все дерево. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 07:45 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
High.Programermakhaonя на примерно тридцатом открытом файле в цепочке запутался окончательно. Т.е. вы работаете с 30 окрытыми файлами? Мне так жаль, что спешу подсказать: Из этих 30 файлов целых 27 вы открыли напрасно, закройте лишние! Архитектура программы должна иметь иерархический вид. Для конретной задачи достаточно пройтись по узлам нужной ветки, а не открывать все дерево.Ммм, очередной "гуру" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 09:02 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
asutp2, угу. очередной гуру по ходу либа - сторонняя. написана она вполне себе слоями. колл-стэк вызова разбросан по 30-ти файлам, и концов там найти было почти невозможно. спасибо, кушайте свои идеи (один класс - один файл) сами, смотрите не подавитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 09:21 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
softwarerОбщий принцип - учёт связей. Каждое место, где одна функция вызывает другую, где один класс так или иначе ссылается на другой - это связь. Так вот, наиболее общий принцип в том, что сильно связанные вещи должны лежать вместе, а слабо связанные - отдельно. Если визуализировать составляющие программы и их связи в виде графа, то один модуль должен накрывать "плотный клубок", кластер из связанных друг с другом составляющих, относительно слабо привязанных к остальной программе. "Учёт связей" - похоже, это ценная информация сильно облегчит построение архитектуры программы. Я могу лишь примерно "подозревать" о методиках и принципах, а Вы раскладываете по полочкам. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 09:26 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
Artem.1st, X-Cite вот всё хорошо расписал. добавлю, что чем меньше между слоями связей, тем лучше. связи должны быть оправданы и продуманы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 09:29 |
|
||
|
В каких случаях надо выносить функционал в отдельный модуль?
|
|||
|---|---|---|---|
|
#18+
На самом деле это процесс живой, итеративный. С ростом кода выделяются логические блоки и почкуются модули. Грубо говоря, поначалу есть пара утилиток в модуле главной формы. Потом их становится пять, и они просятся в отдельный модуль. Потом их уже двадцать, часть отвечает за файлы, часть - за БД, и вот у нас уже два модуля утилит. И т.п. А мельчение я невзлюбил еще с тех пор, когда в универе изучали Паскаль и Си параллельно, и на Сях для простейшего printf надо было подключать ДВА инклюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2019, 10:31 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=77&tid=2039629]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
316ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 652ms |

| 0 / 0 |
