powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
25 сообщений из 38, страница 1 из 2
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099490
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой вопрос, всплывает время от времени, когда я пытаюсь программировать что-то дома "для души".
Вот, допустим, есть паттерны проектирования (у кого само выражение "паттерны проектирования" вызывает рвотный рефлекс - извините, ничем не могу помочь). Исторически, как я понимаю, они появились так. Какие-то чуваки писали-писали софт, заметили, что часто возникают похожие проблемы, придумали для некоторых типовых проблем типовые подходы к решению, назвали их "шаблоны", написали книгу.
ОК. Идем дальше. Допустим, я прочитал 100500 пару книг про паттерны, рефакторинг и всё что-то понял. Теперь надо применять это в реальном проекте.
Я начинаю писать десктопное приложение. Ну, например, я хочу написать свой Excel, потому что ни микрософтовский, ни опеноффис меня не устраивает. Там, конечно, пользователь будет вводить какие-то данные и как-то их обрабатывать, а я должен показывать все это на экране. Ну конечно же, мне пригодится паттерн MVC (какой-нибудь один из семейства). Типичный пример использования паттерна в учебных материалах: какое-нибудь окно, переменная (или иногда простенький объект) с данными. ОК. Теперь мой "эксель". Там куча данных. В простенький объект не впихнешь. Сами пользовательские данные - многоуровневые: один документ содержит несколько листов, каждый лист - много ячеек и иногда других объектов, каждая ячейка имеет данные, форматирование и т. д., а еще есть настройки самого приложения... У каждого куска данных есть какие-то дополнительные окна для редактирования данных, плюс одно большое (основное) окно приложения. Иииии?
Две самые простые мысли, которые приходят в голову.
1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view.
2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.
Но ведь 2021-й год на дворе, наверняка про это уже кто-нибудь что-нибудь написал?
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099497
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начало: "Есть у меня простенькая задачка ..."
Середина: "... которая нифига не простенькая ..."
Финал: "Ну почему, в третьем тысячелетии, ещё никто не создал для меня нечто готовое, что можно покрыть лаком, а потом повесить свой шильдик?!".

P.S.
"У верблюда два горба потому, что жизнь - борьба".
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099511
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Финал: "Ну почему, в третьем тысячелетии, ещё никто не создал для меня нечто готовое, что можно покрыть лаком, а потом повесить свой шильдик?!".
Ну вообще-то, это довольно грубое передергивание и демагогия. Я просил не готовое решение, а просто направление, куда копать. Например, приведенный мной п. 2 я тоже не сам придумал. Мне как-то на глаза попадалась статья, где описывалось нечто похожее. Без кода, просто со схемой в виде картинки и объяснения на пальцах в виде "и потом эта штука такая вжух туда, и все готово сломалось". Я только не помню, где эта статья и по каким ключевым словам я ее нагуглил. Даже такого будет достаточно, это уже лучше, чем ничего.

Не, если ничего на эту тему нет, это тоже в своем роде хорошо. Я тогда годик покодю дома по вечерам, запилю цикл статьей на Хабре (господи, прости), и буду всем говорить, что я самый умный. А опровергнуть будет нечем.

P. S. Я тут вспомнил. Когда-то давно натыкался на похожую статью. Вот: http://rsdn.org/article/patterns/patterns.xml Дата публикации - 09.04.2003. Сейчас, правда, мне решение из этой статьи не кажется удачным. Вот примерно такого рода статьи/книги я и ищу.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099514
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C Excel совершенно неудачный пример. До 2007 года там бинарный формат
(можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)...
А потом XML, требующий тоже нехилого парсинга. И опять бинарные куски...

Всё это представить в виде древовидной стрктуры весьма сложно - там не дерево
и даже не чаща - там сплошные джунгли...

И никакие "паттерны" не помогут продираться сквозь них.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Ну, например, я хочу написать свой Excel, потому что ни микрософтовский,
ни опеноффис меня не устраивает. Там, конечно, пользователь будет вводить какие-то данные и как-то
их обрабатывать, а я должен показывать все это на экране. Ну конечно же, мне пригодится паттерн MVC


