2010-02-01 5 views

Répondre

7

Votre bibliothèque doit se lier au moins possible à d'autres bibliothèques pour atteindre l'objectif prévu. Sauf si votre bibliothèque est une sorte de bibliothèque gui, n'utilisez pas les boîtes de dialogue contextuelles.

8

Oui, c'est une mauvaise idée. Que se passe-t-il si un service Windows doit utiliser votre bibliothèque? Le seul scénario auquel je peux penser que ce serait OK est si la bibliothèque de classes est pour les composants d'affichage visuel et ne sera utilisée que dans ce contexte (c'est-à-dire ne contient que des boîtes de dialogue et des composants IU). Lors de l'écriture d'une bibliothèque de classes devant être utilisée dans de nombreux scénarios différents, vous ne voulez pas d'appel bloquant nécessitant une intervention humaine.

Vous pouvez être en mesure de savoir si la session est interactive ou non et faire un choix sur la création d'un popup, mais c'est un hack au mieux.

11

Les bibliothèques de classes sont destinées à consolider la logique métier et à réduire la duplication de code. Les dialogues doivent être affichés dans votre couche de présentation, où elle peut décider de la meilleure façon de le faire. Par exemple, si vous utilisez une bibliothèque de classes dans une application WinForm, cette boîte de dialogue sera différente de la boîte de dialogue affichée sur un site Web.

2

Cela dépend beaucoup. Si cette bibliothèque de classes contient beaucoup d'autres classes d'interface graphique, alors peut-être. Si cette bibliothèque contient des objets de domaine, cela semble être une mauvaise idée.

2

Je pense que c'est une mauvaise idée. Mais dans certains cas, vous pouvez rendre la logique de l'interface utilisateur réutilisable. Dans ce cas, essayez de retirer le code d'interaction utilisateur dans une bibliothèque séparée.

3

S'il s'agit d'une bibliothèque de classes pour afficher des boîtes de dialogue, alors oui. Pour tout autre type de bibliothèque de classes, alors non.

la bonne chose pour la bibliothèque à faire est de prendre des rappels comme "getInformationFromUser" ou "showError" ou quoi que ce soit. C'est ensuite à l'appelant de la bibliothèque de décider comment cela est fait. Ou pour signaler des erreurs, il doit déclencher une exception ou renvoyer un code d'erreur. Pour qu'une bibliothèque affiche la boîte de dialogue elle-même, elle doit faire un grand nombre de suppositions - que la bibliothèque est utilisée dans un programme GUI, quel cadre GUI est utilisé, quelle langue l'utilisateur comprend, etc. , faux faux.

2

Je dirais que c'est une mauvaise idée. Pour un exemple de classe de bibliothèque non-visuelle, jetez un oeil à QFile. Lors de son utilisation, il renvoie l'état d'erreur en tant que valeurs de retour (par exemple if (! Fichier.open (mode ...))), puis conserve la dernière erreur en tant qu'enum (http://doc.trolltech.com/4.6/qfile.html#error) et en tant qu'erreur lisible par l'utilisateur string (http://doc.trolltech.com/4.6/qiodevice.html#errorString) que votre application peut utiliser pour afficher facilement une boîte de dialogue, l'imprimer sur une console ou l'ajouter à un journal, etc.

Comme vous pouvez le voir, cette approche donne à l'application le pouvoir de décider comment gérer le message d'erreur - au lieu que la bibliothèque fasse ce qu'elle sent bon pour le moment.

2

Dans théorie, si c'est juste utilisé dans une application spécifique que vous savez sera utilisé uniquement avec une interface graphique, alors il n'y a pas de mal à cela.

Mais la dure réalité est que les bibliothèques auront tendance à devenir de plus en plus génériques et que vous en aurez besoin dans toutes sortes d'applications, pas seulement celles basées sur l'interface graphique. Donc, vous pourriez aussi bien planifier et interdire les boîtes de dialogue dans la bibliothèque et simplement gérer les rapports d'erreurs d'une autre manière.

2

Voici ce que je pense: Cela dépend de l'objectif principal de votre bibliothèque de classes si c'est un module d'interface utilisateur qui fournit certaines fonctionnalités de l'interface utilisateur, il devrait y avoir des boîtes de dialogue et des formulaires, etc. fournir certains services (business ou accès aux données) à d'autres parties de votre application, il ne devrait y avoir aucun élément d'interface utilisateur dans votre bibliothèque.

Questions connexes