2009-05-21 17 views
12

Ich beginne mit einem neuen Projekt - soll ich mir meine Spezifikation ansehen und entscheiden, welche Designmuster angewendet werden sollen, oder einfach eine allgemeine Idee der Organisation aufstellen und die Muster organisch durch Refactoring entstehen lassen?Was sollte zuerst kommen - das Designmuster oder der Code?

Welche Technik wird Ihrer Erfahrung nach am produktivsten sein und eine größere Chance haben, zu sauberem, elegantem Code zu führen?

Ich frage mich auch, ob es Designmuster gibt, die nicht von der GoF definiert werden, aber genauso wertvoll sein könnten? Wenn ja, über welche nützlichen Ressourcen kann ich mich informieren?

Antwort

18

Sie sollten Ihren Code organisch wachsen und Muster so anwenden, wie sie passen. Ein zu frühes Zuordnen zu Mustern kann zu viel unangemessenem Code und so vielen Abstraktionsschichten führen, dass das Design verschleiert wird. Zeuge jeder Code, den Sie gesehen haben, nachdem jemand Muster zum ersten Mal entdeckt hatte ;-)

3
  • Herauszufinden, Anwendungsfälle.
  • Denken Sie an Design, das das vorhandene Designmuster durchschaut.
  • Beginnen Sie zu implementieren.
  • Ich glaube, das Hauptziel hier ist es zu vermeiden, das Rad neu zu erfinden.

    PS. Nachdem Sie Schritt 2 für einige Zeit übergeben und sich daran gewöhnen, können Sie diesen Schritt in Schritt 3 integrieren.

    6

    Es sei denn, ein Muster scheint offensichtlich aus der Spezifikation springen, würde ich nicht unbedingt versuchen um etwas von GoF auszuwählen und das Problem zu hämmern, bis es zum Muster passt.

    Es ist besser, die verschiedenen Ebenen der Abstraktion in Ihrem Kopf zu verstehen und einen Plan (nicht unbedingt ein beliebtes Designmuster) zu entwickeln, wie Sie ihn implementieren. Das ist etwas, was Sie mit Erfahrung besser machen werden. Während Sie wissen, dass die GoF-Patterns Ihnen helfen, Ihre Probleme beim Code-Design besser zu verstehen, sind sie nicht als Lösungen für jedes Problem gedacht. Ihr Problem künstlich in ein Designmuster zu integrieren, kann unnötige Komplikationen und Verschleierung bedeuten.

    0

    Sie sollten wissen, welche Muster zu dem Problem passen würden, bevor Sie mit dem Codieren beginnen. Wenn nicht, machen Sie einen Prototyp, damit Sie verstehen, was Sie erreichen wollen. Dann suchen Sie nach Mustern und werfen Sie die Struktur des Prototyps weg (und verwenden Sie die guten Bits wieder).

    2

    Wenn ich jemals unsicher bin, fange ich einfach an, Code zu schreiben. Zu lange wird die Struktur um etwas Refactoring betteln und die Wahl ist fast immer offensichtlich.

    Obwohl ich manchmal von einem bestimmten Muster inspiriert bin, ist es fast immer der Code, der mir den richtigen Weg zeigt.

    Ich habe auch keine Angst, Teile eines Programms zu verbrennen und neu zu erstellen. Es gibt ein Zitat, das mir von Scott Adams sehr gefällt: "Kreativität lässt zu, dass man Fehler macht; Kunst weiß, welche man behalten muss." Manchmal ist die richtige Antwort nicht offensichtlich, bis Sie es falsch versuchen.

    0

    Guter Rat hier schon. Um die Frage nach nützlichen Mustern außer dem GoF-Buch zu beantworten. Es gibt, sollten Sie sich Larmans Anwenden von UML und Mustern anschauen, wo er GRASP-Muster beschreibt.

    1

    Ich würde Ihre Musterung zu sehr durch Musterentwurf Muster verwenden. Es ist besser, einfach Code zu machen und wenn nötig refactor towards a design pattern, die dann Ihre Anforderungen am besten erfasst.

    1

    Sie sollten Ihren Code organisch wachsen und Muster so anwenden, wie sie passen.

    abgeordnet! Einige der schlimmsten Spaghetti, die ich gesehen habe, sind OO C++ mit vielen Mustern. Fluxbox ist kaum auszuhalten; Synergy (v2) aufkochen, brät und backt meine Nudel :(

    Und einige der schönsten Code, den ich gesehen habe, ist OO C, wo die OO war zwei Schnittstellen plus 4 und 20 Implementierungen sind.

    Verwandte Themen