|
|
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
Я вот тоже со скепсисом к ней отношусь, но бы хотел послушать описние вкуса устриц от тех кто их ел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 16:26 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
rgreat, Если вы разрабатываете приложение командой Если у вас применяется многослойная архитектура приложения, например по аналогии с CleanArchitecture Если вы покрываете все модульными тестами То применение IoC позволит вам более гибче реагировать на изменения в проекте, а также поддерживать модульные тесты... К примеру в asp .net core идет из коробки собственная реализация IoC и реализовывать все заложенные абстракции можно только через него, что очень удобно... Описал в одном месте все зависимости, а в классах пишешь только то, что эти классы должны делать согласно принципам SOLID... Весь код модульный и легко изучаемый... Каждый новый миньон на проекте не будет погружаться в тонны лапши, а изучив архитектуру приложения, поймет, что если надо реализовать такую абстракцию, то делаем так.. Если надо другую абстракцию, то делаем так... Самая большая проблема в том, что Delphi - это RAD... Но какой-то кустарный и мягко говоря не расширяемый... Поэтому применение современных мировых практик очень плохо накладываются на него.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 18:23 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite реализация IoC <..> согласно принципам SOLID <..> если надо реализовать такую абстракцию, то делаем так.. Если надо другую абстракцию, то делаем так... А можно по простому, для тех кто в танке? Простейший пример кода бы объяснил больше чем страницы абстрактной теории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 18:36 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
rgreat Простейший пример кода бы объяснил больше чем страницы абстрактной теории. Процедурные типы и классовые ссылки. Фсё. Это тебе сразу и инъекции зависимостей и инверсия управления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 18:45 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
В общем опять мне "в гугль" послали. :) Я конечно все понимаю, но когда "простейший" пример - это проект из десятка файлов - то: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 19:06 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
Этот фреймворк не предназначен для простейших приложений... Вы для приложения сначала проектируете архитектуру, выделяете все абстракции, взаимосвязи между ними.. Затем в одном месте по сути описываете реализации абстракций - профит... Каждый класс - имеет одну и только одну причину для изменений Тестировать такие классы одно удовольствие.. Изменение внутренней реализации таких классов не сломает другие, и не сломает другую логику... Этот фреймворк позволяет автоматически резолвить (в конструктор, поле, метод) зависимости классов (абстракций) из заранее зарегистрированных реализаций. Для юниттестов удобно делать моки классов по работе с бд, сервисами и прочими зависимостями, которые будут эмулировать работу, Тем самым не нужно для тестирования бизнес-логики разворачивать инфраструктуру... и т.д. Вообщем для тех кто пишет ПО кидая на форму компоненты и прямо там же код логики - это не подойдет... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 19:35 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite Этот фреймворк не предназначен для простейших приложений... Вы для приложения сначала проектируете архитектуру, выделяете все абстракции, взаимосвязи между ними.. Затем в одном месте по сути описываете реализации абстракций - профит... Каждый класс - имеет одну и только одну причину для изменений Тестировать такие классы одно удовольствие.. Изменение внутренней реализации таких классов не сломает другие, и не сломает другую логику... Этот фреймворк позволяет автоматически резолвить (в конструктор, поле, метод) зависимости классов (абстракций) из заранее зарегистрированных реализаций. Для юниттестов удобно делать моки классов по работе с бд, сервисами и прочими зависимостями, которые будут эмулировать работу, Тем самым не нужно для тестирования бизнес-логики разворачивать инфраструктуру... и т.д. Вообщем для тех кто пишет ПО кидая на форму компоненты и прямо там же код логики - это не подойдет... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. Попробуйте Swap(A, B); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 19:39 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
rgreat, Вот пример оттуда в одном файле, если сложно воспринимать))) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 19:44 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite, но если что случись, ты утонешь в отладке всего того гумна, которое так написано X-CiteКаждый класс - имеет одну и только одну причину для измененийна собственном опыте могу сказать, что это очень сомнительное удовольствие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 20:22 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey kealon(Ruslan) Вот потому от этого и надо избавляться, и тем более этого не долно быть в библиотеках. Чего-чего? Можно тезисно, по пунктам? даже в гугл посылать как-то странно простой пример: есть ленивая функция создания объекта, соответственно в финализации подчищается инстант этого объекта если так намудрить с подключениями, то есть очень большой шанс, что функция сработает после финализации. Особенно это актуально когда через проект проходит толпа народа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 20:36 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Я таки хочу это увидеть, и понять, наконец, о чём идёт речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 21:00 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
rgreat А можно по простому, для тех кто в танке? Простейший пример кода бы объяснил больше чем страницы абстрактной теории. DMVCFramework пытается следовать всем этим современным практикам. Причём без фанатизма, что главное. Исходники открыты. Но да, читать придётся много. Но ты ж, думаю, и VCL когда-то по исходникам понимал (надеюсь), а не по обработчикам событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 21:50 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) простой пример: есть ленивая функция создания объекта, соответственно в финализации подчищается инстант этого объекта если так намудрить с подключениями, то есть очень большой шанс, что функция сработает после финализации. Я правильно понял, есть инициализатор чего-то, который может вызываться после отработки секции finalization?!? Да тут вообще ничего не поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 21:53 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
Сергей Фролов, Речь, предполагаю, о циклических ссылках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2020, 22:10 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite rgreat, Вот пример оттуда в одном файле, если сложно воспринимать))) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. Зачем нужен GlobalContainer? Чем это лучше обычного TInterfacedObject? В чем преимущество такого подхода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 00:04 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Сергей Фролов, Речь, предполагаю, о циклических ссылках. я вроде русским языком как для особо одарённых написал авторuses блоков в implements нет? сама библиотека так же раскоряжена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 00:05 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
rgreat А зачем такая простая задача решается так сложно? Чем это лучше обычного TInterfacedObject? В чем преимущество такого подхода? но в кулуарах они же говорят, что можно срубить с заказчика бабла за резгребание того, что получается таким методом :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 00:10 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
rgreat А зачем такая простая задача решается так сложно? Зачем нужен GlobalContainer? Чем это лучше обычного TInterfacedObject? В чем преимущество такого подхода? https://ru.wikipedia.org/wiki/Инверсия_управления https://ru.wikipedia.org/wiki/Внедрение_зависимости Если вы не понимаете что это и зачем это, значит вам оно не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 00:16 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite, Т.е. примеров пользы не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 00:21 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) а о чём же ещё? я вроде русским языком как для особо одарённых написал Возможно, я недостаточно одарён, но я понял это как подключение модулей в части реализации, что есть обычная практика. На цикличность тут даже намёка нет. Хотя, возможно, цикличность ты обозначил раскоряженностью. Штош. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 00:28 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite https://ru.wikipedia.org/wiki/Инверсия_управления https://ru.wikipedia.org/wiki/Внедрение_зависимости Если вы не понимаете что это и зачем это, значит вам оно не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 03:30 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
X-Cite Если вы не понимаете что это и зачем это, значит вам оно не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 04:18 |
|
||
|
Spring4D
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey kealon(Ruslan) а о чём же ещё? я вроде русским языком как для особо одарённых написал Возможно, я недостаточно одарён, но я понял это как подключение модулей в части реализации, что есть обычная практика. На цикличность тут даже намёка нет. Хотя, возможно, цикличность ты обозначил раскоряженностью. Штош. от себя ИМХО добавлю, что регистрация классов, тоже к этому относится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2020, 08:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39947808&tid=2037744]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 198ms |
| total: | 384ms |

| 0 / 0 |
