Mnemonik für eine Reihe von Entwurfsprinzipien: Einzelverantwortung, Offen-Geschlossen, Liskov-Substitution, Schnittstellentrennung, Abhängigkeitsinversion
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 …
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 …
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 …
Ich fange gerade mit RxJava an , Javas Implementierung von ReactiveX (auch bekannt als Rx und Reactive Extensions ). Was mich wirklich beeindruckt hat, war die enorme Größe der Flowable- Klasse von RxJava : Sie verfügt über 460 Methoden! Um fair zu sein: Es gibt viele Methoden, die überladen sind, …
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 …
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 …
Ich verstehe die Absicht des Open-Closed-Prinzips. Es soll das Risiko verringern, dass etwas beschädigt wird, das bereits funktioniert, während es geändert wird, indem Sie versuchen, es ohne Änderung zu erweitern. Ich hatte jedoch einige Probleme zu verstehen, wie dieses Prinzip in der Praxis angewendet wird. Meines Erachtens gibt es zwei …
Beim Lesen von Artikeln über ISP scheint es zwei widersprüchliche Definitionen von ISP zu geben: Nach der ersten Definition (siehe 1 , 2 , 3 ) sollten ISP-Klassen, die die Schnittstelle implementieren, nicht gezwungen werden, Funktionen zu implementieren, die sie nicht benötigen. Also fette SchnittstelleIFat interface IFat { void A(); …
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 …
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 …
Ich fange gerade an, SOLID zu erkunden, und bin mir nicht sicher, ob das Lesen von Dateien und das Schreiben in Dateien die gleiche Verantwortung haben. Das Ziel ist derselbe Dateityp. Ich möchte PDFs in meiner Anwendung lesen und schreiben. Die Anwendung ist in Python, wenn das einen Unterschied macht.
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 …
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?
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 …
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 …
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.