Я должен использовать спокойные механизмы сигнала/слота по традиционным обратным вызовам?

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

Мое первое отражение должно было бы заменить его код и использовать спокойный сигнал/слот вместо этого.

Там какие-либо серьезные основания состоят в том, чтобы использовать обратные вызовы в спокойном приложении/библиотеке?

Спасибо.

8
задан Etienne Savard 9 June 2010 в 16:29
поделиться

1 ответ

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

При этом, если рассматриваемый код работает, не уродлив и не вызывает проблем, то лучше оставить его в покое.

Обратитесь к документации Сигнал / Слот объясняет, почему подход Сигнал / Слот лучше:

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

Однако имейте в виду следующее:

По сравнению с обратными вызовами, сигналы и слоты немного медленнее из-за большей гибкости, которую они обеспечивают

Скорость, вероятно, не имеет значения в большинстве случаев, но могут быть некоторые крайние случаи многократного звонка, которые имеют значение.

19
ответ дан 5 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

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