Als «class-design» getaggte Fragen

Allgemeine Richtlinien zum Entwerfen von Klassen mit den bekanntesten Branchenpraktiken.

5
Wie kann man einen Konstruktor zerlegen?
Nehmen wir an, ich habe eine Enemy-Klasse und der Konstruktor würde ungefähr so ​​aussehen: public Enemy(String name, float width, float height, Vector2 position, float speed, int maxHp, int attackDamage, int defense... etc.){} Das sieht schlecht aus, weil der Konstruktor so viele Parameter hat, aber wenn ich eine Enemy-Instanz erstelle, muss …


7
Welche Idee steckt hinter der Benennung von Klassen mit dem Suffix "Info", z. B. "SomeClass" und "SomeClassInfo"?
Ich arbeite in einem Projekt, das sich mit physischen Geräten befasst, und ich war verwirrt, wie ich einige Klassen in diesem Projekt richtig benennen soll. Angesichts der Tatsache, dass die tatsächlichen Geräte (Sensoren und Empfänger) eine Sache sind und ihre Darstellung in der Software eine andere, denke ich darüber nach, …

4
Warum sollte ein Java-Objekt nicht über die Implementierung (HashMap), sondern über die Schnittstelle (z. B. Map) definiert werden?
In den meisten Java-Codes werden Java-Objekte folgendermaßen deklariert: Map<String, String> hashMap = new HashMap<>(); List<String> list = new ArrayList<>(); Anstatt von: HashMap<String, String> hashMap = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); Warum wird das Java-Objekt vorzugsweise über die Schnittstelle definiert, anstatt über die Implementierung, die tatsächlich verwendet wird?

7
Ab wann werden unveränderliche Klassen zur Last?
Beim Entwerfen von Klassen, die Ihr Datenmodell enthalten sollen, kann es hilfreich sein, unveränderliche Objekte zu erstellen. Ab wann wird die Belastung durch Konstruktorparameterlisten und tiefe Kopien jedoch zu groß, und Sie müssen die unveränderliche Einschränkung aufgeben? Zum Beispiel ist hier eine unveränderliche Klasse, um eine benannte Sache darzustellen (ich …

2
Zähmung der 'Utility Functions'-Klassen
In unserer Java-Codebasis sehe ich immer wieder folgendes Muster: /** This is a stateless utility class that groups useful foo-related operations, often with side effects. */ public class FooUtil { public int foo(...) {...} public void bar(...) {...} } /** This class does applied foo-related things. */ class FooSomething { …




4
Wie spezifisch sollte das Muster der Einzelverantwortung für Klassen sein?
Angenommen, Sie haben ein Konsolenspielprogramm, das alle Arten von Eingabe- / Ausgabemethoden für und von der Konsole bietet. Wäre es klug sein , sie alle in einem einzigen zu halten inputOutputKlasse oder sie brechen , um spezifischere Klassen nach unten wie startMenuIO, inGameIO, playerIO, gameBoardIOetc. , so dass jede Klasse …

5
Basisklassen als Fabriken?
Ich habe über das Wochenende etwas Code geschrieben und wollte eine Factory als statische Methode in einer Basisklasse schreiben. Meine Frage ist nur zu wissen, ob dies ein akzeptabler Ansatz ist. Mein Gefühl, dass dies möglicherweise nicht der Fall ist, beruht auf der Tatsache, dass die Basisklasse Kenntnisse über die …
14 c#  class-design 

3
Abstrakte Basisklasse mit Interfaces als Verhalten?
Ich muss eine Klassenhierarchie für mein C # -Projekt entwerfen. Grundsätzlich ähneln die Klassenfunktionen den WinForms-Klassen. Nehmen wir als Beispiel das WinForms-Toolkit. (Ich kann jedoch weder WinForms noch WPF verwenden.) Es gibt einige grundlegende Eigenschaften und Funktionen, die jede Klasse bereitstellen muss. Maße, Position, Farbe, Sichtbarkeit (wahr / falsch), Zeichenmethode …

2
Design: Objektmethode vs. Methode einer separaten Klasse, die Objekt als Parameter verwendet?
Ist es zum Beispiel besser, Folgendes zu tun: Pdf pdf = new Pdf(); pdf.Print(); oder: Pdf pdf = new Pdf(); PdfPrinter printer = new PdfPrinter(); printer.Print(pdf); Ein anderes Beispiel: Country m = new Country("Mexico"); double ratio = m.GetDebtToGDPRatio(); oder: Country m = new Country("Mexico"); Country us = new Country("US"); DebtStatistics …

4
Große Klasse mit einer Verantwortung
Ich habe eine 2500-Linien- CharacterKlasse, die: Verfolgt den internen Status des Charakters im Spiel. Lädt diesen Zustand und behält ihn bei. Verarbeitet ~ 30 eingehende Befehle (normalerweise = leitet sie an weiter Game, aber einige schreibgeschützte Befehle werden sofort beantwortet). Erhält ca. 80 Anrufe Gamebezüglich der durchgeführten Aktionen und der …

2
Soll ich einen berechneten Wert als Eigenschaft oder Methode verfügbar machen?
Ich habe eine C # -Klasse, die einen Inhaltstyp in einem Webinhaltsverwaltungssystem darstellt. Wir haben ein Feld, in das ein Webinhaltseditor eine HTML-Vorlage für die Darstellung des Objekts eingeben kann. Grundsätzlich wird die Handlebars-Syntax zum Ersetzen von Objekteigenschaftswerten in die HTML-Zeichenfolge verwendet: <h1>{{Title}}</h1><p>{{Message}}</p> Soll ich aus Sicht des Klassendesigns die …

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.