Pyedit 1.5

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Freitag 2. Januar 2009, 18:26

Ich habs mal gestartet und mir dafür den Code nicht angesehen ;) Merkwürdig fand ich, dass zwar nach einer 'return'-Zeile der Code um eine Einrückungstiefe nach links gerückt wird, aber nicht bei 'return 1'. Allgemein find ich die Einrückung noch ein bisschen zickig, aber das kann ja noch werden.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Freitag 2. Januar 2009, 19:30

Leonidas hat geschrieben: Ja, ist doch egal wie der Code ist, ob der scheiße ist oder nicht, hauptsache es passiert irgendwas, oder?

Naja, es war nicht anders zu erwarten: du schreibst einen Editor in Python und postest den Code in ein Python-Forum. Die Leute hier haben ja schon einen Editor, brauchen also keinen weiteren. Zudem dein Editor wx nutzt, was ich gar nicht installiert habe. Da ist es ja klar, dass man sich halt den Code ansieht und schaut ob wenigstens der interessant ist.
Ja genau haupsache es geht!

Nein Quatsch, es ist mir schon recht das man meinen Code schlecht macht, der ist auch schlecht!
Wenn mir keiner was sagt wirds auch nicht besser, nur arbeite ich jetzt schon lange an den ding und habe es vorgestellt obwohl es noch nicht ganz fertig ist und alles was man hört ist da da da und da. Da ist man erstmal schon gefrustet.

Das ist jetzt ja mein erstes Programm so für die Öffentlichkeit, da muss ich wohl erst noch dran gewöhnen.

@fred.reichbier
Danke für die guten worte sowas braucht man auch, sonst hat man ja garkeine lust mehr.
Zum einrücken:
Ja das ist in der tat noch son problem, ich dachte mir ich lasse es mal so drin besser als keins.

@OverNord
Auch danke für deine Worte!

Eigentlich wahr es auch mein ziel ohne Toolbar auszukommen, weil ich das hauptaugenmerk auf die paar Symbole und des Code setzten wollte.

Aber es wird schon noch eine Toolbar kommen, weil mir noch ein paar sachen eingefallen sind und ich ja nicht alles in symbole packen kann.

Gruß
Andyh

Edit (Leonidas): Restliche Diskussion in "Freundlichkeit und Unfreundlichkeit" abgetrennt.
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Samstag 3. Januar 2009, 08:56

Abend,

ich hab's jetzt auch mal gestartet (nur das Programm, die install.py habe ich mich nicht getraut). Auf den ersten Blick sieht nicht so schlecht aus, wobei vieles noch fehlt. Was mir aufgefallen ist, dass Suchen und Ersetzen nicht richtig funktioniert. Das Funktion findet schon ersetzte Zeichenketten und überschreibt dann anderen Text.

Zum Code ist mir beim Überfliegen schon aufgefallen, dass einige Codezeilen länger als 237 Zeichen sind (also 3x länger als nach PEP8 gewünscht), was ich persönlich auf meinem kleinen 14'' Notebook für unzumutbar halte. Weiter ist der Code zum größten Teil ein bunter Mix aus deutsch, englisch und denglisch:

Code: Alles auswählen

   def laden(self, datei):
       data = open(datei).read()
In den ganzen print-Anweisungen sind auch recht viele Rechtschreib- und Tippfehler und die Ausgaben machen nicht einmal Sinn:

Code: Alles auswählen

ERROR Das Modul "pygments" wurde nicht gefunden Programm
    Das Programm kann trozdem ausgeführt werden,
    es kamm aber zu einschränkungen beim Drucken.

Das Modul "export_html" wurde gefunden und Importiert

ERROR Das Modul "pygments" wurde nicht gefunden Programm
    Das Programm kann trozdem ausgeführt werden,
    es kamm aber zu einschränkungen beim Drucken.

Das Modul "export_rtf" wurde gefunden und Importiert

Das Modul "drucken" wurde gefunden und Importiert

Es wurden alle Module gefunden
Mein Vorschlag: Verbessere erstmal deinen "Coding Style" und korrigiere vor allem die Tippfehler, dann wird sich die Kritik hier auch mehr auf den Code beziehen.

So weit erstmal von mir.
gkuhl
BlackJack

Samstag 3. Januar 2009, 09:16

@Andyh: Falls wir Dir mit unserer Unfreundlichkeit den Spass am veröffentlichen von Python-Programmen nicht ganz verderben sollten, wäre eine Versionsangabe im Namen des Archivs praktisch, damit man die Versionen besser auseinander halten kann. :-)

