Als «class-design» getaggte Fragen

Allgemeine Richtlinien zum Entwerfen von Klassen mit den bekanntesten Branchenpraktiken.

16
Was ist bei der Anwendung des Grundsatzes der einheitlichen Verantwortung eine „Verantwortung“?
Es scheint ziemlich klar zu sein, dass "Prinzip der einheitlichen Verantwortung" nicht "nur eine Sache" bedeutet. Dafür sind Methoden da. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } Bob Martin sagt, dass "Klassen nur einen Grund haben …

9
Gibt es einen „echten“ Grund, warum Mehrfachvererbung gehasst wird?
Die Idee, mehrere Vererbungen in einer Sprache zu unterstützen, hat mir immer gefallen. Meistens wird jedoch absichtlich darauf verzichtet, und der vermeintliche "Ersatz" sind Schnittstellen. Interfaces decken einfach nicht den gleichen Grund ab, den Mehrfachvererbung hat, und diese Einschränkung kann gelegentlich zu mehr Boilerplate-Code führen. Der einzige Grund, den ich …










3
Optionale Parameter oder überladene Konstruktoren
Ich implementiere eine DelegateCommand, und als ich den oder die Konstruktoren implementieren wollte, hatte ich die folgenden zwei Entwurfsoptionen: 1: Mehrere überladene Konstruktoren public DelegateCommand(Action<T> execute) : this(execute, null) { } public DelegateCommand(Action<T> execute, Func<T, bool> canExecute) { this.execute = execute; this.canExecute = canExecute; } 2: Nur einen Konstruktor mit …

10
Können wir ohne Bauherren leben?
Angenommen, aus irgendeinem Grund werden alle Objekte auf diese Weise erstellt: $ obj = CLASS :: getInstance (). Dann injizieren wir Abhängigkeiten mit Setzern und starten die Initialisierung mit $ obj-> initInstance (); Gibt es echte Probleme oder Situationen, die nicht gelöst werden können, wenn wir überhaupt keine Konstruktoren verwenden? …


2
Ist es eine gute Idee, verschiedene Funktionssignaturen bereitzustellen, die dasselbe tun?
Hier ist eine C ++ - Klasse, die mit drei Werten erstellt wird. class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; Alle Parametertypen sind unterschiedlich. Ich könnte den Konstruktor überladen, damit die Reihenfolge keine Rolle spielt. class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.