Mnemonik für eine Reihe von Entwurfsprinzipien: Einzelverantwortung, Offen-Geschlossen, Liskov-Substitution, Schnittstellentrennung, Abhängigkeitsinversion
Beispiel Ich bin auf monolithischen Code gestoßen, der "alles" an einem Ort erledigt - Daten aus der Datenbank laden, HTML-Markup anzeigen und als Router / Controller / Aktion fungieren. Ich begann SRP anzuwenden, um Datenbankcode in eine eigene Datei zu verschieben, um bessere Namen für die Dinge zu erhalten, und …
Wenn Sie Circleextend habenEllipse , wird das Liskov-Substitutionsprinzip verletzt , da es eine Nachbedingung ändert: Sie können nämlich X und Y unabhängig voneinander festlegen, um eine Ellipse zu zeichnen, aber X muss für Kreise immer gleich Y sein. Aber liegt das Problem hier nicht darin, dass Circle der Untertyp einer …
Ich habe versucht, den Unterschied zwischen dem Open Closed Principle (OCP) und dem Dependency Inversion Princible (DIP) zu verstehen . Aufgrund meiner bisherigen Recherchen im Internet bin ich zu dem Schluss gekommen, dass DIP eine Option ist, mit der wir OCP erreichen können. Ich bin ich richtig? Können Sie mir …
Wikipedia sagt "Software-Entitäten (Klassen, Module, Funktionen usw.) sollten zur Erweiterung geöffnet, zur Änderung jedoch geschlossen sein" Das Wort Funktionen ist mir aufgefallen und ich frage mich jetzt, ob wir davon ausgehen können, dass das Erzeugen einer Überladung für eine Methode als Beispiel für das Open / Closed-Prinzip angesehen werden kann …
Nehmen wir an, wir haben die folgende Schnittstelle - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Voraussetzung ist, dass ConnectionString gesetzt / initialisiert wird, bevor eine der Methoden ausgeführt werden kann. Diese Voraussetzung kann etwas erreicht …
Hier ist ein Problem, auf das ich häufig stoße: Es soll ein Webshop-Projekt mit einer Produktklasse geben. Ich möchte eine Funktion hinzufügen, mit der Benutzer Bewertungen zu einem Produkt veröffentlichen können. Ich habe also eine Review-Klasse, die auf ein Produkt verweist. Jetzt brauche ich eine Methode, die alle Bewertungen zu …
In diesem Sinne gibt es bereits eine ziemlich hilfreiche Frage (" Nicht-OOP-Entwurfsmuster? "), Aber ich bin neugieriger auf eine Übergangsperspektive für jemanden, der gerade erst mit dynamischen und schwach typisierten Sprachen anfängt. Das heißt: Nehmen wir an, ich programmiere seit vielen Jahren in C ++, C # oder Java und …
Da das Prinzip der Schnittstellentrennung vorschlägt, sollte kein Client gezwungen werden, sich auf Methoden zu verlassen, die er nicht verwendet. Daher sollte ein Client keine leere Methode für seine Schnittstellenmethoden implementieren, andernfalls sollte diese Schnittstellenmethode in eine andere Schnittstelle eingefügt werden. Aber wie wäre es mit konkreten Methoden? Sollte ich …
Ich mache Branchen-Apps, bei denen alle anderen Entwickler an grundlegende CRUD-Apps gewöhnt sind oder sich ausschließlich darauf konzentrieren, hübsche / funktionale Schnittstellen zu erstellen, und ich bekomme viel Folgendes. "Mit der Art und Weise, wie wir es machen, hätte der Mitarbeiter alles, was man mit einem Mitarbeiter machen könnte." Und …
Ich habe in letzter Zeit Clean Code und verschiedene Online-Artikel über SOLID gelesen. Je mehr ich darüber lese, desto mehr habe ich das Gefühl, nichts zu wissen. Angenommen, ich erstelle eine Webanwendung mit ASP.NET MVC 3. Angenommen, ich habe eine UsersControllermit einer CreateAktion wie dieser: public class UsersController : Controller …
Ich habe eine Klasse, die das jährliche Nettoeinkommen der Arbeiter berechnet. Es hat eine Konstante, die einen Steuerprozentsatz darstellt. Aber eines Tages hat sich der Steuersatz geändert, daher muss ich den Code korrigieren. Zeigt das Festlegen dieser Konstante einen Verstoß gegen das Open-Closed-Prinzip an , da postuliert wird, dass eine …
In dieser Reihe von Blog-Posts beschreibt Eric Lippert ein Problem im objektorientierten Design am Beispiel von Zauberern und Kriegern. abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } } …
Aus agiler Softwareentwicklung, Prinzipien, Mustern und Praktiken: Pearson New International Edition : Manchmal überschneiden sich die von verschiedenen Gruppen von Clients aufgerufenen Methoden. Wenn die Überlappung gering ist, sollten die Schnittstellen für die Gruppen getrennt bleiben. Die gemeinsamen Funktionen sollten in allen überlappenden Schnittstellen deklariert werden. Die Serverklasse erbt die …
Ich habe mich dazu entwickelt, ein Prinzip für das Entwerfen und Konsumieren von Schnittstellen zu verwenden, das im Grunde sagt: "Fragen Sie nur nach dem, was Sie brauchen." Wenn ich zum Beispiel eine Reihe von Typen habe, die gelöscht werden können, erstelle ich eine DeletableSchnittstelle: interface Deletable { void delete(); …
Geschlossen. Diese Frage ist nicht zum Thema . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so dass es beim Thema für Software Engineering Stapel Börse. Geschlossen vor 6 Jahren . Daher hatte ich kürzlich Vor-Ort-Interviews mit Google und Amazon und erhielt höfliche Ablehnungsschreiben, …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.