[python-users] Etwas Hilfe zur Still, Code-Übersichtlichkeit und Verbesserungen

Daniel Hepper daniel.hepper at gmail.com
Mo Mär 14 14:20:01 CET 2011


Hallo Vladimir,

auch von mir ein Herzliches Willkommen!

Chris hat dir ja schon einige gute Tips zur Form gegeben. Dein Code
ist klar strukturiert, besonders deine ausführlichen Kommentare finde
ich gut. Du könntest sie noch zusätzlich mit Code-Beispielen
erweitern, die dann gleichzeitig als DocTests dienen.

Mir ist aufgefallen dass du in den einzelnen Methoden die Response von
Imgur eins zu eins zurück gibst. Ich fände es praktischer wenn du die
Response weiter verarbeiten und in Klassen verpacken würdest. So
könnte beispielsweise get_albums eine Liste von Album-Objekten
zurückgeben, wobei jedes Album-Objekt wiederum eine Liste von
Image-Objekten enthält. Die Klasse Album könnte das iterator-Protokoll
implementieren, damit man so etwas machen könnte:

album = c.get_albums()[0]
for image in album:
     print image.title

Ich würde ausserdem nicht bei jeder Response explizit success = true
zurück geben. Statt dessen könntest du im Fehlerfall (status != 200)
eine aussagekräftige Exception werfen, z.B. bei status 404 eine
ActionNotSupportedException. Momentan geht die Information warum etwas
nicht funktioniert hat, verloren.

Das ist einiges an Arbeit, aber ich damit wäre die Bibliothek für
einen Benutzer noch einfacher zu verwenden und wie ich finde noch
"pythonischer". Was meinen die Anderen dazu?

Viele Grüße,
Daniel

2011/3/14 Christopher Arndt <chris.arndt at web.de>:
> Hallo Vladimir,
>
> willkommen auf der Liste!
>
> Vladimir Kolev schrieb:
>> Bis jetzt habe ich nur getestet, dass
>> alles nach PEP8 geschrieben ist.
>
> Das ist schon mal sehr gut! :) Du solltest zusätzlich noch die
> Docstrings nach PEP-257 formatieren (insbesondere: Leerzeile nach der
> ersten Zeile).
>
>> Aber ist das ganze übersichtlich? Ist
>> der Code verständlich? Wo kann ich etwas verbessern? Was macht keinen
>> Sinn in den ImgurLib Class?
>
> Also erstes solltest du deine Bibliothek für das Packaging mit
> distutils/setuptools sowie die Distribution über den Python Package
> Index (PyPI) fit machen. Ich habe dazu vor einiger Zeit ein paar Rezepte
> vorgestellt:
>
> http://chrisarndt.de/talks/cooking-eggs/
>
> Damit könntest du z.B. die Abhängigkeit deines Moduls zu oauth2
> deklarieren und Benutzer deines Moduls könnten es einfach per
> easy_install inkl. der Abhängigkeiten installieren.
>
> Zweitens solltes du Tests für den Modul erstellen. Dazu empfehle ich
> nose und unittest2.
>
> http://pypi.python.org/pypi/nose
> http://pypi.python.org/pypi/unittest2
>
> Da dein Modul mit einer externen Ressource arbeitet, brauchst du für die
> Tests wahrscheinlich Mock-Objekte, die die API von imgur simulieren.
> Hier empfehle ich die Mock-Library von Michael Foord:
>
> http://pypi.python.org/pypi/mock
>
>> Sollte meine Nachricht kein Platz in diese Mailing-Liste haben, bitte
>> ich um Ihre Entschuldigung.
>
> Nein, du bist hier richtig. Über die diversen deutschen
> Python-Mailinglisten und Newsgroups und Foren würdest du zwar einen
> größeren Kreis ansprechen aber hier ist es halt "persönlicher".
>
>
> Gruß, Chris
>
> ________________________________________
> Diese Mail erhalten Sie ueber die Mailingliste python-users der Universitaet zu Koeln
> Nachrichten an: python-users at uni-koeln.de
> Abonnement und Benutzereinstellungen: https://lists.uni-koeln.de/mailman/listinfo/python-users
> Listenarchiv: https://lists.uni-koeln.de/pipermail/python-users/
>
> pyCologne Homepage: http://pycologne.de/
>



Mehr Informationen über die Mailingliste python-users