Перечислите недостаток (производительность / обслуживание и т. Д.) В том, что в Qt все функции установщика являются слотами? - PullRequest
1 голос
/ 01 декабря 2010

Есть ли какой-либо недостаток (производительность / техническое обслуживание и т. Д.) В том, что все функции сеттера как слоты в Qt?

Некоторые из недостатков, которые я вижу,

1) Ненужный вызов файлов MOC и ненужных файлов moc, созданных во время компиляции 2) Разрыв в цепочке обработки исключений, так как исключения не передаются при соединении сигнального слота 3) Ненужная сложность в отладке, так как сложнее отладить с помощью сигнального слота, который напрямую вызывает метод.

Можете ли вы перечислить другие недостатки (если есть)?

1 Ответ

4 голосов
/ 01 декабря 2010

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

Если вы вызываете все свои сеттеры с помощью сигналов, то:

1) Более сложный код;так как вы должны помнить, чтобы подключить все ваши сигналы ко всем слотам для каждого набора.

2) Небольшое снижение производительности.Это было бы незначительным для любого приложения GUI;но его там.

3) Менее детерминированный код.Т.е. в зависимости от способа соединения сигналов, вызов может быть передан непосредственно вызываемому абоненту или отправлен через систему событий.Это дополнительно усложняет отладку, помимо того, что вы уже упомянули.

4) Проблемы IDE.Если вы не используете QtCreator или KDevelop, IDE может не понимать специальные ключевые слова (slot, signal, emit).

За исключением (1), все эти проблемы незначительны.Но главная причина, по которой я этого не делаю, в том, что это не имеет смысла.Зачем это делать, если у вас нет нужды?

Разработка программного обеспечения должна заключаться в управлении сложностью, а не в ее создании.

...