Frage

Welche Prinzipien folgen Sie in der Regel, wenn Class-Design zu tun?

War es hilfreich?

Lösung

Prinzipien der objektorientierten Klasse-Design (die "SOLID" Grundsätze)

  • SRP: Die einzige Verantwortung Prinzip Eine Klasse sollte man haben, und nur ein Grund zu ändern.
  • OCP: Das Open-Closed-Prinzip Sie sollte eine Klasse erweitern kann, Verhalten, ohne es zu ändern.
  • LSP: Die Liskov Auswechslung Prinzip Abgeleitete Klassen müssen substituierbar ihre Basis Klassen.
  • ISP: Die Schnittstelle Segregations Prinzip feinkörnige Schnittstellen, die Client-spezifisch sind.
  • DIP: Die Abhängigkeit Inversion Prinzip Verlassen Sie sich auf Abstraktionen, nicht auf concretions.

Quelle: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Andere Tipps

Vergessen Sie nicht, das Gesetz von Demeter .

Die S.O.L.I.D. Grundsätze .
Oder zumindest versuche ich nicht weg viel von ihnen zu steuern.

Die grundlegendste Entwurfsmuster sollte KISS sein (halten Sie es einfach dumm) Was bedeutet, dass manchmal nicht Klassen für einige Elemente überhaupt mit ihm die richtige Lösung.

Das und CRC (Klasse, Verantwortung, Mitarbeiter) Karten (schreiben Sie die Karte in Ihren Header-Dateien ab, nicht auf einem tatsächlichen Karten auf diese Weise sie, weil leicht zu verstehen Dokumentation zu)

Wie oben erwähnt, einige der grundlegenden objektorientierten Designprinzipien sind OCP, LSP, DIP und ISP.

Eine ausgezeichnete Übersicht über diese von Robert C. Martin (von Object Mentor) finden Sie hier:

Die " Ressourcen Acquisition Ist Initialisierung " Paradigma ist praktisch, vor allem, wenn in C ++ zu schreiben und Umgang mit Betriebssystem-Ressourcen (Datei-Handles, Häfen, usw.).

Ein wesentlicher Vorteil dieses Ansatzes besteht darin, dass ein Objekt, einmal erstellt, „vollständig“ ist - es gibt keine Notwendigkeit für eine zweiphasige Initialisierung ist und keine Möglichkeit, teilweise initialisierte Objekte.

lose gekoppelten, hochkohäsiv.

Zusammensetzung über Vererbung.

Domain Driven Design ist in der Regel ein gutes Prinzip zu folgen.

Im Grunde ich weg mit der Programmierung Schnittstellen. Ich versuche, das zu kapseln, die Fälle ändert sich durch den Code Doppelarbeit zu vermeiden und Code in überschaubarer zu isolieren (für mein Gehirn) Brocken. Später, wenn ich brauche, kann ich dann den Code ganz einfach Refactoring.

SOLID Prinzipien und Liskov der Muster, zusammen mit Einzel Verantwortung Mustern.

Eine Sache, die ich alle diese hinzufügen möchte ist Schichtung, definieren Schichten in der Anwendung, die die Gesamtverantwortung einer Schicht, sie Art und Weise zwei Schichten zusammenwirken. Nur Klassen, die die gleiche Verantwortung wie die der Schicht sollte in dieser Schicht erlaubt werden. Dadurch viel Chaos aufgelöst wird, sorgt dafür, Ausnahmen entsprechend behandelt werden, und es stellt sicher, dass neue Entwickler wissen, wo ihre Code zu platzieren.

Eine weitere Möglichkeit, zu gestalten ist von der Klasse der Gestaltung konfigurierbar zu sein, einen Mechanismus zu schaffen, wo die Konfiguration in Ihrer Klasse gesteckt werden, anstatt Methoden in Unterklassen überschreiben, zu identifizieren, was ändert, zu sehen, ob das konfigurierbar gemacht werden kann, und stellt sicher, dass diese Funktionalität wird von Konfigurationen abgeleitet

Ich versuche, in der Regel die Klasse in einer der oo Entwurfsmuster zu passen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top