Seite 1 von 1

Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 16:56
von xpilz
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

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 17:10
von sma
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

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 17:19
von xpilz
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

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 17:24
von sma
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

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 17:30
von DaMutz
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.

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 17:40
von xpilz
@DaMutz: Dein Vorschlag ist gut. Danke, dafür.

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

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 18:11
von 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. ;)

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 18:26
von Leonidas
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 ;)

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 18:59
von xpilz
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. :?:

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 19:34
von nemomuk
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?

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 20:40
von DasIch
Mein Editor macht ein Highlight auf Zeile die über 80 Zeichen hinausgehen, so schwer ist es da nicht sich an solche Regeln zu halten.

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 20:55
von 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.

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 21:44
von hendrikS
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.

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 22:15
von hendrikS
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

Re: Beispiel Skript - PEP8 gemäß?

Verfasst: Montag 19. Juli 2010, 23:06
von xpilz
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