Deine Antwort zum DRY-Kommentar habe ich nicht verstanden!? Es geht bei DRY übrigens nicht nur um 100% gleiche Wiederholungen, sondern auch um Quelltext der sich nur durch einige Kleinigkeiten unterscheidet, also Kandidat für eine eigene Funktion wäre.

Mal sehen ob ich mich durch mehr Quelltext als durch die `pyedit.py` arbeiten kann. Da fängt's schon mal mit der Einrückung von drei Leerzeichen pro Ebene an. Damit hast Du quasi eine Zusammenarbeit mit anderen schon fast ausgeschlossen.

Die "Klasse" `Datei_Dialoge` scheint nur als Namensraum für zwei Funktionen missbraucht zu werden. Erbt aber trotzdem von `wx.FileDialog`!? "Spezielle" Rückgabewerte für Ausnahmesituationen sind keine gute Idee. Insbesondere dann nicht, wenn der Wert an sich *gültig* wäre! Es mag zwar sinnlos sein eine Datei mit dem Namen ' ' anzulegen, aber eben nicht unmöglich. Ausser halt mit Deinem Editor.

``pass`` ist ein Schlüsselwort, das man so gut wie nie einsetzen muss. Von den 16 Stück in `pyedit.py` können alle ersatzlos gestrichen werden.

Warum ist der Quelltext in `Menu_bar.make()` nicht in der `Menu_bar.__init__()` bzw. wird dort nicht aufgerufen. Und warum heisst die Klasse `Menu_bar`?

Wahrheitswerte sollte man mit ``True`` und ``False`` modellieren und nicht mit Zahlen. Dann wäre der ``else``-Zweig in `Menu_bar.onfind()` auch überflüssig.

"Magische Zahlen" sind nicht gut. Die Zahlen für Ja und Nein in `Menu_bar.save_frage()` haben auch Namen, dann könnte man sich den Kommentar auch sparen. In der Funktion (Methode ist es nämlich keine) fällt auch extrem auf, wie viel komplizierter der ganze Loggingkram das Programm macht. Das könnte auch so aussehen:

Code: Alles auswählen

def save_question():
    answer = wx.MessageDialog(parent=None,
                              style=wx.YES_NO,
                              message='Datei wurde noch nicht gespeichert!\n'
                                      'Erst Speichern?'
                              caption='Speichern').ShowModal()
    return answer == wx.ID_YES
`Menu_bar.save_test()` ist ziemlich verwirrend und auch zu kompliziert. In Bedingungen sollte man nicht nicht noch einmal explizit auf ``== True`` oder ``== False`` testen. Nachdem ich in `edit.py` nachgesehen habe, was `is_saved()` macht, ist mir auch meine Verwirrung klar. Das gibt einen *wahren* Wert zurück, wenn *nicht* gespeichert wurde, und einen *falschen*, wenn gespeichert wurde. Es macht also genau das Gegenteil, von dem was man anhand des Namens vermuten würde. Ausserdem werden da wieder Zahlen anstelle von Wahrheitswerten verwendet. Die Methode könnte (mit einem intuitiveren Rückgabewert von `is_saved`) so aussehen:

Code: Alles auswählen

    def save_test(self):
        if not self.master.editor.is_saved and self.save_frage():
            return self.save_or_saveas()
        return True
`Menu_bar.save_or_saveas()` kann man analog verkürzen:

Code: Alles auswählen

   def save_or_saveas(self):
        if self.datei_pfad:
            return self.onsave(None)
        else:
            return self.onsaveas(None)
Ausnahmebehandlung ohne konkrete Ausnahmen ist Böse™.

Tastenkürzel für die einzelnen Funktionen wären nett.

Bei Suchen/Ersetzen habe ich erst einmal gerätselt, wie man das wieder wegbekommt. Da wäre es hilfreich, wenn der Knopf in der Werkzeugleiste gedrückt dargestellt wird.

Warum gehen die Fenster immer an einer von Dir fest vorgegebenen Position auf? Neue Anwendungen sollen bei mir da aufgehen, wo Platz ist, und das macht mein Fenstermanager auch ganz gut, wenn die Anwendung nicht glaubt es besser zu wissen.

Übrigens ein absolutest Killerkriterium Deinen Editor nicht zu verwenden: Umlaute eingeben, und auf Speichern drücken --> Keine offensichtliche Fehlerrückmeldung, dass nur eine leere Datei angelegt wurde, weil's einen `UnicodeEncode`-Error gab. Ganz böse.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Samstag 3. Januar 2009, 09:57

Hallo

@BlackJack

Danke für deine Antwort!

