Als «solid» getaggte Fragen

Mnemonik für eine Reihe von Entwurfsprinzipien: Einzelverantwortung, Offen-Geschlossen, Liskov-Substitution, Schnittstellentrennung, Abhängigkeitsinversion

5
Ist der semantische Vertrag einer Schnittstelle (OOP) aussagekräftiger als eine Funktionssignatur (FP)?
Einige sagen, wenn Sie SOLID-Prinzipien auf die Spitze treiben, landen Sie in der funktionalen Programmierung . Ich bin mit diesem Artikel einverstanden, aber ich denke, dass einige Semantiken beim Übergang von der Schnittstelle / dem Objekt zur Funktion / zum Abschluss verloren gehen, und ich möchte wissen, wie funktionale Programmierung …

5
Wie wende ich das Prinzip der Schnittstellentrennung in C an?
Ich habe ein Modul, sagen Sie "M", das ein paar Clients hat, sagen Sie "C1", "C2", "C3". Ich möchte den Namespace des Moduls M, dh die Deklarationen der von ihm verfügbar gemachten APIs und Daten, so in Header-Dateien unterteilen, dass: Für jeden Client sind nur die erforderlichen Daten und APIs …
15 c  interfaces  solid 

4
Erzwingt mich die testgetriebene Entwicklung, SOLID zu folgen?
Ich höre viel von TDD- Praktikern, dass einer der Vorteile von TDD darin besteht, dass Entwickler die SOLID- Prinzipien befolgen müssen (Einzelverantwortung, Open-Closed, Liskov-Substitution, Schnittstellentrennung und Abhängigkeitsinversion). Für mich ist es jedoch ausreichend, nur einige Tests zu schreiben (hauptsächlich Unit-Tests), um zu verstehen, dass es wichtig ist, SOLID zu folgen …


2
Prinzip der realen Welt - Liskov-Substitution
Hintergrund: Ich entwickle ein Messaging-Framework. Dieser Rahmen ermöglicht: Senden von Nachrichten über einen Servicebus Abonnieren von Warteschlangen auf dem Nachrichtenbus Abonnieren von Themen auf einem Nachrichtenbus Wir verwenden derzeit RabbitMQ, aber ich weiß, dass wir in naher Zukunft auf Microsoft Service Bus (on Premise) umsteigen werden. Ich plane, eine Reihe …

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 …



1
Wie verifiziere ich das Liskov-Substitutionsprinzip in einer Vererbungshierarchie?
Inspiriert von dieser Antwort: Liskov Substitutionsprinzip erfordert , dass Voraussetzungen können in einem Subtyp nicht gestärkt werden. Nachbedingungen können in einem Subtyp nicht abgeschwächt werden. Invarianten des Supertyps müssen in einem Subtyp erhalten bleiben. Verlaufsbeschränkung (die "Verlaufsregel"). Objekte gelten nur durch ihre Methoden als veränderbar (Kapselung). Da Subtypen Methoden einführen …

2
Stack erweitert LinkedList. Ein Verstoß gegen das Liskov-Substitutionsprinzip?
Es gibt eine Klasse LinkedList mit Funktionen wie add_first (), add_last (), add_after (), remove_first (), remove_last () und remove (). Jetzt gibt es einen Klassenstapel, der Funktionen wie push (), pop (), peek () oder top () bereitstellt. Um diese Methoden zu implementieren, werden die LinkedList-Klassenmethoden erweitert. Handelt es …


4
Verstoßen Mocks gegen das Open / Closed-Prinzip?
Vor einiger Zeit las ich auf einer Stapelüberlauf-Antwort, die ich nicht finden kann, einen Satz, der erklärte, dass Sie öffentliche APIs testen sollten, und der Autor sagte, dass Sie Schnittstellen testen sollten. Der Autor erklärte auch, dass bei einer Änderung der Methodenimplementierung der Testfall nicht geändert werden muss, da dies …

3
Prinzip der Abhängigkeitsumkehrung: Wie definieren Sie "Richtlinien auf hoher Ebene" und "Details auf niedriger Ebene" für andere Personen?
Ich versuche, meinen (meist jüngeren) Kollegen das Prinzip der Abhängigkeitsinversion zu erklären. Wie können wir definieren, welches die "High-Level-Policy" und welches das "Low-Level-Detail" in einer Software ist? Wenn unsere Software beispielsweise den Workflow mehrerer Geschäftsanwendungen automatisiert, warum ist die Workflow-Automatisierung dann die übergeordnete Richtlinie und die Geschäftsanwendungen sind die Details?

1
Ist das Einwickeln eines Drittanbieter-Codes die einzige Lösung, um seine Verbraucher einem Unit-Test zu unterziehen?
Ich mache Unit-Tests und in einer meiner Klassen muss ich eine Mail von einer der Methoden senden, also füge ich mit Hilfe der Konstruktorinjektion eine Instanz der Zend_MailKlasse ein, die im Zend-Framework ist. Nun argumentieren einige Leute, wenn eine Bibliothek stabil genug ist und sich nicht oft ändert, besteht keine …

3
SOLID-Prinzipien anwenden
Ich bin ziemlich neu in den SOLID- Designprinzipien. Ich verstehe ihre Gründe und Vorteile, aber ich kann sie nicht auf ein kleineres Projekt anwenden, das ich als praktische Übung zur Anwendung der SOLID-Prinzipien umgestalten möchte. Ich weiß, dass es nicht notwendig ist, eine perfekt funktionierende Anwendung zu ändern, aber ich …

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.