2009-03-24 4 views
2

Ich schreibe eine leichte IDE. Ich wählte Ruby + Gtk2 für die Aufgabe. Ich habe bereits einen minimalen Prototyp dafür, aber im Moment ist der meiste Code in meiner Fensterklasse. Ich werde bald anfangen, an dem "echten Deal" zu arbeiten, aber ich würde gerne wissen, welche Designmuster ich verwenden sollte. Ich plane auch Plugin-Unterstützung, damit die App erweiterbar ist. Irgendwelche Ideen sind willkommen, aber bitte besprechen Sie Ihre Wahl ein wenig.Welche Entwurfsmuster sollte ich für eine Lightweight-IDE verwenden?

Bitte beachten Sie, dass dies eine Skriptsprache ist. Ich bin mir nicht sicher, ob alle Entwurfsmuster von Java hier zutreffen.

Antwort

1

Ich bin mir nicht sicher, ob dies viel helfen wird, aber das Buch "Design Patterns in Ruby" spricht über Designmuster in Ruby und wie sie sich von Javas Designmustern unterscheiden könnten.

5

Entwurfsmuster sind Lösungen für allgemeine Probleme. Welche Probleme haben Sie? In der Beratungsarbeit sehen wir oft, wenn jemand sagt: "Okay, hier ist meine Idee. Welche Designmuster kann ich anwenden?", Die Architektur wird sehr schnell sehr kompliziert.

Statt für Design-Muster zu suchen, die Sie möglicherweise verwenden könnten, auf Entwurfsmuster lesen, (I Hass auf Wikipedia verlinken, aber their article hat eine gute Liste haben Sie mit zumindest auf andere sucht den Einstieg) und dann wenden Sie sie an, wenn Sie ein Problem haben, das ihren Kriterien entspricht.

Soweit viel Code in Ihrer Fensterklasse, das kann für Ihre Anwendung geeignet sein, oder Sie möchten etwas wie ein losen MVC-Muster aussehen. Im Allgemeinen wird für die GUI-Programmierung eine starre MVC zu streng sein und zu viel Arbeit für eine "echte" Trennung von Problemen erfordern.

Es gibt viele allgemeine Probleme, die ohne Entwurfsmuster gelöst werden können, und das bedeutet nicht, dass die Lösung richtig oder falsch ist. Plugin-Unterstützung wird zum Beispiel sehr oft nur durch die Bereitstellung einer Plugin-Schnittstelle oder einer Reihe von Ereignissen gegeben, auf die ein Plugin reagieren kann. Alternativ können Sie das Adaptermuster betrachten.

+0

+1 für die grundlegende Definition von Entwurfsmustern. – strager

+0

Ich denke etwas in der Perspektive. Die Tatsache, dass ich viel Code in meiner Fensterklasse habe, scheint mir eine ziemlich schlechte Übung zu sein, denn wenn ich es so halte, wird es meiner Meinung nach schwieriger sein, es zu pflegen. – Geo

+0

In diesem Fall ist das Problem möglicherweise nicht ein Mangel an Designmustern an sich, sondern eher ein insgesamt schlecht geeignetes Design. Können Sie einen Beispielcode posten (entweder hier oder in einem neuen Thread)? – JoshJordan

1

Vergessen Sie auch nicht, vorhandene IDEs auszuchecken. Was haben sie benutzt?

Da die Bearbeitung eine Komponente Ihrer IDE ist, sollten Sie die tatsächlichen Open-Source-Editoren überprüfen.

+0

Ich verstehe nicht ganz, was Sie meinen, "die Bearbeitung wird eine Komponente Ihrer IDE sein" – Geo

+0

Nun, unter anderem IDEs können Sie Code bearbeiten. Eine IDE wird also in der Regel einen Editor enthalten. –

+0

Ich denke, das ist selbstverständlich, oder? – Geo

1

Nur um ein mögliches Missverständnis zu klären: Beziehen Sie sich vielleicht auf UI patterns (im Gegensatz zu Software-Architektur Entwurfsmuster)? Ihre Frage scheint mir auf diese Weise sinnvoller zu sein.

+0

Sie sind immer noch Design-Muster, oder? – Geo

+0

Auch diese UI-Muster scheinen mit der Webentwicklung zu tun zu haben. – Geo

+0

Es hängt davon ab, was Sie mit Design meinen. Aus Sicht der Softwaretechnik bedeutet "Design" die OO-Klassenstruktur oder die Gesamtsystemarchitektur (obwohl man argumentieren könnte, dass Design und Architektur getrennt sind). Aus der Sicht der Web-Entwicklung ist es in der Luft. – JoshJordan

1

Ich bin mir nicht sicher, ob dies angemessen ist, aber es gibt ein nettes Buch über die Erstellung einer IDE in C# &. Das Buch diskutiert die Entwurfsmuster, die zur Entwicklung der Sharp Develop IDE verwendet werden. SharpDevelop ist eine nette IDE & es ist Open-Source, die Sie einen Blick auf this book & home page für Sharp Develop haben möchten.

0

Der beste Weg, eine rubin GUI-Anwendung zu entwerfen ist visualruby zu verwenden:

http://visualruby.net

Sie Ihre GUI von Ihren Klassen völlig getrennt machen.Zum Beispiel, Wenn Sie eine GUI für die folgende Klasse erstellen möchten, können Sie es leicht tun, ohne sie zu stören:

class DataObject 

    def initialize(name, address, email, phone) 
    @name = name 
    @address = address 
    @email = email 
    @phone = phone 
    end 

end 

Sie erstellen eine GUI für diese Klasse von Subklassen es, und das Hinzufügen der GUI:

class DataObjectGUI < DataObject 

    include GladeGUI 

    def show() 
    load_glade(__FILE__) #loads glade/DataObjectGUI.glade into @builder 
    set_glade_all() #populates glade controls with insance variables from DataObject 
    show_window() 
    end 

end 

Die GladeGUI-Schnittstelle enthält alle GUI-Magie. Die Methode load_glade() lädt die Datei DataObject.glade. Dies ist ein Lichtformular, das Gtk :: EntryBoxes namens, Name, Adresse, Telefon und E-Mail enthält. Das Formular wird auf dem Bildschirm mit allen ausgefüllten Feldern angezeigt.

Offensichtlich wird das Fenster show_window() auf dem Bildschirm erscheinen. Das Zerstörungsfenster wird automatisch von GladeGUI aufgerufen, wenn Sie auf die Schaltfläche "x" klicken.

Dieses Designmuster kann für jede Klasse verwendet werden. Ein gutes Beispiel ist, wenn Sie eine ActiveRecord-Klasse haben und den Datensatz auf dem Bildschirm anzeigen möchten. Du unterscheidest einfach wie oben, und es ist editierbar und speicherbar.

Dieses Beispiel stammt aus einem der Beispielprojekte auf visualruby.net.

+0

Hallo, obwohl dies eine umfassende Beschreibung von VisualRuby ist, ist es nicht wirklich eine Antwort auf die Frage - das ist kein "Design Pattern" wie das OP gemeint. – ptomato