Russian Qt Forum
Ноябрь 23, 2024, 09:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt (Прочитано 12881 раз)
Day
Частый гость
Offline
Сообщений: 290
Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
:
Декабрь 18, 2018, 02:43 »
Наверное, правильный ответ - "Да крутись оно все конем!"
Но идеал наталкивается на реальность. А реальность в том, что никакого ТЗ нет и быть не может. Если, конечно, не считать за ТЗ уже с грехом пополам работающую программу, которую надо сделать "еще лучше".
Я знаю про метафору, что вносить изменения в уже распространяемую программу то же, что делать внутриполостную операцию на бегущем человеке. Но поверьте, другого выхода у нас не было. Или я его не смог найти. Моя вина.
Но что случилось, то случилось. Как поет нестареющая звезда нашей эстрады, "фарш невозможно провернуть назад".
Короче, использовать работающую программу как образец для подражания совершенно невозможно. Там тьма решений, вызванных просто моей неумелостью, заплаточностью сиюминутных потребностей и просто неправильным интерфейсом.
То есть интерфейс надо менять кардинально. А вот этого-то мой консервативный и многоголовый заказчик не хочет.
И мне остается только исподволь предлагать ему другой. Оставляя ему возможность "жить по-старому". И игнорировать все его хотелки к старому варианту. Фактически прекратить поддержку старого проекта за исключением явных моих ляпов. Которые, увы! есть и будут.
Записан
qate
Супер
Offline
Сообщений: 1177
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #1 :
Декабрь 18, 2018, 08:24 »
Хорошо такое читать перед сном, сразу вырубает
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #2 :
Декабрь 18, 2018, 12:40 »
Краткий ответ: НЕТ, такое решение в корне ошибочно. Подробности
Название топика хорошее, но содержание стартового поста уж чересчур эмоционально. Право, не стоит посыпать голову пеплом типа "Ах, не предусмотрел(и)! Моя вина!" и.т.п. Ситуевина совершенно стандартная: есть старое (древнее, замшелое и.т.п.) но работающее приложение, вот надо перевести его на Qt. Конечно задача большая и непростая, такие не каждый день возникают, но это отнюдь не редкость.
Цитата: Day от Декабрь 18, 2018, 02:43
А реальность в том, что никакого ТЗ нет и быть не может. Если, конечно, не считать за ТЗ уже с грехом пополам работающую программу, которую надо сделать "еще лучше".
Ага, и документации нет (в лучшем случае огрызки). И содержание "W-приложения" Вы хорошо себе представляете процентов так на 30% (если не меньше, дальше смутно). Это нормально, в такой ситуации я был. Вот некоторые ошибки которые я сделал (хотя чужой опыт редко учит)
1) Не пытайтесь нанять "Qt спеца". Да, есть немало людей хорошо владеющих Qt, но здесь не это главное - гораздо важнее знать/понимать портируемое приложение, а вот этим (кроме Вас) никто заниматься не будет.
2) Не "хватайтесь за окно". Увидев старенькую часть UI в голову моментально приходят мысли типа "Да на Qt это же как 2 пальца об асфальт! А можно и намного лучше - и легко!". Но беда в том что Qt-приложения-то у Вас нет и куда приткнуть новое окно - хз. А "сборная солянка" быстро задолбает.
3) "Та ну его нафиг! Возиться с этим калом мамонта! Переписать все с нуля - и все дела". Именно такие резвые советы даются чаще всего - ведь дающий их сам-то в W-приложение не полезет. Здесь уместно вспомнить библию (не ручаюсь за точность цитаты)
Цитировать
Для достаточно большого приложения есть только один старт - меньшее (читай - предыдущее) приложение которое уже работает
Святая правда, повторить весь имеющийся ф-ционал "с нуля" возможно только если он "достаточно мал", тогда можно просто портировать "в лоб". Но чаще эта радость недоступна.
Так, ну пока хватит, надо и другим дать высказаться.
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #3 :
Декабрь 18, 2018, 13:31 »
Цитировать
Не пытайтесь нанять "Qt спеца".
Да. Для меня это очевидно.
Вообще, у меня такое ощущение, что вы мои проблемы очень хорошо понимаете. Видно, что и сами были в похожей ситуации. Ну и как? Выкарабкались?
Вопрос не в тему. Как вам удается цитировать
часть
поста с указанием авторства? У меня получается или цитирование всего поста (кнопка "цитировать") или я просто копипастю эту часть и окружаю ее "квотами".
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #4 :
Декабрь 18, 2018, 13:33 »
Цитата: Day от Декабрь 18, 2018, 02:43
Короче, использовать работающую программу как образец для подражания совершенно невозможно. Там тьма решений, вызванных просто моей неумелостью, заплаточностью сиюминутных потребностей и просто неправильным интерфейсом.
То есть интерфейс надо менять кардинально. А вот этого-то мой консервативный и многоголовый заказчик не хочет.
И мне остается только исподволь предлагать ему другой. Оставляя ему возможность "жить по-старому". И игнорировать все его хотелки к старому варианту. Фактически прекратить поддержку старого проекта за исключением явных моих ляпов. Которые, увы! есть и будут.
Вы сразу и ответили на свой вопрос
.
Можно поинтересоваться: в каком году зародилась эта WinAPI-программа?
И для дальнейшего размышления: почему именно в Qt? Не появится ли через 3-5 лет тема: "Стоит ли переводить код из старых Qt-программ "потихонечку" в SomeOtherFramework"?
Записан
Пока сам не сделаешь...
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #5 :
Декабрь 18, 2018, 13:42 »
Приходилось заниматься подобным портированием.
Как правильно говорит Igors, лучшее и правильное решение будет - "переписать всё".
При этом выправляя (или меняя) архитектуру и концепты. Была мажорная версия 5.X.Y (без Qt), станет 6.0.0 (с Qt).
В принципе, при наличии (бес)конечности времени и желания, я бы начинал с MVP - Minimum Viable Product.
Т.е. решение, содержащее поначалу минимум самого нужного функционала, но с правильной архитектурой и идеями.
Скорее всего, у Вас есть такой функционал в старом приложении, но криво сделанный.
Сделайте ровно и на Qt. Тестируйте, показывайте заказчику. Параллельно понемногу доращивайте до 6.1.0, 6.2.0 и т.д.
Если же хочется "от ту вот часть на Qt по быстрому, а остальное пока оставить на потом" - плагины Вам в руки.
Пишите длл с нужным функционалом и гуём (см. выше), подключайте к старому динозавру. Позже у Вас будет много длл, или же одна большая. В какой-то момент весь нужный функционал туда и переедет. Тогда прибиваете динозавра и делаете вменяемую оболочку для Вашей "хорошей" длл.
Как-то так.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Day
Частый гость
Offline
Сообщений: 290
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #6 :
Декабрь 18, 2018, 13:47 »
Цитировать
в каком году зародилась эта WinAPI-программа?
Конец прошлого тысячелетия. 1997. А до этого еще был ДОС-вариант:)
Цитировать
почему именно в Qt?
Я не гонюсь за модой. Просто понравилось. Пришлось по руке. Чего не скажу о том же Бюльдере.
Вообще, к использования новых инструментов прихожу гигантскими скачками. Так что вряд ли через 3-5 лет соблазнюсь неким SomeOtherFramework...
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #7 :
Декабрь 18, 2018, 13:56 »
Цитата: Day от Декабрь 18, 2018, 13:47
Конец прошлого тысячелетия. 1997. А до этого еще был ДОС-вариант:)
Тогда понятно и объяснимо
.
Цитата: Day от Декабрь 18, 2018, 13:47
Я не гонюсь за модой. Просто понравилось. Пришлось по руке. Чего не скажу о том же Бюльдере.
Вообще, к использования новых инструментов прихожу гигантскими скачками. Так что вряд ли через 3-5 лет соблазнюсь неким SomeOtherFramework...
Дело не в моде. Выше Racheengel говорил о выправлении архитектуры. Я к тому, что не надо сильно завязываться на Qt, как сейчас завязано на WinAPI. Если есть возможность, то стоит рассматривать Qt как "один из видов GUI", который впоследствии можно заменить на другой, не переписывая опять всё приложение с нуля.
Записан
Пока сам не сделаешь...
Day
Частый гость
Offline
Сообщений: 290
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #8 :
Декабрь 18, 2018, 13:59 »
Цитировать
Сделайте ровно и на Qt. Тестируйте, показывайте заказчику.
Делаю. Показываю. Заказчик стоит в позиции "Чем бы дитя не тешилось..." Но эта тропинка протаптывается.
Цитировать
плагины Вам в руки. Пишите длл с нужным функционалом и гуём
А вот это и впрямь дельный совет. Надо попробывать. Беда в том, что плагинами никогда не занимался. Но думаю, это-то освоить можно. Какие-то вопросы смутно и несформулированно видятся. Но до них, конечно, нужно еще дойти...
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #9 :
Декабрь 18, 2018, 14:22 »
Цитировать
рассматривать Qt как "один из видов GUI", который впоследствии можно заменить на другой,
Вы говорите о разделение движка и представления? Конечно! В проекте есть довольно весомая вычислительная часть. Написанная на чистом Си. И она остается почти без изменений. И переходит из проекта в проект. И даже "подкармливает" побочные проекты.
Скажу больше. В воздухе давно уже носится идея сделать из десктопного веб-приложение. И там вся математика ровно та же. Только перетранслированная на ОС хостера. Что получилось без особых проблем. А все остальное - фактически это новое гуи. И вот тут попытка привлечения "спецов по сайтостроению" закончилась полным крахом. Легче сделать самому. Что и было начато. Но... Тут меня стало уже немножко не хватать... Хотя в этом направлении у меня развязаны руки. Это должно позиционироваться как новый проект с похожим функционалом, и мы не обязаны повторять всех неудачных решение исходного
Записан
qate
Супер
Offline
Сообщений: 1177
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #10 :
Декабрь 18, 2018, 15:38 »
По теме нашел почитать "Эффективная работа с унаследованным кодом" и перечитать "Мифический человеко-месяц" )
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #11 :
Декабрь 18, 2018, 16:17 »
Цитата: Day от Декабрь 18, 2018, 13:31
Вопрос не в тему. Как вам удается цитировать
часть
поста с указанием авторства? У меня получается или цитирование всего поста (кнопка "цитировать") или я просто копипастю эту часть и окружаю ее "квотами".
Цитирую все и вырезаю ненужное
Цитата: Day от Декабрь 18, 2018, 13:59
Делаю. Показываю. Заказчик стоит в позиции "Чем бы дитя не тешилось..." Но эта тропинка протаптывается.
Ой смотрите. Если заказчик не понимает что портинг занимает по меньшей мере месяцы - не стоит и начинать.
Цитата: Day от Декабрь 18, 2018, 13:59
А вот это и впрямь дельный совет. Надо попробывать. Беда в том, что плагинами никогда не занимался. Но думаю, это-то освоить можно. Какие-то вопросы смутно и несформулированно видятся. Но до них, конечно, нужно еще дойти...
Похоже этой "кусочной" участи никому не избежать, что бы ни советовали
Она ведь так заманчива! Ну попробуйте, главное почувствовать когда соскочить
Цитата: Day от Декабрь 18, 2018, 13:31
Видно, что и сами были в похожей ситуации. Ну и как? Выкарабкались?
Правду сказать - с большим трудом, но удалось нащупать верный путь. Нужно сначала написать эмулятор старого фреймворка на Qt, "поднять" все текущее UI, пусть оно будет точно таким же (в смысле ничего нового), но будет Qt-приложением. А потом уже расправляться с конкретными окнами и контролами, там уже дело пойдет веселее, а главное - над Вами "не капает", не висит груз перевести ВСЕ", что-то работает по-старинке - ну и ладно. Кстати если у Вас Borland-OWL, то не исключено что такой эмулятор уже кто-то и запостил (не один же я такой умный
)
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #12 :
Декабрь 18, 2018, 18:13 »
Цитата: Day от Декабрь 18, 2018, 14:22
Вы говорите о разделение движка и представления? Конечно! В проекте есть довольно весомая вычислительная часть. Написанная на чистом Си. И она остается почти без изменений. И переходит из проекта в проект. И даже "подкармливает" побочные проекты.
Ну раз основная вычислительная часть уже есть и не завязана на GUI, то лучше "с нуля" проектировать и реализовывать новый GUI на Qt.
Если вы углубитесь в Win-реализацию, то просто потеряете кучу времени. Представьте, что вы хотите получить, разбейте это на этапы по важности и реализуйте.
Потратьте время и хорошо продумайте архитектуру, что бы GUI сильно не пересекался с бизнес-логикой, тогда в дальнейшем смена GUI будет проходить безболезненней. Неплохо сразу продумать систему плагинов, расширять такую систему будет проще.
«
Последнее редактирование: Декабрь 18, 2018, 18:20 от Old
»
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #13 :
Декабрь 18, 2018, 21:37 »
Цитировать
Если заказчик не понимает
Да понимает он все! Слава Богу, не первый год работаем!
Цитировать
главное почувствовать когда соскочить
Золотые ваши слова!
Цитировать
перечитать "Мифический человеко-месяц" )
Читали еще в прошлом тысячетелетии, и с большим удовольствием. Особенно понравился слоган о 9-ти женщинах, пытающихся выносить ребенка за месяц.
В те времена это было откровением. Теперь можно только снисходительно посмеиваться. Особенно чудна идея о "Хирургической Бригаде". Но наверное, там есть еще много чуднОго. И вправду перечитать, что ли?
Цитировать
написать эмулятор старого фреймворка на Qt,
А вот этого мне, боюсь, не осилить. Ибо к этому старому испытываю такое глубокое и стойкое отвращение, что еще и эмулировать его...
Цитировать
Потратьте время ...
Да, тот ресурс у нас правда неограничен...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Стоит ли переводить код из старых WinAPI-программ "потихонечку" в Qt
«
Ответ #14 :
Декабрь 19, 2018, 11:15 »
Цитата: Racheengel от Декабрь 18, 2018, 13:42
.. лучшее и правильное решение будет - "переписать всё".
При этом выправляя (или меняя) архитектуру и концепты.
Ну это "конечная цель", но как ее достигнуть? Давайте создадим новый Qt проект, нарисуем MainWindow и будем переписывать туда старые окна под Qt? Так, что ли? Если так, то:
- если говорим "портирование", то тем самым утверждаем что "текущий ф-ционал остается неизменным". Сначала должно просто "ходить на Qt", пусть косо, криво, но хоть как-то ходить, т.е. Qt-приложение должно стартовать и окна открываться. Это уже успех. Только после этого можно пересматривать архитектуру и концепты. А попытка проскочить сразу - просто авантюра
- вот было старое приложение, которое постоянно (и наверное заслуженно) ругали. Но теперь его НЕТ. И, хуже того, когда оно опять будет (хотя бы со старым ф-ционалом) - неизвестно, ответить заказчику нечего. И в таком "подвешенном" состоянии будете находиться месяц за месяцем. Вряд ли хорошие новые концепты придут в голову под таким тяжелым прессом. Зачем же было загонять себя в такое положение?
Конечно все эти рассуждения справедливы лишь для "достаточно большого" UI. Если "в лоб" проходит, то и думать нечего, делать в лоб - да и все.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...