Quelles sont vos meilleures pratiques avec Qt ?
Partagez vos retours d'expérience à destination des débutants
Le 2017-10-12 17:07:32, par deletme, Membre confirmé
Bonjour à toutes et à tous,
Nouveau dans le monde de Qt (bien qu'ayant déjà développé des application à l'aide de ce "framework" , je souhaiterais m'améliorer dans la conception dans mes futures applications (pour qu'elles restent maintenables et évolutives).
Aussi, avez-vous des best practices que vous suivez systématiquement ? Avez-vous ou connaissez-vous des projets dont le code source est accessible permettant d'apprendre un peu plus ?
J'ai quelques livres à ma disposition mais la plupart se cantonnent à une application par notion abordée et dès que l'on sort des sentiers battus on se demande si on fait bien. J'ai également parcouru quelques exemples fournis par Qt mais j'avoue rester sur ma faim.
Merci,
dM
Nouveau dans le monde de Qt (bien qu'ayant déjà développé des application à l'aide de ce "framework"
Aussi, avez-vous des best practices que vous suivez systématiquement ? Avez-vous ou connaissez-vous des projets dont le code source est accessible permettant d'apprendre un peu plus ?
J'ai quelques livres à ma disposition mais la plupart se cantonnent à une application par notion abordée et dès que l'on sort des sentiers battus on se demande si on fait bien. J'ai également parcouru quelques exemples fournis par Qt mais j'avoue rester sur ma faim.
Merci,
dM
-
onilink_Membre émériteJe n'ai pas utilisé Qt depuis un moment, et je vais donc donner surtout mon avis sur les bonnes pratiques à appliquer en c++ en général qui ont beaucoup amélioré ma productivité.
- RAII avec les pointeurs intelligents, ne pas utiliser de pointeurs nus qui gèrent la durée de vie d'un objet
- La programmation défensive, en utilisant de nombreuses stratégies comme la programmation par contrat (disponible dans gsl: https://github.com/Microsoft/GSL )
- Éviter les globales et les singletons autant que possible, dans un petit projet on ne se rend pas compte du mal que c'est mais dans un gros projet ça cause rapidement de gros problèmes
- Toujours initialiser ses variables
- Utiliser le sanitizer de gcc (ou valgrind, mais c'est plus lourd) pour détecter de nombreuses erreurs comme les fuites de mémoire, les variables non initialisées utilisées, etc...
- Comprendre reinterpret_cast (et sa différence profonde avec static/dynamic_cast) avant de l'utiliser (mes débuts en C++ n'ont pas été glorieux a cause d'une utilisation stupide et intensive de reinterpret_cast).
- Avoir la notion "d'undefined behaviours", et être conscient qu'un programme qui compile et semble fonctionner, n'est pas forcement un programme fonctionnel.
- Vérifier le standard C++ quand on a un doute (encore une fois, ce n'est pas parce que ça "compile" et que ça semble marcher que c'est standard/légal/bon).
Côté Qt, j'ai perdu beaucoup (trop) de temps a ne pas utiliser le designer, et à instancier mes widgets manuellement en code.
Un conseil, apprendre a maîtriser Qt designer, c'est vraiment très efficace, puissant, et quand on le maîtrise il y a un réel gain de productivité.le 16/10/2017 à 20:15 -
bcag2Membre actifhors sujet … quoi que!
Pour ma part, bien que partant de projets en C/C++, je réalise mes refactorings, pour la partie IHM en Qt, en python avec PyQt… et débutant également avec ce framework, j'ai apprécié les exemple suivant:
https://github.com/pyqt/examples
ce qui me permet d'utiliser aussi PyQtGraph
Je réalise le binding avec mon controleur C/C++ en utilisant Swig
Résultat: pas besoin de recompiler mon IHM après chaque modif… un code python utf-8 avec mes accents qui vont bien sans prise de tête… le C/C++ là où il est le plus efficace et python/Qt là où ils sont le plus efficaces… enfin au moins pour moi!le 17/10/2017 à 16:37 -
PascaltechMembre actifle 27/10/2017 à 17:57