Я разрабатываю настольное приложение Qt, которое взаимодействует с устройством Bluetooth. Интерфейс этого приложения должен быть разработан в QML.QML application vs QML/C++ application
Это приложение должно содержать 2 модулей:
- Передний конец модуля: пользовательский интерфейс, который будет разработан в QML.
- Модуль задней панели: взаимодействие и управление устройством Bluetooth.
В рамках Qt содержит реализацию Bluetooth в QML (BluetoothDiscoveryModel
, BluetoothSocket
и BluetoothService
) и C++ (QBluetooth
...), мне было интересно, что я выбираю между QML и C++ для реализации заднего конца модуля , в терминах:
- Производительность.
- Архитектура приложения.
И безопасно ли комбинировать QML и C++?
Я лично не буду использовать производительность в качестве основного решения, с какой стороны реализовать вещи, но надежность и проверяемость. Инструменты для анализа статического кода и т. Д. Гораздо более зрелые для C++ и т. Д. Даже не упоминание о JavaScript, требующем покрытия в 100% филиалов, чтобы быть уверенным, что нет синтаксических ошибок. –
Моя основная проблема с QML - это не производительность, а использование памяти, это свиньи, поэтому я обычно заканчиваю консолидацию довольно больших файлов QML в один тип C++. Но самой важной метрикой IMO является время разработки, и в этом аспекте QML - потрясающая экономия, это единственная причина, по которой я ее использую. Я перешел с 95% C + + 95% использования QML в производство, и он развивается не только быстрее, но и быстрее выявлять ошибки, поскольку вместо жестких сбоев вы получаете «что-то пошло не так на этой линии», что намного лучше чем ручная отладка. – dtech
Правильно, если один остается в QML и использует декларативные функции, это нормально, проблема, о которой я указывала, делает фактическую обработку. Лишь очень немногие люди берут на себя ответственность за строгую тестовую разработку, необходимую для того, чтобы функции JavaScript работали и поддерживались. Даже привязки могут быть сложными в этом отношении, поскольку они в основном также являются функциями JS, и опечатки не всегда приводят к предупреждениям –