|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Есть такой вопрос, всплывает время от времени, когда я пытаюсь программировать что-то дома "для души". Вот, допустим, есть паттерны проектирования (у кого само выражение "паттерны проектирования" вызывает рвотный рефлекс - извините, ничем не могу помочь). Исторически, как я понимаю, они появились так. Какие-то чуваки писали-писали софт, заметили, что часто возникают похожие проблемы, придумали для некоторых типовых проблем типовые подходы к решению, назвали их "шаблоны", написали книгу. ОК. Идем дальше. Допустим, я прочитал 100500 пару книг про паттерны, рефакторинг и всё что-то понял. Теперь надо применять это в реальном проекте. Я начинаю писать десктопное приложение. Ну, например, я хочу написать свой Excel, потому что ни микрософтовский, ни опеноффис меня не устраивает. Там, конечно, пользователь будет вводить какие-то данные и как-то их обрабатывать, а я должен показывать все это на экране. Ну конечно же, мне пригодится паттерн MVC (какой-нибудь один из семейства). Типичный пример использования паттерна в учебных материалах: какое-нибудь окно, переменная (или иногда простенький объект) с данными. ОК. Теперь мой "эксель". Там куча данных. В простенький объект не впихнешь. Сами пользовательские данные - многоуровневые: один документ содержит несколько листов, каждый лист - много ячеек и иногда других объектов, каждая ячейка имеет данные, форматирование и т. д., а еще есть настройки самого приложения... У каждого куска данных есть какие-то дополнительные окна для редактирования данных, плюс одно большое (основное) окно приложения. Иииии? Две самые простые мысли, которые приходят в голову. 1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view. 2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных. Но ведь 2021-й год на дворе, наверняка про это уже кто-нибудь что-нибудь написал? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 12:25 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Начало: "Есть у меня простенькая задачка ..." Середина: "... которая нифига не простенькая ..." Финал: "Ну почему, в третьем тысячелетии, ещё никто не создал для меня нечто готовое, что можно покрыть лаком, а потом повесить свой шильдик?!". P.S. "У верблюда два горба потому, что жизнь - борьба". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 12:45 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Финал: "Ну почему, в третьем тысячелетии, ещё никто не создал для меня нечто готовое, что можно покрыть лаком, а потом повесить свой шильдик?!". Не, если ничего на эту тему нет, это тоже в своем роде хорошо. Я тогда годик покодю дома по вечерам, запилю цикл статьей на Хабре (господи, прости), и буду всем говорить, что я самый умный. А опровергнуть будет нечем. P. S. Я тут вспомнил. Когда-то давно натыкался на похожую статью. Вот: http://rsdn.org/article/patterns/patterns.xml Дата публикации - 09.04.2003. Сейчас, правда, мне решение из этой статьи не кажется удачным. Вот примерно такого рода статьи/книги я и ищу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 13:29 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
C Excel совершенно неудачный пример. До 2007 года там бинарный формат (можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)... А потом XML, требующий тоже нехилого парсинга. И опять бинарные куски... Всё это представить в виде древовидной стрктуры весьма сложно - там не дерево и даже не чаща - там сплошные джунгли... И никакие "паттерны" не помогут продираться сквозь них. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 14:03 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Ну, например, я хочу написать свой Excel, потому что ни микрософтовский, ни опеноффис меня не устраивает. Там, конечно, пользователь будет вводить какие-то данные и как-то их обрабатывать, а я должен показывать все это на экране. Ну конечно же, мне пригодится паттерн MVC Вот с этого момента - не согласен. Чтобы шаблон был применим к приложению надо наверное чтобы сама решаемая задача по ролям объектов и по структурам данных и по юз-кейсу была бы подходящая под данных шаблон. Про многоуровенвое дерево "троек" - непонятно. Откуда там их так много? Что является "моделью" для каждой тройки? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 14:18 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
mayton Про многоуровенвое дерево "троек" - непонятно. Откуда там их так много? Что является "моделью" для каждой тройки? 1. Настройки форматирования ячеек 2. Настройки печати листа 3. Свойства графиков 4. Сами данные в ячейках И так далее, продолжать можно долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 14:54 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
С окнами настроек - это перебор IMHO. MVC полезен когда у тебя данные (модель) единовременно презентуются на экране в разных видах. Например столбец цифр. И рядом - поясняющая инфографика по этим цифрам. А настройки это что? Открыл окошко. Чего-то покорректировал и закрыл. Какая там MVC? Там даже идентифицировать виды отдельно нельзя. Вобщем... не стоит усложнять на пустом месте. Excel образца 1.0 был написан без этого шаблона. И возможно даже не на С++ а на чистых сях. Вобщем имеет смысл начать писать что-то простое. И уж когда точно-точно не хватит возможностей (ну просто жить нельзя без MVC) - тогда уже и заходить сюда в скруль. И тогда уж ты будешь бить нас всех по лицу аргументами в пользу MVC... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 15:04 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Теперь мой "эксель". Там куча данных. В простенький объект не впихнешь. Поэтому первый (и самый сложный) паттерн, требующий освоения это KISS. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 15:19 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич 4. Сами данные в ячейках Тут надо подумать. Сами ячейки - это основное "мясо" которое потребляет ресурсы памяти. И создавать для них ничего не надо. По сути они (ячейки) должны быть частью глобальной модели (документ Excel) и должны лежать компактненько. В сериализованной форме. И лишь в момент редактирования ячейки (или группы ячеек) можно будет создать какие-то графические элементы и контроллеры для удобства редактирования. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 15:23 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
mayton Excel образца 1.0 был написан без этого шаблона. И возможно даже не на С++ а на чистых сях. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 15:55 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 18:03 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
>Никанор Кузьмич, сегодня, 12:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1338971&msg=22374952][22374940] >Есть такой вопрос... <Как вариант, посмотри здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 20:16 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
ShSerge Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого. Интересная конечно мысль. Насчет во всем разобраться. Вот исходники OpenOffice https://github.com/apache/openoffice Сколько времени нам с вами нужно чтобы разобраться есть ли там шаблоны вообще или нет? Используется ли MVC/MVP? Это кстати синьорный вопрос, я считаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 20:24 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, первая версия: Multiplan (1982) UCSD Pascal ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 10:15 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Lotus-123 (1983) предположительно на сях с асмом. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 11:37 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор КузьмичЯ только не помню, где эта статья и по каким ключевым словам я ее нагуглил. Даже такого будет достаточно, это уже лучше, чем ничего.Наверное разработка фреймворк[ов], посмотри Eclipse, там дядька из go-4 в техническом руководстве был изначально. Еще системы на Swing-e, там должно быть описание: JetBarain, Oracle - исходники видел. Никанор Кузьмич1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view. 2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.Тут чем недоволен ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 11:52 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Но ведь 2021-й год на дворе, наверняка про это уже кто-нибудь что-нибудь написал? Года с 97-го этот компонент появился в поставке на вкладке ActiveX. Шутка, конечно, но надо либо кататься, либо возить. Либо своё писать, либо готовое использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 13:11 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
d7i C Excel совершенно неудачный пример. До 2007 года там бинарный формат (можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)... Чушь. В Excel используется OleStorage . Структурированное хранилище с точки зрения программиста выглядит как отдельный диск с папками и файлами, но находится в все это в отдельном файле. Пользоваться очень удобно, не сложнее чем обычной файловой системой. Для сохранения сложных иерархических данных в виде дерева ничего лучшего чем OleStorage не придумали в Windows. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 14:45 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
mayton Lotus-123 (1983) предположительно на сях с асмом. Спроси у Нуралиева. Он ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:44 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
mayton Lotus-123 (1983) предположительно на сях с асмом. Спроси у Нуралиева. Он же 123 стырил и обозвал 1С. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:45 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Наверное он стырил идею. Вряд-ли он мог просто распространять долгие годы IBM-овский продукт и хорошо себя чувтвовать при этом. Вот тут бинари http://old-dos.ru/files/file_1499.html Есть кто-то в топике спец по реверсу? Не разобрать а хотя-бы посмотреть на чем написано. Обычно ЯВУ оставляют какие-то свои сигнатуры или магические числа. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:51 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, Обычный ексцел - это одна Вселенная В параллельной Вселенной создаем ексцель-двойник на базе системы InterSystems Cache/Iris. Они тесно связаны по интернету (интранету) и работают согласованно. Но второй гораздо мощнее, быстрее, деревья сколь угодно многомерные, обьемы данных неограниченные. Отображается он клиентам и управляется через первый ексцель. Естественно, во втором и выполняется почти вся работа. Такой "квантовый комп" на порядки усиливает обычный ексцел и придает ему неожиданные возможности. Есть там и обьекты со свойствами и прочие удобства. Можем скинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:56 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
mayton, Раньше 1С так и продавалась. Типа 1С Лотус 123. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:56 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
ShSerge mayton, Раньше 1С так и продавалась. Типа 1С Лотус 123. Хм... не знал этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:01 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
d7i C Excel совершенно неудачный пример. mayton MVC полезен когда у тебя данные (модель) единовременно презентуются на экране в разных видах. mayton А настройки это что? Открыл окошко. Чего-то покорректировал и закрыл. Какая там MVC? Там даже идентифицировать виды отдельно нельзя. Вобщем... не стоит усложнять на пустом месте. Dimitry Sibiryakov Поэтому первый (и самый сложный) паттерн, требующий освоения это KISS. ShSerge Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого. ВМоисеев Как вариант, посмотри здесь . ra-001 Наверное разработка фреймворк[ов], посмотри Eclipse ra-001 Никанор Кузьмич1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view. 2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:05 |
|
|
start [/forum/topic.php?fid=16&fpage=2&tid=1339627]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 150ms |
0 / 0 |