|
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
|
|||
---|---|---|---|
#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?fid=16&gotonew=1&tid=1339627]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 275ms |
total: | 430ms |
0 / 0 |