Class Generator bewerten



  • Hallo

    Ich habe mich mal an die Programmierung von GUIs versucht und nun ist mein erstes, bescheidenes, Projekt fertig. Ich würde mich freuen, wenn es sich mal jemand anschaut und kritisiert. Lob und vor allem Tadel sind natürlich willkommen und werden eventuell umgesetzt )kommt darauf an, ob ich es hin bekomme)

    Download: http://www.file-upload.net/download_05.11.06_vzil8g.zip.html

    Vielen Dank für eure Mühe

    chrische



  • Hm also ich habs nur mal ganz kurz getestet, aber das Proggie scheint mir "leicht" verbuggt zu sein. Ich weiß auch nicht mehr was ich jetzt ganz genau alles im Einzelnen gemacht habe, aber ich wollte mir nur eine einfache Klasse, mit einer Member-Variablen (int) generieren (ausserdem sollte auch ne .cpp Datei generiert werden). Zusätzliche sollte auch die ungarische Notation verwendet werden.
    Als ich dann generieren wollte ist das Programm mit ner Speicherschutzverletzung abgeraucht 😃
    Die Klasse wurde allerdings trotzdem erzeugt (aber ohne .h oder .hpp Endung, könnte auch daran liegen dass ich einfach nur den Name der Klasse zum Speichern angegeben habe, aber hätte halt erwartet, dass dann automatisch ne .h Datei erzeugt wird).
    Die Kommentare (Datum,Uhrzeit, Autor) hätte ich kompakter gehalten, aber ist wohl auch Geschmackssache.
    Was aber keine Geschmackssache ist, ist der Name der Getter Methode. Wenn ich meine Membervaribale "var" nenne, dann ist "Getm_nvar" als Name der Getter-Methode etwas unglücklich 😉

    Also ich hoffe du fasst das nicht negativ auf, aber in der Zeit in der ich mich bei dem Programm durchgeklicke um ne Klasse zu generieren, schreibe ich von Hand bestimmt 3 Klassen 😉 Zudem müsste ich dann das was generiert wird sowieso wieder meinen Bedürfnissen anpassen



  • Hallo

    Erstmal danke für's Testen. Die Speicherzugriffsverletzung kann ich mir nicht erklären. Vielleicht wäre es ja möglich diese zu reproduzieren.

    An den anderen beiden Punkten arbeite ich und werde nach Fertigstellung eine neue Version hochladen.

    Ich würde mich freuen, wenn sich noch weitere Tester finden würden.

    Das Tool sollte auch erstmal nur zum Probieren für mich sein und ich finde, dass man damit schneller Klassen erstellt als mit der Hand. Am Ende muss man aber wirklich noch etwas arbeiten, um alles genau anzupassen.

    Ich würde mich auch über Ideen für weitere Versionen freuen.

    chrische



  • Hallo,

    wenn ich einem der Felder (bis jetzt wars egal welches) Return drücke, dann füllt er den gesamten Fensterbereich weiss aus, eventuell Nachrichten für die Return Taste abfangen und nichts tun lasse oder so.

    Ein Rechtschreibfehler bei Membervariablen->'Datewntyp der Membervariable'.

    Ansonsten interessantes Programm.



  • Also ich werd die Tage mal versuchen, dass zu reproduzieren. Kommt halt drauf an, wann ich Zeit finde 😉

    Also prinzipiell würde ich versuchen die GUI einfach intuitiver und kompakter zu gestalten. Klar ist leichter gesagt als getan, aber für jemanden der dein Programm zum ersten mal benutzt ist dann gar nicht so klar was man genau machen muss.



  • Hallo

    Ich bin gerade dabei die Fehler auszumerzen. Das ganze Design will ich eigentlich nicht ändern, weil ich das schon ein paarmal gemacht habe. Es ist gar nicht so leicht das alles kompakt darzustellen. Ich habe auch extra rechts immer eine kurze Erklärung zu jedem Punkt.

    chrische



  • Nicht schlecht. Hier noch ein paar Ideen:

    • Integriere die *.cfg Datei in die Headerdatei. Ein Möglichkeit ist die Daten in komplet in Form von Komentaren unterzubringen oder du versuchst den Klassencode wieder zu parsen oder du mischst beides.
    • Includeguards, wir wollen doch nicht MS only sein.
    • Namespace
    • Eine Option um den Copyctor und den op= private zu machen (oder um von boost::noncopyable zu erben).
    • Eine Option um op!=, op>, op<= und op>= durch benutzen von op== und op< (oder nur mit op<) zu generieren.
    • Optional ein automatisch erstellter op== der die Member miteinander vergleicht.


  • Hallo

    Integriere die *.cfg Datei in die Headerdatei. Ein Möglichkeit ist die Daten in komplet in Form von Komentaren unterzubringen oder du versuchst den Klassencode wieder zu parsen oder du mischst beides.

    Ich verstehe nicht ganz, was du meinst und was wäre an dieser Lösung besser?

    Includeguards, wir wollen doch nicht MS only sein.

    Wird erledigt. Obwohl ich die wirklich hässlich finde.

    Namespace

    Ist geplant. Der Benutzer kann den namespace angeben, in dem die Klasse leigen soll.

    Eine Option um den Copyctor und den op= private zu machen (oder um von boost::noncopyable zu erben).

    Brauch' ich zwar fast nie, aber ich denke mal drüber nach.

    Eine Option um op!=, op>, op<= und op>= durch benutzen von op== und op< (oder nur mit op<) zu generieren.

    Wie meinst du das?

    Optional ein automatisch erstellter op== der die Member miteinander vergleicht.

    Das ist wirklich eine sehr gute Idee. Wird demnächst umgesetzt.

    Und zu guter Letzt:

    Nicht schlecht.

    Danke ich freue mich über Tester und Kritiker.

    chrische



  • chrische5 schrieb:

    Hallo

    Integriere die *.cfg Datei in die Headerdatei. Ein Möglichkeit ist die Daten in komplet in Form von Komentaren unterzubringen oder du versuchst den Klassencode wieder zu parsen oder du mischst beides.

    Ich verstehe nicht ganz, was du meinst und was wäre an dieser Lösung besser?

    Beispiel:

    #ifndef ..._HPP
    #define ..._HPP
    class foobar{
    public:
      char b;
      short c;
    private:
      int a;
    };
    #endif
    /*DO NOT EDIT THIS COMMENT!
    DATASTART
    classname = foobar
    member=a,b,c
    membertype=int,char,short
    memberaccess=private,public,public
    DATAEND*/
    

    Somit kann man nicht in den Fall geraten, dass man die *cfg Datei verliert.

    Eine Option um op!=, op>, op<= und op>= durch benutzen von op== und op< (oder nur mit op<) zu generieren.

    Wie meinst du das?

    inline bool operator!=(const A&a, const A&b){return !(a==b);}
    inline bool operator>(const A&a, const A&b){return b<a;}
    inline bool operator<=(const A&a, const A&b){return !(a>b);}
    inline bool operator>=(const A&a, const A&b){return !(a<b);}
    

    Somit braucht der User nur noch den op< und den op== zu schreiben oder gar noch:

    inline bool operator==(const A&a, const A&b){return !(a<b) && !(b<a);}
    

    womit der User nur noch ein op< schreiben muss.


Anmelden zum Antworten