2010-08-26 2 views
1

Je voudrais savoir s'il existe un consensus sur ce qui est une meilleure pratique dans ce type d'énoncé général.Problème stylistique - pour séparer les fonctions ou non?

if(CouldDoSomething()) 
    DoThatThing(); 
else 
    WriteErrors(GetTheErrorsThatWouldHaveResulted()); 

Cela peut nécessiter deux fois plus de travail .as vous devez vérifier les problèmes potentiels, alors soit faire la chose que vous vouliez faire ou revenir en arrière et obtenir des messages d'erreur.
Il faut également 3 fonctions distinctes:
CouldDoSomethingDoThatThing et GetTheErrorsThatWouldHaveResulted

alors

string errorString=TryToDoSomeThing(); 
if(!string.isNullOrEmpty(errorString)) 
    WriteErrors(errorString); 

Peut semble pas être aussi propre, mais ne nécessite qu'une seule fonction TryToDoSomething, ce qui signifie moins de frais généraux. Il n'est pas nécessaire de répéter les opérations pour vérifier si vous pouvez faire cela, ou pour trouver les erreurs qui en résulteraient si vous deviez le faire.

Il peut y avoir encore plus de façons de le faire, comme avec try/catch blocks. Quelles sont vos préférences personnelles? Y a-t-il un consensus sur ce type de question?

Répondre

1

si elle ressemble à exception, vous devez utiliser try/catch de style

s'il est vrai/faux (et pas d'évolution en fonction), vous pouvez renvoyer le drapeau de résultat. renvoyer la chaîne d'erreur n'est pas si bon décidément pour autant que je peux voir.

+0

Si vous analysez l'entrée d'un utilisateur, ne voudriez-vous pas lui envoyer des messages concernant certaines/toutes les erreurs qu'il a commises? – user420667

+0

Qu'est-ce qui pourrait me refuser de le faire avec des exceptions? – bobrik

+0

Vous pourriez le faire, mais alors vous obtiendrez seulement une exception à la fois (je pense) qui ne peut être souhaitable. De même, si vous utilisez des exceptions, vous êtes obligé d'utiliser le bloc try/catch et vous ne pouvez effectuer aucune des deux autres options. Je voudrais plus d'une justification que de faire ceci ou cela. – user420667

Questions connexes