2010-07-31 15 views
1

Salutations,Anonyme Méthodes trop de bonne chose? (C#)

Je travaille dans une base de code qui utilise beaucoup de méthodes anonymes, où les méthodes anonymes enchaînent d'autres méthodes anonymes qui appellent la même chose que la première appelle.

main() 
{ 
anonymous1(); 
} 
anonymous1() 
{ 
    // call anonymous2 
} 
anonymous2() 
{ 
//call anonymous3 
} 
anonymous3() 
{ 
    // Call anonymous1 
} 

c'est la panne de base, désolé pour la simplification. Mon problème est que l'une des méthodes anonymes causent des problèmes à enchaîner les appels comme ça. IMO il semble que c'est juste une mauvaise récursion qui va provoquer une exception stackoverflow.

Merci pour votre aide à l'avance.

Répondre

2

Tout dépendra de la façon dont vous implémentez la logique.

La récursivité en elle-même n'est pas et ne devrait pas poser de problème.

On pourrait soutenir la même chose à propos de n'importe quel algorithme de fichier/dossier qui utilise la récursivité. Si c'est bien implémenté, vous n'avez rien à craindre.

0

À moins que le compilateur ou l'optimiseur JIT applique l'optimisation des appels récursifs (ce qui probablement ne, à moins que vous utilisez la version CLR .NET 4 en mode non-debug et votre code spécifique permet que type d'optimisation), la récursion porte évidemment le risque potentiel d'un débordement de la pile.

La question est, fait que le code recurse? Et si c'est le cas, cela s'arrête-t-il assez vite ou se répétera-t-il indéfiniment? Vous ne devriez vous attendre à de vrais problèmes que dans les derniers cas. Ainsi, je suis d'accord avec la réponse d'elysium dévoré que cela dépend finalement de la logique.

Probablement le code que vous avez là pourrait être mieux structuré - mais c'est impossible de juger sans quelque chose de plus concret à regarder, à mon humble avis.

0

Ce ne sont pas vraiment les méthodes anonymes qui sont le problème, même si elles sont anonymes peuvent rendre les choses un peu plus difficiles à suivre. Le code dans les méthodes elles-mêmes est ce qui causerait un stackoverflow ou d'autres types de problèmes. Tant que le code est aussi clair que possible et qu'il accomplit bien sa tâche, vous n'avez pas vraiment besoin de vous préoccuper de la structure.

Il n'y a rien de mal avec la récursivité, et vous pouvez apaiser tous vos doutes avec quelques tests et la contemplation de vos besoins.