|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#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 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич И тут мы плавно переходим к еще одним настройкам... Ну то есть я сделал какую-то фичу, под нее окно. Не заморачиваясь, накидал какого-то кода. Потом еще фичу, еще окно, еще код. Потом еще десяток. И вот, приехали, здравствуй, бабушка. Куча лапши, все вперемешку. Ровно то, что тут всем форумом ругают уже 20 лет. Тут всё очень зависит от графического API я так думаю. Эпизодически я кодил на Java/Swing и там можно было не разделять Model-View-Contr. Просто валишь в 1 объект все три сущности вместе с логикой. Главное чтоб мультипоточки не было. Swing он ... боится потоков внутри графических объектов. Вобщем если реакция от бизнес логики быстрая - то можно всё валить одним кулём. Как будто каждое окошко это актор и бизнес процедура и виджетик для отображения. Вообще .. мы живем в эпоху упрощений и переосмыслений технологий 20-го века. Мне например никогда не нравился Win32GDI. Он - очень неудобен для программирования. Хотя на экране выглядит красиво. Я до сих пор считаю Win95 окошки эталоном аккуратности и минимализма. MFC конечно сделал надстройку но сущности мира GDI (вот эти хендлы) никуда не делись и "как уши" торчат отовсюду. Пробовал ради интереса изучать Gnome/GTK. Таже фигня. В каждой функции по 100500 аргументов и половина не используется. Хотя чуть поменьше чем в Win32. На чём щяс кстати делают UI под Windows Desktop? (Кробе веб приложений конешно) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:17 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
mayton На чём щяс кстати делают UI под Windows Desktop? Лично я, если и буду что-то делать, возьму Lazarus И еще сопутствующий вопрос - кто может дать ссылку на опенсорс репозиторий какого-либо известного продукта, который можно рекомендовать как пример хорошо организованного и документированного кода? Лет 10 назад я загорелся идеей сделать что-то полезное для Lazarus, скачал исходники, ковырялся неделю, не понял там НИЧЕГО и плюнул. Каментов в коде нет, никакого описания ни в каком виде не нашел. На форуме freepascal.ru был один чувак из Красноярска, который мне обещал ответить на любые вопросы и вообще всестороннюю помощь, но я что-то посмотрел, подумал, что ему придется мне несколько дней лекции читать, прежде чем от меня хоть какой-то толк будет, и решил не мучить зря человека. И вот сейчас тоже. Решил посмотреть исходники эклипса. На их странице на гитхабе почти 500 репозиториев, какой из них IDE? И еще куча репозиториев на https://git.eclipse.org/, я пока не нашел даже где исходники лежат. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:45 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор КузьмичВ смысле - исходники Eclipse?Не, ежели нет чего-то, что может поднять сорци и хоть как то их систематизировать, то лучше не лезть.Ж-), работа не для хобби. Именно статьи про фреймворки, в eclipse система плагинов - там можно еще посмотреть,помню они(разрабы) переписывали их раза два, наверняка давали объяснения. google - в помощь ! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:08 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Не знаю ко мне вопрос или нет? ХЗ. Отвечу от себя. Ссылку на опенсорс репозиторий с правильным структурированным UI приложением дать не могу. Я - не в теме. Ибо back-end вобщем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:10 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Eolt Ну да. В спецификации формата Excel написано: авторThe Binary Interchange File Format (BIFF) is the file format Microsoft Office Excel workbooks are saved to (aka *.xls). Microsoft Excel versions 5.0 and later use compound files (explained later in this document); this is the OLE implementation of the Structured Storage Model. У меня есть модуль (с исходниками на С++) работающий напрямую с простыми Excel-файлами .xls версии 4.0 (чтение, запись, отображение, редактирование) согласно BIFF8. Там можно голову сломать в структурах (модуль писал не я). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:38 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Eolt d7i C Excel совершенно неудачный пример. До 2007 года там бинарный формат (можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)... Чушь. В Excel используется OleStorage . Структурированное хранилище с точки зрения программиста выглядит как отдельный диск с папками и файлами, но находится в все это в отдельном файле. Пользоваться очень удобно, не сложнее чем обычной файловой системой. Для сохранения сложных иерархических данных в виде дерева ничего лучшего чем OleStorage не придумали в Windows. P.S. Реализовать свой велосипед типа OleStorage - работа на день. Еще и фичи появятся, которых в виндовом нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 20:00 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
d7i Eolt Ну да. В спецификации формата Excel написано: авторThe Binary Interchange File Format (BIFF) is the file format Microsoft Office Excel workbooks are saved to (aka *.xls). Microsoft Excel versions 5.0 and later use compound files (explained later in this document); this is the OLE implementation of the Structured Storage Model. У меня есть модуль (с исходниками на С++) работающий напрямую с простыми Excel-файлами .xls версии 4.0 (чтение, запись, отображение, редактирование) согласно BIFF8. Там можно голову сломать в структурах (модуль писал не я).Я разбирал структуру xls несколько раз, для клиппера и паскаля писал сохранение. До 97-го там был один формат, с 97 по 2006(?) - другой (на компаунд файлах, это и есть OleStorage, я так понял). И тот, и тот - бинарный. 2007+ - xml в zip (хотя логическая структура та же). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 20:06 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
YuRock Я разбирал структуру xls несколько раз, для клиппера и паскаля писал сохранение. До 97-го там был один формат, с 97 по 2006(?) - другой (на компаунд файлах, это и есть OleStorage, я так понял). И тот, и тот - бинарный. 2007+ - xml в zip (хотя логическая структура та же). До 2007 года (.xls) - BIFF (там куча версий, последняя 8-я). И он совсем не простой, с наскока там не разберешься... А после (.xlsx) - XML, с ним немного проще, но тоже нюансов вагон и маленькая тележка. И не верю, что есть "товарищи с шашками наперевес", которые якобы за пару дней клепают на колене с нуля свой Excel (с блекджеком и шлюхами). Это просто нарциссизм какой-то... Чтобы не быть голословным, прикладываю картинку самописного редактора типа Excel, который умеет читать и сохранять в формате .xls (версия 4). Используется в одной системе и ныне... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 20:33 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
d7i И не верю, что есть "товарищи с шашками наперевес", которые якобы за пару дней клепают на колене с нуля свой Excel (с блекджеком и шлюхами). Но, я ж говорю, у меня большой опыт был в разборе xls-97, а логика хранения не изменилось, и это помогало. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 22:06 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Ну, например, я хочу написать свой Excel Хотите опыт человека, который действительно написал свой Excel? В своё время передо мной оказалась такая абсолютно реальная и очень актуальная задача. Причина была в следующем: была огромная структура с десятками тысяч пользователей, которые привыкли решать некую задачу приложением в Экселе. Но вот в очередной раз изменилось законодательство - и оказалось, что новых изменений Эксель просто не тянет. Принципиально. Приложение врезается в его лимиты. И большие люди по большой дружбе очень попросили моё высокое начальство помочь. Так вот, если коротко, я с этой задачей справился с блеском - говорю так, потому что на той платформе не только сделали и внедрили тот проект, но в результате ещё как минимум один новый проект тому же заказчику сделали на той же основе. А теперь, собственно, про опыт. Очевидно, что шаблон MVC просто создан для этого дела. И на опыте того проекта я убедился, что те, кто про него пишет - [ладно, опущу свои комментарии]. Если брать то, как обычно описывают MVC, мне всегда хочется задать один вопрос - зачем там контроллер? Ну вот нафига он нужен? Это кусок бессмысленного кода, который занимается исключительно тем, что как дурная прокладка транслирует вызовы из V в M и обратно. Суть контроллера проявляется тогда, когда становится понятно: одному контроллеру соответствуют несколько моделей и несколько представлений. То есть MMMMMMM <===> C <===> VVV. Например, в Экселе основное представление - конечно, лист. Но кроме него, есть ещё как минимум два: "список закладок" и "редактор текущей ячейки" (тот, который над ячейками). Моделей - вот их там целая куча. В первую очередь это модель данных (значения ячеек). Во вторую - модель форматирования. В третью - модель выделения (выделенные области). В четвёртую - модель границ (border-ы ячеек). Дальше я просто не помню, их было семь или восемь даже при том, что я реализовал только тривиальную часть экселевского функционала. А при нетривиальной - счёт пошёл бы на десятки. Каждая модель реализует какой-то аспект функциональности. Всё модульно, чётко, красиво и удобно, очень архитектурно. Но каждая модель должна реагировать на определённые события (например, вызов операции удаления N-й строки). Иногда - похожим образом, иногда - особенным. И контроллер сразу получает свой реальный и конкретный смысл - это концентратор, то место, которое получает событие и переправляет его всем заинтересованным. Именно здесь становится понятно, почему концепции MV недостаточно, и нужно MVC. И тогда не нужно никаких страшных иерархических структур, всё расписывается наглядно, красиво и просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 05:01 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
softwarer Хотите опыт человека, который действительно написал свой Excel? softwarer Если брать то, как обычно описывают MVC, мне всегда хочется задать один вопрос - зачем там контроллер? Ну вот нафига он нужен? Это кусок бессмысленного кода, который занимается исключительно тем, что как дурная прокладка транслирует вызовы из V в M и обратно. Суть контроллера проявляется тогда, когда становится понятно: одному контроллеру соответствуют несколько моделей и несколько представлений. То есть MMMMMMM <===> C <===> VVV. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2021, 15:26 |
|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#18+
softwarer А теперь, собственно, про опыт. Очевидно, что шаблон MVC просто создан для этого дела. И на опыте того проекта я убедился, что те, кто про него пишет - [ладно, опущу свои комментарии]. Если брать то, как обычно описывают MVC, мне всегда хочется задать один вопрос - зачем там контроллер? Ну вот нафига он нужен? Это кусок бессмысленного кода, который занимается исключительно тем, что как дурная прокладка транслирует вызовы из V в M и обратно. Суть контроллера проявляется тогда, когда становится понятно: одному контроллеру соответствуют несколько моделей и несколько представлений. То есть MMMMMMM <===> C <===> VVV. Хм, интересно. Я повспоминал, что обычно пишут в ознакомительных статьях про шаблоны MVC/MVP/MVVM - действительно, практически всегда контроллер/презентер/viewmodel использует одну модель и одна вьюху. Между тем, если взять реальную веб-разработку, там такой фигнёй не страдают. Например, в стандартном шаблоне ASP.NET MVC создаётся контроллер, использующий несколько моделей и вьюх - то, что доктор прописал. P. S. Если кто ведёт бложик или книгу пишет, - описывайте MV* правильно! Теперь вы знаете, как :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 10:06 |
|
|
start [/forum/topic.php?all=1&fid=16&tid=1339627]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 245ms |
total: | 523ms |
0 / 0 |