Вот с этого момента - не согласен. Чтобы шаблон был применим к приложению надо наверное чтобы
сама решаемая задача по ролям объектов и по структурам данных и по юз-кейсу была бы подходящая
под данных шаблон.

Про многоуровенвое дерево "троек" - непонятно. Откуда там их так много? Что является "моделью" для каждой тройки?
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099528
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Про многоуровенвое дерево "троек" - непонятно. Откуда там их так много? Что является "моделью" для каждой тройки?
Да практически любое окно настроек подразумевает под собой какие-то данные. Например:
1. Настройки форматирования ячеек
2. Настройки печати листа
3. Свойства графиков
4. Сами данные в ячейках

И так далее, продолжать можно долго.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099532
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С окнами настроек - это перебор IMHO.

MVC полезен когда у тебя данные (модель) единовременно презентуются на экране в разных видах.
Например столбец цифр. И рядом - поясняющая инфографика по этим цифрам.

А настройки это что? Открыл окошко. Чего-то покорректировал и закрыл. Какая там MVC? Там даже
идентифицировать виды отдельно нельзя. Вобщем... не стоит усложнять на пустом месте.

Excel образца 1.0 был написан без этого шаблона. И возможно даже не на С++ а на чистых сях.
Вобщем имеет смысл начать писать что-то простое. И уж когда точно-точно не хватит возможностей
(ну просто жить нельзя без MVC) - тогда уже и заходить сюда в скруль.

И тогда уж ты будешь бить нас всех по лицу аргументами в пользу MVC...
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099538
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Теперь мой "эксель". Там куча данных. В простенький объект не впихнешь.

Поэтому первый (и самый сложный) паттерн, требующий освоения это KISS.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099541
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич

4. Сами данные в ячейках

Тут надо подумать. Сами ячейки - это основное "мясо" которое потребляет ресурсы памяти.
И создавать для них ничего не надо. По сути они (ячейки) должны быть частью глобальной
модели (документ Excel) и должны лежать компактненько. В сериализованной форме.

И лишь в момент редактирования ячейки (или группы ячеек) можно будет создать
какие-то графические элементы и контроллеры для удобства редактирования.

IMHO
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099553
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Excel образца 1.0 был написан без этого шаблона. И возможно даже не на С++ а на чистых сях.
Или вообще на паскакале.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099601
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099620
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Никанор Кузьмич, сегодня, 12:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1338971&msg=22374952][22374940]
>Есть такой вопрос...
<Как вариант, посмотри здесь .
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099624
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого.

Интересная конечно мысль. Насчет во всем разобраться. Вот исходники OpenOffice https://github.com/apache/openoffice

Сколько времени нам с вами нужно чтобы разобраться есть ли там шаблоны вообще или нет? Используется ли MVC/MVP?
Это кстати синьорный вопрос, я считаю.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099692
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

первая версия:
Multiplan (1982) UCSD Pascal
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lotus-123 (1983) предположительно на сях с асмом.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099711
ra-001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никанор КузьмичЯ только не помню, где эта статья и по каким ключевым словам я ее нагуглил. Даже такого будет достаточно, это уже лучше, чем ничего.Наверное разработка фреймворк[ов],
посмотри Eclipse, там дядька из go-4 в техническом руководстве был изначально.
Еще системы на Swing-e, там должно быть описание: JetBarain, Oracle - исходники видел.

Никанор Кузьмич1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view.
2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.Тут чем недоволен ?
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099735
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Но ведь 2021-й год на дворе, наверняка про это уже кто-нибудь что-нибудь написал?
Да. Запускаешь Дельфи, кидаешь на форму компонент F1Book - и готовый эксель
Года с 97-го этот компонент появился в поставке на вкладке ActiveX.

Шутка, конечно, но надо либо кататься, либо возить.
Либо своё писать, либо готовое использовать.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099755
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i
C Excel совершенно неудачный пример. До 2007 года там бинарный формат
(можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)...


