Comment vraiment "mal" sont des dépendances d'espace de noms cycliques au sein d'un même assemblage. Je comprends que l'utilisation de plusieurs assemblages change tout et que quelque chose comme ça ne compile pas, mais quel est le vrai risque de le faire dans un seul assemblage?Espaces de noms cycliques en C#
Répondre
Aucun risque du tout - n'hésitez pas à référencer tout ce que vous voulez dans le même assemblage. Cependant, cette approche rendra votre application fragile et difficile à mettre à l'échelle. Une meilleure approche consiste à essayer de garder vos composants aussi orthogonaux que possible. Ce que la langue et le compilateur vous permettent de faire n'est pas nécessairement ce qui est le mieux pour les besoins de développement à long terme (corrections de bugs, mise à l'échelle, nouvelles fonctionnalités, etc.). Vous devriez vous battre pour loose coupling and high cohesion.
Les espaces de noms sont un moyen de fournir une organisation logique à votre code. Ils fournissent un moyen de réutiliser les noms en l'appliquant dans un certain contexte. Il n'y a rien de mal à ce que les classes de deux espaces de noms dépendent les unes des autres.
Les déphasages cycliques dans les assemblages sont un peu plus complexes. Dernière fois que j'ai vérifié Visual Studio ne permettrait pas ce type de relation directement.
Je ne pense pas qu'il y ait des risques en soi, et dans certains cas, c'est certainement la façon naturelle de faire les choses. System.Text.StringBuilder
utilise évidemment System.String
, et je serais très surpris si rien dans l'espace de noms System
utilisé StringBuilder
à son tour.
Il est probablement utile de vérifier votre conception de temps en temps: vous devez savoir si vous pouvez séparer la fonctionnalité en composants distincts. Assez souvent la réponse sera "non", à quel point juste aller de l'avant sans sentiment de culpabilité :)
- 1. Espaces de noms et sous-espaces de noms
- 2. Espaces de noms C++: utilisation croisée
- 3. Comment désérialiser des espaces de noms XML en C# (System.Xml.Serialization)?
- 4. Espaces de noms OpemXML
- 5. Organisation des classes en espaces de noms
- 6. ANTLR v3 espaces de noms #
- 7. Espaces de noms Visual basic auto imports
- 8. espaces de noms XML explicites et implicites
- 9. Conventions de dénomination et espaces de noms
- 10. Substituer les espaces de noms dans gSOAP
- 11. VBScript, MSXML et espaces de noms
- 12. Analyse des espaces de noms XML?
- 13. espaces de noms et XPath spécifiques
- 14. Fonctions variables avec espaces de noms en PHP
- 15. espaces de noms (statiques) variables membres
- 16. commande d'attributs XML des espaces de noms
- 17. Fonctions et espaces de noms XSLT
- 18. changer les espaces de noms mediawiki?
- 19. Espaces de noms personnalisés avec Maven
- 20. Référencement des espaces de noms globalement?
- 21. espaces de noms et Utilisation des directives
- 22. Types de coercition dans différents espaces de noms avec disposition identique en C#
- 23. C++ en utilisant des espaces de noms pour éviter les longs chemins
- 24. Espaces de noms Linq manquants (Linq à sql, structure compacte)
- 25. Accéder à des variables d'autres espaces de noms
- 26. Comment compiler un fichier SWC avec plusieurs espaces de noms
- 27. Détection de dépendances cycliques avec Maven
- 28. Conception de table pour les dates cycliques
- 29. Utilisation de regex python pour extraire des espaces de noms à partir de sources C++
- 30. Collisions de répartition de la fonction Objective-C; Ou, comment réaliser des "espaces de noms"?
Compris, mais je ne parle que de quelques cas où l'utilisation de quelque chose comme une interface séparée n'est pas justifiée et serait exagéré. –
Alors dans ce cas, je ne crois pas que vous avez quelque chose à se préoccuper :) –