Ich muss mich mal genau in deinen Beitrag einlesen. Was ich schon gesehen habe ist alles nachvollziehbar, Danke für die erläuterung!

Denn ganzen save-Teil muss ich nochmal neu machen der ist echt verwirrend.

@gkuhl

Naja die jetztige install.py ist schon einiges besser als der rest. Ich werde jetzt aber zwei versionen machen eine für Windows und eine für Linux.

Zur Rechtschreibung:
Na und ich habe ne 4 in Deutsch (Hauptschule) und ich stehe dazu. Ich weis eh nicht warum ich nocht tippe wenn ich doch Spracherkennung habe :P

Das mit den vermisschten sprachen ist bei mir so ein problem:
-Einmal weil ich gern mal was kopiere von anderen code
-weil ich recht off Deutsch und Englisch zusammen Chatte.

Mal schauhen

Auch danke für deine Gute Antwort!

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Samstag 3. Januar 2009, 10:46

Andyh hat geschrieben:Zur Rechtschreibung:
Na und ich habe ne 4 in Deutsch (Hauptschule) und ich stehe dazu.
Dazu stehen ist das eine, Programme schreiben, die auch für andere gedacht sind, das andere. Und da macht es halt keinen guten Eindruck, wenn es nur so von Verstößen gegen die sprachliche Richtigkeit wimmelt, weil man es häufig als Zeichen mangelnder Sorgfalt interpretiert und ich persönlich davon oft schon abgeschreckt werde, weil ich die gleiche (mangelnde) Sorgfalt auch an anderer Stelle vermute.

Wenn deine eigenen Rechtschreibfähigkeiten dafür nicht reichen - okay, kann man (vielleicht) nichts (mehr) machen, aber dann könntest du alles, was als Output gedacht ist, mal durch eine Rechtschreibprüfung jagen oder jemand anderen bitten, ob er sich die Mühe machen möchte, es zu korrigieren.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Samstag 3. Januar 2009, 11:19

Hallo

Das war ein witz man :D

Absofort mache ich immer einen Smilie hin :wink:

Ist mir schon bewust und ich sollte mich dafür schämen :oops:

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 3. Januar 2009, 11:32

Andyh hat geschrieben:Ist mir schon bewust und ich sollte mich dafür schämen :oops:
Das hilft genau so wenig wie stolz darauf zu sein. Wie wäre es, stattdessen etwas dagegen zu tun? Numerix beschreibt, was auch ich denke. Wir können dich nur danach beurteilen, wie du dich hier gibst und was für einen Programmcode du uns hier zeigst. Daran solltest du immer denken.

Mein Tipp wäre noch, zu schreiben, was dein Programm überhaupt machen soll. Mir war das nicht klar, als ich mit schreckerweiterten Augen auf `install.py` starrte und ein sofortiges Löschen erwog. Habe es dann doch nur kurz (natürlich ohne Installation) ausprobiert, aber außer einem Notepad-artigen Editor ohne Menüleiste mit häßlichen Icons nichts erwähnenswertes entdeckt. Auf was hätte man achten sollen? Was macht dieses Programm besonders? Worauf bist du stolz und möchtest, dass es sich die Forenteilnehmer anschauen? Ich konnte nur bemerken, dass du offensichtlich eine Reihe von Debug-Ausgaben in dem Programm gelassen hast, die prüfen, ob Python richtig funktioniert und import-Befehle ausführen kann. Ich glaube, darauf kannst du dich verlassen und musst das nicht prüfen. Man braucht übrigens kein Pygments installiert zu haben - ging auch so mit der unter OS X vorinstallierten Version von wx.

Stefan
Zuletzt geändert von sma am Samstag 3. Januar 2009, 12:01, insgesamt 1-mal geändert.
Benutzeravatar
wuf
User
Beiträge: 1481
Registriert: Sonntag 8. Juni 2003, 09:50

Samstag 3. Januar 2009, 11:52

Hallo Andyh

Zum Glück ist unser Forum keine Schulbude sonst würden nocht schlechte Noten zwischen 1 bis 6 verteilt. Du musst dich absolut nicht schämen da nach der nächsten Duden-Revision die momentane geschriebenen Worte als korrekt geschrieben gelten werden.

Gruss wuf :wink:
Take it easy Mates!
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 8. Februar 2009, 11:09

Hallo

Muss nur mal den Thread rauskramen weil ich jetzt schon bei Version 1.5 bin und ich denke das die schon sehenswert ist.

Der rest steht im ersten Posting!

Gruß vom FACHARBEITER Andreas
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Antworten