Ok, je sais que le titre de cette question est presque identique à quand devrais-je utiliser une programmation basée sur les événements? Mais les réponses de ladite question ne m'ont pas aidé à décider si je devrais utiliser des événements dans le cas particulier 'm face.
Je développe une petite application. C'est une application simple et la plupart de ses fonctionnalités sont de base crud.
Sur certains événements (lors de la modification de certaines données), l'application doit écrire une copie locale desdites données dans un fichier. Je ne suis pas sûr de ce qui est le meilleur moyen de mettre en œuvre cela. Je peux:
Quelle est la meilleure approche dans ce cas?
Suivez le KISS Principe: Conservez-le simple, stupide ou le principe Yagni: vous n'allez pas en avoir besoin.
Vous pouvez écrire le code comme:
void updateSpecialData() {
// do the update.
backupData();
}
Ou vous pouvez écrire du code comme:
void updateSpecialData() {
// do the update.
emit SpecialDataUpdated();
}
void SpecialDataUpdatedHandler() {
backupData();
}
void configureEventHandlers() {
connect(SpecialDataUpdate, SpecialDataUpdatedHandler);
}
En l'absence d'une raison impérieuse à faire autrement, suivez la route plus simple. Les techniques telles que la manipulation des événements sont puissantes, mais elles augmentent la complexité de votre code. Cela nécessite plus de code pour avoir travaillé et cela se produit dans votre code plus difficile à suivre.
Les événements sont très critiques dans la bonne situation (imaginez essayer de faire une programmation de l'interface utilisateur sans événements!) Mais ne les utilisez pas lorsque vous pouvez KISS ou Yagni à la place.
L'exemple que vous décrivez d'une donnée simple, où la modification déclenche un effet peut parfaitement être mise en œuvre avec le modèle de conception d'observateur :
Une approche axée sur les événements vaut la peine d'investir pour des scénarios plus complexes, lorsque de nombreuses interactions différentes peuvent survenir, dans un contexte de plusieurs à plusieurs, ou si des réactions en chaîne sont envisagées (par exemple, un sujet informe un observateur, ce qui souhaite dans certains cas modifier le sujet ou autres sujets)