In meinem aktuellen Projekt verwende ich FxCop, um verschiedene Codeanalysewarnungen durchzuarbeiten. Für die Namensregeln habe ich die Möglichkeit, entweder die Namen so zu ändern, dass sie den Regeln entsprechen, oder die Entscheidung zu treffen, meine aktuelle Schreibweise beizubehalten und die Warnung zu unterdrücken. In Bezug auf Klassen oder Attribute, die als [Serializable]
markiert sind, interessieren mich die Auswirkungen von Namensänderungen. Insbesondere, wie würde die Rückwärtskompatibilität mit existierenden serialisierten Daten beeinflusst werden?Serialisierbare Klassen und Refactoring von Namen
Antwort
Wenn Sie die Feldnamen ändern und müssen alte Daten serialisiert, bevor Sie Ihre Änderungen lesen, dann könnte es chaotisch. BinaryFormatter
ist weitgehend ein Feld (Name) -based Serializer, und es wird nicht glücklich sein. Das Ändern von Eigenschaften und Methoden sollte in Ordnung sein, solange kein externer Code darauf verweist (und stellen Sie sicher, dass Sie Ihre Komponententests ausführen). Lebensfähige Optionen an diesem Punkt: manuelle Serialisierung (ISerializable
) und Serialisierungssurrogate. Viel Schmerz.
Wenn Sie XmlSerializer
/DataContractSerialializer
verwenden, dann können Sie den Serialisierungsnamen getrennt für den Mitgliedsnamen benennen, so wirklich einfach zu beheben. Und einige andere Serializer verwenden, um Namen überhaupt nicht zu ;-p
XmlSerializer
Beispiel:
[XmlElement("Color")] // original spelling
public string Colour {get;set;} // now with the correct spelling ;-p
- 1. Refactoring Service Layer-Klassen
- 2. Refactoring zwei grundlegende Klassen
- 3. SQL Refactoring - Eindeutige Namen für UniqueIdentifiers
- 4. C++ Refactoring, um allen Klassen und Funktionen einen Namensraum hinzuzufügen?
- 5. Serialisierbare Klassensammlungen
- 6. Serialisierbare Klasse
- 7. Werkzeuge und Techniken zum Refactoring CSS
- 8. Java: JPA-Klassen, Refactoring von Datum bis Datetime
- 9. Serialisierbare Objekte mit MarshalByRefObject Felder
- 10. Namenskonventionen für serialisierbare JSON-Variablen
- 11. ASP.NET MVC-Ansichten sehen keine Klassen nach massivem Refactoring
- 12. Serialisierbare Klasse mit Korotinen?
- 13. Python serialisierbare Objekte JSON
- 14. Mono, serialisierbare Objekte mit MarshalByRefObject
- 15. Refactoring abgeleitete Klassen Methoden zu gemeinsamen Basisklasse Methode? (C#)
- 16. Refactoring - Codebeispiele vor und nach
- 17. Refactoring einer Klasse
- 18. Statische/starke Typisierung und Refactoring
- 19. Code-Review und Refactoring automatisieren
- 20. Refactoring mit Lambda's und Delegaten
- 21. C-Stil-Logik und Refactoring
- 22. Refactoring Guard Klauseln
- 23. Parsing und Speichern von Klassen
- 24. Ruby Refactoring in Vim
- 25. Importieren Sie Klassen mit dem gleichen Namen
- 26. Vorbeugende Tools für Tippfehler in Klassen- und ID-Namen
- 27. Klassen und Namespaces den gleichen Namen in C++ teilen
- 28. PHP zeigt Namen aller deklarierten Klassen?
- 29. .NET Refactoring, DRY. duale Vererbung, Datenzugriff und Trennung von Bedenken
- 30. Ändern von Tags und Klassen