Чушь. В Excel используется OleStorage .
Структурированное хранилище с точки зрения программиста выглядит как отдельный диск с папками и файлами, но находится
в все это в отдельном файле. Пользоваться очень удобно, не сложнее чем обычной файловой системой.
Для сохранения сложных иерархических данных в виде дерева ничего лучшего чем OleStorage не придумали в Windows.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099874
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Lotus-123 (1983) предположительно на сях с асмом.

Спроси у Нуралиева. Он
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099876
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Lotus-123 (1983) предположительно на сях с асмом.

Спроси у Нуралиева. Он же 123 стырил и обозвал 1С.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099881
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное он стырил идею. Вряд-ли он мог просто распространять долгие годы IBM-овский продукт
и хорошо себя чувтвовать при этом.

Вот тут бинари

http://old-dos.ru/files/file_1499.html

Есть кто-то в топике спец по реверсу? Не разобрать а хотя-бы посмотреть на чем написано. Обычно ЯВУ оставляют
какие-то свои сигнатуры или магические числа.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099885
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич,
Обычный ексцел - это одна Вселенная
В параллельной Вселенной создаем ексцель-двойник на базе системы InterSystems Cache/Iris.
Они тесно связаны по интернету (интранету) и работают согласованно.

Но второй гораздо мощнее, быстрее, деревья сколь угодно многомерные, обьемы данных неограниченные.
Отображается он клиентам и управляется через первый ексцель. Естественно, во втором и выполняется почти вся работа.

Такой "квантовый комп" на порядки усиливает обычный ексцел и придает ему неожиданные возможности.
Есть там и обьекты со свойствами и прочие удобства.
Можем скинуть.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099886
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Раньше 1С так и продавалась. Типа 1С Лотус 123.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
mayton,

Раньше 1С так и продавалась. Типа 1С Лотус 123.

Хм... не знал этого.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099896
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i
C Excel совершенно неудачный пример.
Господа, во-первых, хочу обратить внимание на то, что Excel выбран в качестве примера не потому, что это Excel, а потому, что это программа с очень большим количеством функций и фич. Кому не нравится Excel (не важно, по каким причинам), представьте себе что-нибудь другое на ваш вкус - фотошоп, автокад, ворд, 3D MAX и так далее. Это будет применимо ко всем.

mayton
MVC полезен когда у тебя данные (модель) единовременно презентуются на экране в разных видах.
Насколько я понимаю, в первую очередь, паттерны полезны, когда нужно менять код. Править баги, дописывать фичи и т. п. Просто один раз написать какой-то код и как-то вывести на экран (а потом забыть) - тут спору нет, пиши как пишется, любая лапша сойдет.

mayton
А настройки это что? Открыл окошко. Чего-то покорректировал и закрыл. Какая там MVC? Там даже идентифицировать виды отдельно нельзя. Вобщем... не стоит усложнять на пустом месте.
И тут мы плавно переходим к еще одним настройкам... Ну то есть я сделал какую-то фичу, под нее окно. Не заморачиваясь, накидал какого-то кода. Потом еще фичу, еще окно, еще код. Потом еще десяток. И вот, приехали, здравствуй, бабушка. Куча лапши, все вперемешку. Ровно то, что тут всем форумом ругают уже 20 лет.

Dimitry Sibiryakov
Поэтому первый (и самый сложный) паттерн, требующий освоения это KISS.
Я - чемпион мира по прокрастинации и безделью, KISS прописан у меня прямо в ДНК. С этим проблем нет.

ShSerge
Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого.
Когда я пишу "для души", иногда на пару-тройку месяцев забрасываю разработку, а потом сам становлюсь "новым человеком в команде". Так что и тут все то же самое.

ВМоисеев
Как вариант, посмотри здесь .
Спасибо. Посмотрел по диагонали - там все-таки про интерфейсы для баз данных. Близко, но не совсем то. Потом посмотрю повнимательнее.

ra-001
Наверное разработка фреймворк[ов],
посмотри Eclipse
В смысле - исходники Eclipse?

ra-001
Никанор Кузьмич1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view.
2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.
Тут чем недоволен ?Да в принципе, на безрыбье - сойдет, просто опасаюсь подвоха...
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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