Dies könnte eine dumme Frage sein. Aber ich verstehe nicht, wenn der Zugriffsmodifikator auf public gesetzt werden sollte und welchen Unterschied es machen wird?Warum sollte ich für eine resx-Ressourcendatei einen internen oder öffentlichen Zugriffsmodifizierer verwenden?
Antwort
Das hängt von der encapsulation Ebene für Ihre Projekte/Lösungen ab, wenn Sie der Meinung sind, dass die Ressource eher intern verwendet wird, und richten Sie sie als protected/private/internal Ressource ein, wenn einige dieser Eigenschaften von einer externen Lösung konfiguriert und darauf zugegriffen werden kann/Projekt dann lass es öffentlich.
Kapselung ist gut, denken Sie nur über die Art und Weise, wie Sie externe Bibliotheken verbrauchen und wie sie Eigenschaften, Klassen, Konfigurationen verfügbar machen, das ist eine gute Übung zu tun. Denken Sie wie ein externer Entwickler, der nichts über Ihre Projektumsetzung weiß, können Sie sich die folgenden Fragen stellen:
- ist dieses Stück Code wert zu externen Entwicklern, darüber zu wissen?
- brauche ich eine Vorkonfiguration für diesen Code?
- ist meine Implementierung klar genug, so dass jeder es nur durch die Code-Implementierung verstehen?
- Erzwingt der Code bestimmte Richtlinien/Anforderungen?
- hat mein Code obskure Implementierungen?
für mich zum Beispiel über IOC sprechen, könnte Setter Injektion ein wenig dunkel sein
Setter Injektion ist nur eine Set-Eigenschaft Erstellen einer Abhängigkeit von einer zuvor instanzierte Objekt zu ersetzen. Ich mag es nicht Setter Injection, weil es zusätzliche erfordert, versteckte Schritte ein Objekt zur Vorbereitung
Blick auf this post zu erhalten den vollständigen Kontext als Beispiel auszuführen, aber auch dies ist nur ein Beispiel.
- 1. Warum sollte ich Code Contracts in öffentlichen Methoden verwenden?
- 2. Warum sollte ich einen Editor für Git-Commit-Nachrichten verwenden?
- 3. Wann/warum sollte ich eine Datenbank verwenden?
- 4. Sollte ich einen LINQ DataContext oder viele verwenden?
- 5. Warum sollte ich glBindAttribLocation verwenden?
- 6. Warum sollte ich eine Domain für l18n verwenden?
- 7. Wenn ich Unterstützung für Paginierung benötige, sollte ich einen ListView oder einen Repeater verwenden?
- 8. Sollte ich SqlGeometry oder SqlGeography verwenden?
- 9. Warum sollte ich nicht blockierende oder blockierende Sockets verwenden?
- 10. Client Benachrichtigung, sollte ich einen AJAX Push oder Poll verwenden?
- 11. Sollte ich ein serverseitiges Skript oder einen Webdienst verwenden?
- 12. therubyracer oder nodejs, welche sollte ich verwenden?
- 13. Sollte ich Path.GetRandomFileName verwenden oder eine Guid verwenden?
- 14. Sollte ich eine Deskriptorklasse oder eine Eigenschaftenfabrik verwenden?
- 15. Warum sollte ich UNIVERSAL :: isa nicht verwenden?
- 16. Sollte ich Typklassen verwenden oder nicht?
- 17. Warum sollte man die öffentlichen Konstruktoren für Boolesche und ähnliche unveränderliche Klassen verwenden?
- 18. Warum sollte ich nicht Unity verwenden?
- 19. Warum sollte ich Struts lernen und verwenden?
- 20. Sollte ich WPF-Konverter oder Trigger verwenden?
- 21. Sollte ich mb_ * oder iconv_ * Funktionen für Multibyte-Strings verwenden?
- 22. Sollte ich Pickle oder cPickle verwenden?
- 23. sollte ich "Set" oder "Liste" verwenden
- 24. Sollte ich em oder px verwenden?
- 25. Sollte ich ReAllocHGlobal oder FreeHGlobal/AllocHGlobal verwenden?
- 26. Sollte ich process.nextTick oder setImmediate für asynchrone Iteration verwenden?
- 27. Warum sollte ich easyXDM für einfaches domainübergreifendes Messaging verwenden?
- 28. Sollte ich FxCop verwenden und warum?
- 29. Welchen STL-Container sollte ich für einen FIFO verwenden?
- 30. Warum sollte ich Java-Container verwenden?