MFC: хорошо или плохо?

Vladislav177Rus

Хотелось бы услышать аргументы обоих сторон

freezer

Смотря для чего

enochka1145

Для программирования быстрых приложений под Windows - хорошо, а так...
Я так понимаю, MFC - это ОО-обёртка для Windows API, чтобы не нужно было указывать все 33 аргумента функциям Windows API, и т. д. В общем сделать такую ОО-вещь как Windows и впрямь ОО (для программиста).
Плюс - быстрая
Минус - не слишком удобная

Dasar

у MFC есть большой и жирный минус - ее больше не поддерживают (не развивают)

enochka1145

Какой же это минус? Это плюс! Поделом этой MFC.

anton7805

mfc -это плохо, так как имеет слишком сложную структуру , в следствии чего ее благополучно забывают

freezer

да ладно, сложную... полностью повторяет часть WIN32 API

bastii

Слишком много ОО. MFC столько не заслуживает . На Delphi или VB6 интерфейс ваять продуктивнее. Новая версия MFC - это /CLR + Winforms
Есть еще WTL, но официально не поддерживается.
Ботать MFC сегодня точно не следует.

bastii

Согласен с . Представлять нужно как все происходит до уровня Win32, много деталей. Пока занимаешься одним, теряешь знания о деталях в другом.

freezer

как раз наоборот хорошо: многие вещи скрываются, но если чего не хватает, легко воткнуть чисто winapi-шный код

bastii

Все равно могло быть ООПшности больше.

anton7805

в подавляющем большинстве случаев низкоуровневое программирование на winAPI не нужно,так как оно чревато ошибками, а вот пользоваться хорошо оттестированными высокоуровневыми структурами гораздо приятней

freezer

Так же как и в WIN32 API

freezer

Какими, типа грида? Ну вроде полно всяких ActiveX. А вообще, я не фанат MFC

lera98

Визарды в мфц отстой. Столько дерьма продуцируют.

bastii

В MS нашли решение. Причем оно лучше, чем это можно было сделать 10лет назад

freezer

ну пиши без визардов все макросы вроде задокументированы

lera98

Я пишу без мфц

ava3443

Qt и GTK2 - вот это удобные способы написания GUI.

bastii

GTK не знаю, но с QT явно дальше пошли чем с MFC. Просто на чистых С++ сложно, что-либо сделать нормальное. GUI фреймворк хорошо строить на компонентах. А для этого нужно развитая поддержка рефлексии и метаданных.

freezer

хм... по-моему в Windows Forms рефлексия не особо используется...

bastii

Как это не используется? Большая часть кода обеспечивает design-time поддержку, а там все на рефлексии. Архитектура довольно простая, писать нужно немного за счет метаданных и рефлексии. Можно наделать кучу контролов, с помощью которых можно в дизайнере очень быстро, с минимум кода, ваять сложный интерфейс. Это объясняет то, что рынок готовых контролов очень развит.

Marinavo_0507

> что рынок готовых контролов очень развит
Вопрос чисто из интереса: много ли вы их покупали?

bastii

Мне много рекламы приходит

freezer

вполне можно и без дизайнера прогать

freezer

DevExpress почти весь, еще ASP.NET-овские контролы, но не много

Dasar

> хм... по-моему в Windows Forms рефлексия не особо используется...
Весь DataBinding на рефлексии сделан.
свойство DataSource все контролы (которые работают с коллекциями) поддерживают.

bastii

Контролы, что входят в состав Winforms 1.0, довольно убогие, поэтому многие покупают. Все мои знакомые, которые работают в .NET проектах, рассказывают, что они пользуются теми или иными купленными контролами, особенно всякими дата гридами.

freezer

и как оно там используется?

Dasar

> и как оно там используется?
Что значит, как?

bastii

Ну это ж новое в .NET, так?

freezer

ну в чем там состоит использование рефлексии? Может ты ее с поздним связыванием путаешь, динамическим приведением типов?

Dasar

наличие рефлексии можно увидеть по наличию таких свойств у контролов, как:
DisplayMember
ValueMember
а вот Data binding:

textBox2.DataBindings.Add(new Binding("Text", new Rectangle "Left";
asp.net-овский DataBinder тоже умеет работать (читать поля) как с DataSet-ами, так и с простыми объектами.

bastii

так это и есть рефлексия
там, например, связывается свойство контрола со свойством объекта объектного источника данных по именам. Соответственно, потом через рефлексию будет считываться значение свойства объекта и запихиваться в свойство контрола.

bleyman

Я несколько раз видел проги под мфц. Разные. Вроде некоторые даже не совсем мудаки писали.
Когда я полчаса искал в небольшой проге то место, где сохраняется документ, не нашёл, попросил поискать знакомого и он таки нашёл за 15 минут при помощи дебаггера, я понял, что мфц - говно.

lera98

Я это понял сразу как увидел код, вываленный мне визардом плюс посмотрел на объектное дерево. Логично не засыпать программиста кучей говнокода. Я пользуюсь (пока что) билдером для написания гуи. В нём хоть и неидеальные контролы, идущие в комплекте, зато дерьма нет. Application->Initialize Application->Run Application->CreateForm(..) - и всё, что он тебе кладёт в винмайн. Это - красиво и интуитивно понятно. Тут говорили про и другие альтернативы мфц. Можно немного подробнее о них?

bastii

MFC это программирование Win32 API, а C Builder это целый GUI фреймворк. Зачем сравнивать. Да и код MFC не такой кривой, и пример Fj ни о чем не говорит, так как сохранение документа обычно делается стандартно в MFC через сериализацию, перегрузкой CDocument::Serialize или что-то в этом роде.

lera98

Вообще тема обсуждения - мфц. А сейчас дискуссия идёт про написание гуи.

bastii

А я и говорю про MFC, что оно не так плохо. Просто как Darkgray правильно сказал, MFC устаревшая технология.

kokoc88

В MFC нет говнокода. Если ты не можешь разобраться в довольно простой схеме работы - это ещё ничего не значит. Любой интерфейс спокойно и размеренно ваяется на MFC без каких-либо проблем. Другое дело, что это как бы устаревшая технология. Есть способы создавать GUI более быстро.

lera98

Согласен. Я не пытался разбираться а отверг его по первому впечатлению.
Оставить комментарий
Имя или ник:
Комментарий: