MFC все еще используется для новой разработки (с каким-либо материальным объемом)?

Попробуйте функцию parseInt:

var number = parseInt("10");

Но есть проблема. Если вы попытаетесь преобразовать «010» с помощью функции parseInt, он обнаруживает восьмеричное число и вернет номер 8. Итак, вам нужно указать радиус (от 2 до 36). В этом случае база 10.

parseInt(string, radix)

Пример:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false
26
задан itowlson 15 February 2010 в 16:59
поделиться

6 ответов

Существует масса кода, использующего MFC. Я вижу эти вопросы все время, это все еще используется, что все еще используется ответ да. Я работаю в очень большой организации, в которой до сих пор работают сотни людей, пишущих на коболе. Если он когда-либо использовался на предприятии, он будет использоваться до тех пор, пока не останется аппаратного обеспечения для его поддержки, тогда какая-то компания заплатит кому-то за написание эмулятора, чтобы старый код продолжал работать.

Военно-морской флот все еще использует корабли с компьютерами с магнитными сердечниками для памяти, и я уверен, что у них есть люди, чтобы работать над ними. Однажды созданные технологии никогда не могут быть поддержаны. Это немного похоже на случай Deus ex machina, где крупные организации не совсем уверены в том, что делает их система, и испытывают такое сильное чувство страха, что могут поставить предприятие на колени, у них нет желания опробовать ваши новые запутанные технологии (КСТАТИ) мы платим IBM за максимальную поддержку OS2).

Кроме того, mfc является вполне приемлемым решением для разработки Windows, учитывая, что это объектная модель, которая оборачивает системный API, который является почти всем, что большинство людей получают из .net.


В качестве дополнения и, поскольку этот вопрос стоит за награду, это цитата из MS относительно mfc в VS 11

В каждом выпуске нам нужно балансировать наши инвестиции между различными области продукта. Тем не менее, мы по-прежнему считаем, что MFC является наиболее полнофункциональной библиотекой для создания собственных настольных приложений. Мы полностью привержены поддержке и поддержанию MFC на высоком уровне качества. Вот краткий список некоторых проблем, которые мы исправили в MFC для Visual Studio 11:

Вот ссылка , если вы хотите прочитать полный пост

24
ответ дан Marco A. 20 November 2019 в 07:13
поделиться

MFC все еще используется для некоторых новых разработок, а также для развития технического обслуживания (в том числе внутри Microsoft).

Хотя это может быть на минутку медленнее, чем использование Win32 API напрямую, потеря производительности на самом деле незначительна - редко достигает целого процента. При использовании .NET потеря производительности значительно больше (в моем тестировании редко бывает меньше 10%, причем типично 20-30%, и еще выше для тяжелых вычислений. Например, у меня есть программа это делает вычисления Eigenvector / Eigenvalue на довольно больших массивах. Моя оригинальная версия с использованием C ++ и MFC запускает один тестовый случай в всего за минуту на нашей стандартной тестовой машине. Некоторые из моих коллег решили, что было бы здорово - реализовать его в C #. Их версия занимает почти три минуты на одной и той же машине (четырехъядерный процессор, 16 гигабайт оперативной памяти, так что нет, не «устаревшее» оборудование). Я признаю, что я не слишком внимательно смотрел на их код , поэтому может быть его можно улучшить, но они достойные кодеры, поэтому улучшение 3: 1 кажется мне маловероятным.

С MFC также легко обойти среду и использовать Win32 API напрямую, когда / если вы хотите. С .NET вы можете использовать P / Invoke для этого, но это довольно болезненно для сравнения.

14
ответ дан Jerry Coffin 20 November 2019 в 07:13
поделиться

Выпуск MFC Feature Pack (один или два года назад, iirc) стал крупнейшим расширением MFC примерно за 10 лет, и это дало совершенно новый импульс развитию MFC. Я полагаю, что многие компании решили сохранить свои унаследованные приложения, продвигать их вперед и удалять на их основе новые приложения.

Для меня (как человека, которому приходится поддерживать большое приложение MFC), большая проблема заключается в уменьшении разработки и поддержки (Microsoft и сторонних) компонентов, а не самого MFC. Например, портировать на 64-битную версию непросто, если в приложении собрано много старых и неподдерживаемых чистых 32-битных компонентов Active-X.

8
ответ дан Slauma 20 November 2019 в 07:13
поделиться

MFC обновлялся с каждым выпуском Visual Studio. Это просто не главное в заголовке.

Что касается новых разработок, то да. Он по-прежнему используется и будет использоваться (хотя я, как и вы, предпочитаю этого не делать). Многие организации приняли технологическое решение много лет назад, и у них нет причин для этого.

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

8
ответ дан 28 November 2019 в 06:20
поделиться

Это зависит от того, что называется, это отдельные вопросы.

.AsParallel () Параллелизирует перечисление , а не делегирование задач.

Parallel.ForEach Распараллелил цикл , назначив задачи рабочим потокам для каждого элемента.

Таким образом, если исходное перечисление не становится параллельным (например, reader.Match (file) дорого), они равны. К вашему последнему вопросу, да , оба также верны.

Кроме того, есть еще одна конструкция, которую вы можете посмотреть, что сокращает его немного, по-прежнему получая максимальное преимущество PLINQ:

GetFileList().Where(file => reader.Match(file)).ForAll(f => list.Add(f));
-121--2274598-

Я буду обрабатывать событие PropertyChanged вместо этого. Событие PropertyChanged не отображается в Visual Studio intellisense, но вы можете его уловить:)

 GridViewColumn column = ...
 ((System.ComponentModel.INotifyPropertyChanged)column).PropertyChanged += (sender, e) =>
 {
     if (e.PropertyName == "ActualWidth")
     {
         //do something here...
     }
 };
-121--3044058-

Я сделал проект в прошлом году на основе MFC. Я не уверен, почему был выбран MFC, но он был адекватен для создания виртуального 3D графического пользовательского интерфейса - системы безопасности управления зданием - с частотой обновления 10 кадров в секунду, эффективно выполняемой на компьютерах на базе win32, начиная с середины 1990-х годов. Исполняемый файл (который требует только ядра win32 системных DLL) меньше 400K - нелегкое достижение с современными инструментами.

2
ответ дан 28 November 2019 в 06:20
поделиться

Воздержание от управляемого кода дает преимущества (возможно, вы пишете пользовательский интерфейс драйвера или используете COM).

Это и есть тонн кода MFC. Возможно, вы работаете в компании X и вам нужно использовать одну из миллионов DLL, которые они писали за последние десять лет.

3
ответ дан 28 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: