Beispiel Skript - PEP8 gemäß?

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

Hallo Community.
Ich habe ein kleines Skript geschrieben und wollte fragen ob es gut lesbar ist bzw. die PEP8 Stilrichtlinien befolgt.

http://paste.pocoo.org/show/239406/

Nett wären Tips und Sachen die ich verbessern könnte.

Gruß, xpilz
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sieht prinzipiell gut aus.

Ich würde die () bei der Klassendefinition weglassen und auch die \ bei den prints. Ich halte die Anforderung, sich auf 80 Zeichen pro Zeile zu beschränken, nicht mehr für zeitgemäß. 120 geht mindestens und in dem Browserfenster, was nur über meinen halben Bildschirm geht, würde locker alles in eine Zeile passen.

In Zeile 20 gehören keine Klammern um den return-Befehl (hast du in 13 und 15 ja auch nicht).

Ich würde statt not == lieber != benutzen, aber das ist persönlicher Geschmack und hat nichts mit PEP8 zu tun.

Hoffentlich nicht strittig ist, dass die Klasse nicht wirklich sinnvoll ist.

Stefan
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

Danke. Das die Klammern bei einer Klassendefinition weggelassen werden können wusste ich noch nicht.
Naja, das mit der Zeilenlänge ist für mich besser, weil ich atm einiges in der CLI schreibe.
sma hat geschrieben:In Zeile 20 gehören keine Klammern um den return-Befehl (hast du in 13 und 15 ja auch nicht).
Stimmt, ich hatte die Klammern um den return Befehl in Zeile 13 und 15 kurz vor dem Post weggemacht und es dann bei 20 vergessen.
sma hat geschrieben:Hoffentlich nicht strittig ist, dass die Klasse nicht wirklich sinnvoll ist.
Ja, ist ja auch nur ein Beispiel und mir ist nichts gescheites eingefallen. :K
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

xpilz hat geschrieben:Naja, das mit der Zeilenlänge ist für mich besser, weil ich atm einiges in der CLI schreibe.
Mein Terminal hat 130 Zeichen pro Zeile und davon gehen zwei nebeneinander auf den Bildschirm. Und dabei nutze ich schon eine größere Schrift, da die Augen nicht mehr so wollen wie früher. Auch auf dem Notebook hätte mein Terminal deutlich mehr als 80 Zeichen pro Zeile.

Stefan
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

sma hat geschrieben:Ich würde statt not == lieber != benutzen, aber das ist persönlicher Geschmack und hat nichts mit PEP8 zu tun.
noch besser fände ich es wenn du folgendes schreibst:

Code: Alles auswählen

def result(self):
        if self.radius > 0:
            return pi * self.radius ** 2
        elif self.diameter > 0:
            return pi / 4 * self.diameter ** 2
        else:
            return 0
und natürlich noch den Fall abdeckst wenn beide Variablen 0 sind. Ob man dafür das else braucht ist auch geschmackssache.
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

@DaMutz: Dein Vorschlag ist gut. Danke, dafür.

@sma: Entschuldigung. Mit CLI meine ich die Textkonsole.
lunar

@sma: Ich weiß ja nicht, was Du für ein Notebook hast oder welche Schriftgrößen Du nutzt ;) Auf meinem 15.4'' Bildschirm ist jedenfalls bei etwas mehr als 80 Zeichen Schluss, wenn ich ein geteiltes Editor-Fenster offen habe. An ein Netbook mit 12'' mag ich gar nicht erst denken ...

Insofern finde ich nicht, dass 80 Zeichen nicht mehr zeitgemäß sind. Es gibt immer noch (oder schon wieder?) genügend Geräte, die bei 80 Zeichen bereits an ihre Grenzen stoßen. Wenn man nur alleine Quelltext schreibt, oder nur auf den großen Workstations in der Firma mit zwei 24''-Bildschirmen, dann ist das natürlich egal. Aber wenn man im Team mit mehreren zusammenarbeitet, finde ich es höflich, sich an eine Obergrenze von 80 Zeichen zu halten, da das in etwa das ist, was jedes Gerät noch relativ problemlos anzeigen kann.

Außerdem ist Python ja nicht Java: Zeilen werden selten so lang, und falls doch, lassen sie sich meist problemlos umbrechen. ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:@sma: Ich weiß ja nicht, was Du für ein Notebook hast oder welche Schriftgrößen Du nutzt ;) Auf meinem 15.4'' Bildschirm ist jedenfalls bei etwas mehr als 80 Zeichen Schluss, wenn ich ein geteiltes Editor-Fenster offen habe. An ein Netbook mit 12'' mag ich gar nicht erst denken ...
Geht mir ganz genauso. Und ohne geteiltes Edtior-Fenster fang ich das programmieren gar nicht mehr an ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

Danke für die Hilfe. Jetzt weiß ich wenigstens das ich, wenn auch noch mit ein wenig Mühe, meine Skripte leserlich schreiben kann. Aber ich hoffe das geht mit der Zeit in "Fleisch und Blut" über. :?:
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Leonidas hat geschrieben:
lunar hat geschrieben:@sma: Ich weiß ja nicht, was Du für ein Notebook hast oder welche Schriftgrößen Du nutzt ;) Auf meinem 15.4'' Bildschirm ist jedenfalls bei etwas mehr als 80 Zeichen Schluss, wenn ich ein geteiltes Editor-Fenster offen habe. An ein Netbook mit 12'' mag ich gar nicht erst denken ...
Geht mir ganz genauso. Und ohne geteiltes Edtior-Fenster fang ich das programmieren gar nicht mehr an ;)
bin da irgendwie nicht ganz so Multitasking fähig...
Aber ich hoffe das geht mit der Zeit in "Fleisch und Blut" über. :?:
Ich würde mich beim Programmieren selbst nicht zu sehr verkünsteln und jedes Detail (vor allem die 80 Zeichen Grenze) sofort PEP8 konform schreiben - das ist imho ineffektiv und man braucht für die gleiche Arbeit mehr Zeit. Danach nochmal kurz drüber gehen ist da meiner Meinung nach besser. Wie geht es euch da?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mein Editor macht ein Highlight auf Zeile die über 80 Zeichen hinausgehen, so schwer ist es da nicht sich an solche Regeln zu halten.
lunar

@DasIch: Ich denke, das bezog sich jetzt eher auf PEP 8 im Allgemeinen, und nicht speziell auf die Zeilenlänge. Es gibt ja andere Konventionen, bei deren Verletzung der Editor nicht sofort einspringt (z.B. die Anzahl der Leerzeichen zwischen Blöcken oder um Operatoren oder die Formatierung von Docstrings).

Gerade was die Formatierung des Quelltexts angeht, sollte PEP 8 meines Erachtens auch nicht überbewertet werden. Ob man nun eine, zwei oder vielleicht auch mal drei Leerzeilen zwischen Funktionen auf Modulebene nutzt, oder die erste Zeile des Docstrings auf die selbe Zeile wie die drei Anführungszeichen schreibt oder in die nächste, ist irgendwo auch herzlich egal.

Wichtig sind vor allem die Konventionen zur Namensgebung, die man imho beachten sollte, aber eben auch nicht sklavisch, sondern so, dass der Quelltext gut lesbar ist.

Am Anfang hat man sowieso alle Hände voll zu tun, vernünftig funktionierenden Quelltext zu produzieren. PEP 8 ist daher eher Kür denn Pflicht.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Mir ist wie sma auch aufgefallen, daß Dein OO Design komisch ist. Im Normalfall würde man eine Klasse Circle definieren. Da Umfang und Fläche vom Radius abhängen, kann man das gleich in __init__ mit berechnen.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Ich hatte nochmal kurz nachgedacht wie ich es machen würde. Wahrscheinlich so:

Code: Alles auswählen

from math import pi
class Circle(object):
    def __init__(self,r):
        self.r = r

    @property
    def a(self):
        return pi*self.r**2

    @property
    def d(self):
        return pi*self.r*2


x = Circle(10)

print x.r
print x.a
print x.d
Benutzeravatar
xpilz
User
Beiträge: 76
Registriert: Sonntag 11. April 2010, 12:46
Wohnort: Deutschland
Kontaktdaten:

Ja das sieht besser aus, lesbarer ist Deine Variante auch noch. Ich glaube ich habe sowieso einen kleinen Denkfehler in meine Klasse gebracht. Eigentlich wollte ich den Flächeninhalt und den Umfang berechnen. Ist aber jetzt auch egal..
Und danke für den Vorschlag.

xpilz
Antworten